[project @ 1997-03-13 08:03:07 by sof]
authorsof <unknown>
Thu, 13 Mar 1997 08:03:07 +0000 (08:03 +0000)
committersof <unknown>
Thu, 13 Mar 1997 08:03:07 +0000 (08:03 +0000)
PowerPC register maps mods (courtesy of Andre\')

ghc/includes/MachRegs.lh

index a45aa6f..db5c23a 100644 (file)
@@ -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 */