From 45a8da1bed7a9b2e17cdd815600b308188bc1b89 Mon Sep 17 00:00:00 2001 From: sof 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 a45aa6f..db5c23a 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 */ -- 1.7.10.4