X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FCOptRegs.lh;h=eaf46f94aec2c342bc1937d01703cb4ef138866b;hb=ab5a9b60d162937ee388b420f410e0a35ab9cd6c;hp=07d36c2f597c46f42b10140091900ee6f74f6d3a;hpb=e7d21ee4f8ac907665a7e170c71d59e13a01da09;p=ghc-hetmet.git diff --git a/ghc/includes/COptRegs.lh b/ghc/includes/COptRegs.lh index 07d36c2..eaf46f9 100644 --- a/ghc/includes/COptRegs.lh +++ b/ghc/includes/COptRegs.lh @@ -62,7 +62,7 @@ typedef struct rt { P_ rHpLim; I_ rTag; StgRetAddr rRet; - I_ rActivity; + I_ rActivity; /* NB: UNUSED */ P_ rCstkptr; /* used for iX86 registerizing only! offset=100 */ P_ rWrapReturn; /* ditto; offset=104 */ P_ rSaveECX; /* ditto; offset=108 */ @@ -138,9 +138,10 @@ extern STGRegisterTable MainRegTable; #define MAIN_Dbl1 (MainRegTable.rDbl[0]) #define MAIN_Dbl2 (MainRegTable.rDbl[1]) +#define MAIN_Hp (MainRegTable.rHp) +#define MAIN_HpLim (MainRegTable.rHpLim) #define MAIN_Tag (MainRegTable.rTag) #define MAIN_Ret (MainRegTable.rRet) -#define MAIN_Activity (MainRegTable.rActivity) #define MAIN_StkO (MainStkO) #define MAIN_Liveness (MainRegTable.rLiveness) @@ -175,7 +176,6 @@ extern STGRegisterTable MainRegTable; #define SAVE_Tag MAIN_Tag #define SAVE_Ret MAIN_Ret -#define SAVE_Activity MAIN_Activity #else @@ -213,7 +213,6 @@ extern STGRegisterTable *CurrentRegTable; #define SAVE_Tag (CurrentRegTable->rTag) #define SAVE_Ret (CurrentRegTable->rRet) -#define SAVE_Activity (CurrentRegTable->rActivity) #define SAVE_StkO (CurrentRegTable->rStkO) #define SAVE_Liveness (CurrentRegTable->rLiveness) @@ -267,8 +266,8 @@ is used by most of the current garbage collectors. Mark (GC) register mapping: \begin{verbatim} - sparc m68k alpha mipseX hppa iX86 rs6000 - ----- ---- ----- ------ ---- ---- ------ + sparc m68k alpha mipseX hppa iX86 powerpc + ----- ---- ----- ------ ---- ---- ------- MarkBase ebx Mark i0 a2 $9 $16 r4 ebp @@ -347,7 +346,7 @@ GLOBAL_REG_DECL(P_,HeapLim,REG_HeapLim) #if defined(__STG_GCC_REGS__) /* Keep -Wmissing-prototypes from complaining */ -void SAVE_REGS PROTO((RegisterTable *dump)); +void SAVE_REGS PROTO((RegisterTable *dump)); void RESTORE_REGS PROTO((RegisterTable *dump)); extern STG_INLINE @@ -428,8 +427,8 @@ reside in global registers, because the scan code is not threaded. Scan (GC) register mapping: \begin{verbatim} - sparc m68k alpha mipseX hppa iX86 rs6000 - ----- ---- ----- ------ ---- ---- ------ + sparc m68k alpha mipseX hppa iX86 powerpc + ----- ---- ----- ------ ---- ---- ------- ScanBase g4 Scan a2 $9 $16 r4 ebx @@ -493,7 +492,7 @@ GLOBAL_REG_DECL(P_,LinkLim,REG_LinkLim) #if defined(__STG_GCC_REGS__) /* Keep -Wmissing-prototypes from complaining */ -void SAVE_REGS PROTO((RegisterTable *dump)); +void SAVE_REGS PROTO((RegisterTable *dump)); void RESTORE_REGS PROTO((RegisterTable *dump)); extern STG_INLINE @@ -559,8 +558,8 @@ etc. or there'll be trouble. ADR Scavenge (GC) register mapping: \begin{verbatim} - sparc m68k alpha mipseX hppa iX86 rs6000 - ----- ---- ----- ------ ---- ---- ------ + sparc m68k alpha mipseX hppa iX86 powerpc + ----- ---- ----- ------ ---- ---- ------- ScavBase g4 Scav a2 $9 $16 r4 ebx @@ -656,7 +655,7 @@ GLOBAL_REG_DECL(P_,OldHp,REG_OldHp) #if defined(__STG_GCC_REGS__) /* Keep -Wmissing-prototypes from complaining */ -void SAVE_REGS PROTO((RegisterTable *dump)); +void SAVE_REGS PROTO((RegisterTable *dump)); void RESTORE_REGS PROTO((RegisterTable *dump)); extern STG_INLINE @@ -735,8 +734,8 @@ IF YOU CHANGE THIS TABLE, YOU MAY NEED TO CHANGE CallWrapper.s documentation in the porter's part of the installation guide. \begin{verbatim} - sparc m68k alpha mipseX hppa iX86 rs6000 - ----- ---- ----- ------ ---- ---- ------ + sparc m68k alpha mipseX hppa iX86 powerpc + ----- ---- ----- ------ ---- ---- ------- BaseReg# a5 ebx StkOReg (CONCURRENT) @@ -772,8 +771,6 @@ RetReg l0 $15 $22 %r10 Liveness (CONCURRENT) -Activity g5 (DO_SPAT_PROFILING) - StdUpdRetVec# StkStub# i7 $23 \end{verbatim} @@ -840,7 +837,6 @@ context is saved, so the space does not go to waste. #define RTBL_HpLim (BaseReg->rHpLim) #define RTBL_Tag (BaseReg->rTag) #define RTBL_Ret (BaseReg->rRet) -#define RTBL_Activity (BaseReg->rActivity) #define RTBL_StkO (BaseReg->rStkO) #define RTBL_Liveness (BaseReg->rLiveness) @@ -860,6 +856,12 @@ GLOBAL_REG_DECL(P_,StkOReg,REG_StkO) #define StkOReg RTBL_StkO #endif +#ifndef __STG_REGS_AVAIL__ /* driver ensures it is 2 or more */ +# define __STG_REGS_AVAIL__ 8 /* R1 to R8 */ +/* this would only be non-8 if doing weird experiments (WDP 95/11) */ +/* or it might be set lower for a particular arch... */ +#endif + /* R1 is used for Node */ #ifdef REG_R1 GLOBAL_REG_DECL(StgUnion,R1,REG_R1) @@ -877,37 +879,37 @@ GLOBAL_REG_DECL(StgUnion,R2,REG_R2) #ifdef REG_R3 GLOBAL_REG_DECL(StgUnion,R3,REG_R3) #else -#define R3 RTBL_R3 +# define R3 RTBL_R3 #endif #ifdef REG_R4 GLOBAL_REG_DECL(StgUnion,R4,REG_R4) #else -#define R4 RTBL_R4 +# define R4 RTBL_R4 #endif #ifdef REG_R5 GLOBAL_REG_DECL(StgUnion,R5,REG_R5) #else -#define R5 RTBL_R5 +# define R5 RTBL_R5 #endif #ifdef REG_R6 GLOBAL_REG_DECL(StgUnion,R6,REG_R6) #else -#define R6 RTBL_R6 +# define R6 RTBL_R6 #endif #ifdef REG_R7 GLOBAL_REG_DECL(StgUnion,R7,REG_R7) #else -#define R7 RTBL_R7 +# define R7 RTBL_R7 #endif #ifdef REG_R8 GLOBAL_REG_DECL(StgUnion,R8,REG_R8) #else -#define R8 RTBL_R8 +# define R8 RTBL_R8 #endif #ifdef REG_Flt1 @@ -1003,12 +1005,6 @@ GLOBAL_REG_DECL(I_,LivenessReg,REG_Liveness) #define LivenessReg RTBL_Liveness #endif -#ifdef REG_Activity -GLOBAL_REG_DECL(I_,ActivityReg,REG_Activity) -#else -#define ActivityReg RTBL_Activity -#endif - #ifdef REG_StdUpdRetVec GLOBAL_REG_DECL(D_,StdUpdRetVecReg,REG_StdUpdRetVec) #else @@ -1213,18 +1209,10 @@ GLOBAL_REG_DECL(P_,StkStubReg,REG_StkStub) #define CALLER_RESTORE_Liveness /* nothing */ #endif -#ifdef CALLER_SAVES_Activity -#define CALLER_SAVE_Activity SAVE_Activity = ActivityReg; -#define CALLER_RESTORE_Activity ActivityReg = SAVE_Activity; -#else -#define CALLER_SAVE_Activity /* nothing */ -#define CALLER_RESTORE_Activity /* nothing */ -#endif - #ifdef CALLER_SAVES_Base #ifndef CONCURRENT #define CALLER_SAVE_Base /* nothing, ever (it holds a fixed value) */ -#define CALLER_RESTORE_Base BaseReg = MainRegTable; +#define CALLER_RESTORE_Base BaseReg = &MainRegTable; #else #define CALLER_SAVE_Base /* nothing */ #define CALLER_RESTORE_Base BaseReg = CurrentRegTable;