%* *
%************************************************************************
-\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!
#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
#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 */