From 45a8da1bed7a9b2e17cdd815600b308188bc1b89 Mon Sep 17 00:00:00 2001
From: sof <unknown>
Date: Thu, 13 Mar 1997 08:03:07 +0000
Subject: [PATCH] [project @ 1997-03-13 08:03:07 by sof] PowerPC register maps
 mods (courtesy of Andre\')

---
 ghc/includes/MachRegs.lh | 97 ++++++++++++++++++++++------------------
 1 file changed, 54 insertions(+), 43 deletions(-)

diff --git a/ghc/includes/MachRegs.lh b/ghc/includes/MachRegs.lh
index a45aa6fe6939..db5c23a4b771 100644
--- a/ghc/includes/MachRegs.lh
+++ b/ghc/includes/MachRegs.lh
@@ -701,10 +701,21 @@ We can steal some, but we might have to save/restore around ccalls.
 %*									*
 %************************************************************************
 
-\tr{r14}--\tr{r31} are wonderful callee-save registers.
-\tr{r0}--\tr{r13} are caller-save registers.
+0	system glue?	(caller-save, volatile)
+1	SP		(callee-save, non-volatile)
+2	RTOC		(callee-save, non-volatile)
+3-10	args/return	(caller-save, volatile)
+11,12	system glue?	(caller-save, volatile)
+13-31			(callee-save, non-volatile)
 
-\tr{%fr14}--\tr{%fr31} are callee-save floating-point registers.
+f0			(caller-save, volatile)
+f1-f13	args/return	(caller-save, volatile)
+f14-f31			(callee-save, non-volatile)
+
+\tr{13}--\tr{31} are wonderful callee-save registers.
+\tr{0}--\tr{12} are caller-save registers.
+
+\tr{%f14}--\tr{%f31} are callee-save floating-point registers.
 
 I think we can do the Whole Business with callee-save registers only!
 
@@ -714,33 +725,33 @@ I think we can do the Whole Business with callee-save registers only!
 #define REG(x) __asm__(#x)
 
 #if defined(MARK_REG_MAP)
-#define REG_Mark  	r14
-#define REG_MStack  	r15
-#define REG_MRoot	r16
-#define REG_BitArray    r17
-#define REG_HeapBase	r18
-#define REG_HeapLim 	r19
+#define REG_Mark  	22
+#define REG_MStack  	23
+#define REG_MRoot	24
+#define REG_BitArray    25
+#define REG_HeapBase	26
+#define REG_HeapLim 	27
 #else
 #if defined(SCAN_REG_MAP)
-#define REG_Scan  	r14
-#define REG_New  	r15
-#define REG_LinkLim	r16
+#define REG_Scan  	22
+#define REG_New  	23
+#define REG_LinkLim	24
 #else
 #if defined(SCAV_REG_MAP)
-#define REG_Scav  	r14
-#define REG_ToHp  	r15
+#define REG_Scav  	22
+#define REG_ToHp  	23
 #if defined(GCap) || defined(GCgn)
-#define REG_OldGen	r16
+#define REG_OldGen	24
 #endif	/* GCap || GCgn */
 #else	/* default: MAIN_REG_MAP */
 
 /* callee saves */
-#define CALLEE_SAVES_FltReg1
-#define CALLEE_SAVES_FltReg2
-#define CALLEE_SAVES_FltReg3
-#define CALLEE_SAVES_FltReg4
-#define CALLEE_SAVES_DblReg1
-#define CALLEE_SAVES_DblReg2
+/* #define CALLEE_SAVES_FltReg1 */
+/* #define CALLEE_SAVES_FltReg2 */
+/* #define CALLEE_SAVES_FltReg3 */
+/* #define CALLEE_SAVES_FltReg4 */
+/* #define CALLEE_SAVES_DblReg1 */
+/* #define CALLEE_SAVES_DblReg2 */
 #define CALLEE_SAVES_SpA
 #define CALLEE_SAVES_SuA
 #define CALLEE_SAVES_SpB
@@ -759,34 +770,34 @@ I think we can do the Whole Business with callee-save registers only!
 #define CALLEE_SAVES_R7
 #define CALLEE_SAVES_R8
 
-#define REG_R1		r14
-#define REG_R2    	r15
-#define REG_R3    	r16
-#define REG_R4    	r17
-#define REG_R5    	r18
-#define REG_R6    	r19
-#define REG_R7    	r20
-#define REG_R8    	r21
+#define REG_R1		14
+#define REG_R2    	15
+#define REG_R3    	16
+#define REG_R4    	17
+#define REG_R5    	18
+#define REG_R6    	19
+#define REG_R7    	20
+#define REG_R8    	21
 
-#define REG_Flt1	fr14
-#define REG_Flt2	fr15
-#define REG_Flt3	fr16
-#define REG_Flt4	fr17
+/* #define REG_Flt1	14 */
+/* #define REG_Flt2	15 */
+/* #define REG_Flt3	16 */
+/* #define REG_Flt4	17 */
 
-#define REG_Dbl1	fr18
-#define REG_Dbl2	fr19
+/* #define REG_Dbl1	18 */
+/* #define REG_Dbl2	19 */
 
-#define REG_SpA    	r22
-#define REG_SuA    	r23
-#define REG_SpB    	r24
-#define REG_SuB    	r25
+#define REG_SpA    	22
+#define REG_SuA    	23
+#define REG_SpB    	24
+#define REG_SuB    	25
 
-#define REG_Hp	    	r26
-#define REG_HpLim	r27
+#define REG_Hp	    	26
+#define REG_HpLim	27
 
-#define REG_Ret	    	r28
+#define REG_Ret	    	28
 
-#define REG_StkStub 	r29
+#define REG_StkStub 	29
 
 #endif	/* SCAV_REG_MAP */
 #endif	/* SCAN_REG_MAP */
-- 
GitLab