[project @ 1998-12-02 13:17:09 by simonm]
[ghc-hetmet.git] / ghc / includes / StgRegs.lh
diff --git a/ghc/includes/StgRegs.lh b/ghc/includes/StgRegs.lh
deleted file mode 100644 (file)
index 10f447e..0000000
+++ /dev/null
@@ -1,387 +0,0 @@
-\section[STGRegs]{Macros for saving/restoring STG registers}
-
-\begin{code}
-#ifndef STGREGS_H
-#define STGREGS_H
-\end{code}
-
-
-%************************************************************************
-%*                                                                     *
-\subsection[saving-restoring-STG-regs]{Saving/restoring STG registers}
-%*                                                                     *
-%************************************************************************
-
-These routines will fail on the SPARC if they are allowed to drop out-of-line
-(the wrong register window will be active).
-
-\begin{code}
-
-#if defined(__STG_GCC_REGS__) && defined(MAIN_REG_MAP)
-
-EXTDATA(STK_STUB_closure);
-EXTFUN(STK_STUB_entry);
-EXTDATA_RO(vtbl_StdUpdFrame);
-
-/* Keep -Wmissing-prototypes from complaining */
-void SaveAllStgRegs(STG_NO_ARGS);
-#if i386_TARGET_ARCH
-void SaveAllStgContext(void * /*return address*/);
-#else
-void SaveAllStgContext(STG_NO_ARGS);
-#endif
-void SaveStgStackRegs(STG_NO_ARGS);
-void RestoreAllStgRegs(STG_NO_ARGS);
-void RestoreStackStgRegs(STG_NO_ARGS);
-
-extern STG_INLINE 
-void SaveAllStgRegs(STG_NO_ARGS)
-{
-#ifdef REG_Base
-# ifdef CONCURRENT
-    /* I do not think so: CurrentRegTable will not have changed
-       between entry to and exit from "Haskell land" (WDP 95/12)
-    */
-    /* CurrentRegTable = BaseReg; */
-# endif
-#endif
-/* Hack!!! slam the current C stack pointer into the reg. table
-   in the event that we need to copy a chunk of the C stack
-   before entering Haskell via a stable pointer (contact
-   <sof> for (gruesome) details!)
-  
-   Only save this once.
-
-   ToDo: support this across platforms.
-*/
-#if 0 && defined(CONCURRENT) && defined(i386_TARGET_ARCH)
-    if (CurrentTSO != CurrentTSOinC) {
-       __asm__ volatile (" mov %%esp,%0" : "m=" (CurrentRegTable->rCstkptr));
-    }
-#endif
-
-#ifdef REG_R1
-    SAVE_R1 = R1;      
-#endif
-
-#ifdef REG_R2
-    SAVE_R2 = R2;      
-#endif
-
-#ifdef REG_R3
-    SAVE_R3 = R3;      
-#endif
-
-#ifdef REG_R4
-    SAVE_R4 = R4;      
-#endif
-
-#ifdef REG_R5
-    SAVE_R5 = R5;      
-#endif
-
-#ifdef REG_R6
-    SAVE_R6 = R6;      
-#endif
-
-#ifdef REG_R7
-    SAVE_R7 = R7;       
-#endif
-
-#ifdef REG_R8
-    SAVE_R8 = R8;       
-#endif
-
-#ifdef REG_Flt1
-    SAVE_Flt1 = FltReg1;
-#endif
-
-#ifdef REG_Flt2
-    SAVE_Flt2 = FltReg2;
-#endif
-
-#ifdef REG_Flt3
-    SAVE_Flt3 = FltReg3;
-#endif
-
-#ifdef REG_Flt4
-    SAVE_Flt4 = FltReg4;
-#endif
-
-#ifdef REG_Dbl1
-    SAVE_Dbl1 = DblReg1;
-#endif
-
-#ifdef REG_Dbl2
-    SAVE_Dbl2 = DblReg2;
-#endif
-
-#ifdef REG_Lng1
-    SAVE_Lng1 = LngReg1;
-#endif
-
-#ifdef REG_Lng2
-    SAVE_Lng2 = LngReg2;
-#endif
-
-#ifdef REG_Tag
-    SAVE_Tag = TagReg;
-#endif
-
-#ifdef REG_Ret
-    SAVE_Ret = RetReg;
-#endif
-
-#if defined(REG_SpA) || defined(CONCURRENT)
-    SAVE_SpA = SpA;
-#endif
-
-#if defined(REG_SuA) || defined(CONCURRENT)
-    SAVE_SuA = SuA;
-#endif
-
-#if defined(REG_SpB) || defined(CONCURRENT)
-    SAVE_SpB = SpB;
-#endif
-
-#if defined(REG_SuB) || defined(CONCURRENT)
-    SAVE_SuB = SuB;
-#endif
-
-    SAVE_Hp    = Hp;   /* always! */
-    SAVE_HpLim = HpLim; /* ditto! */
-}
-
-extern STG_INLINE
-void
-#if i386_TARGET_ARCH
-SaveAllStgContext(void * ret_addr)
-#else
-SaveAllStgContext(STG_NO_ARGS)
-#endif
-{
-    SaveAllStgRegs(); 
-#ifdef CONCURRENT
-# if defined(PROFILING) || defined(PAR)
-    TSO_CCC(CurrentTSO) = CCC;
-    CCC = (CostCentre)STATIC_CC_REF(CC_MAIN);
-# endif
-# if i386_TARGET_ARCH
-    SET_RETADDR(TSO_PC2(CurrentTSO), ret_addr)
-# else
-    SET_RETADDR(TSO_PC2(CurrentTSO))
-# endif
-#endif
-}
-
-extern STG_INLINE 
-void SaveStgStackRegs(STG_NO_ARGS)
-{
-#if defined(REG_SpA) || defined(CONCURRENT)
-    SAVE_SpA = SpA;
-#endif
-
-#if defined(REG_SuA) || defined(CONCURRENT)
-    SAVE_SuA = SuA;
-#endif
-
-#if defined(REG_SpB) || defined(CONCURRENT)
-    SAVE_SpB = SpB;
-#endif
-
-#if defined(REG_SuB) || defined(CONCURRENT)
-    SAVE_SuB = SuB;
-#endif
-}
-
-extern STG_INLINE void
-RestoreAllStgRegs (STG_NO_ARGS)
-{
-#ifdef REG_Base
-    /* Re-initialise the register table pointer */
-# ifdef CONCURRENT
-    BaseReg = CurrentRegTable;
-# else 
-    BaseReg = &MainRegTable;
-# endif
-#endif
-
-#ifdef REG_R1
-    R1 = SAVE_R1;      
-#endif
-
-#ifdef REG_R2
-    R2 = SAVE_R2;      
-#endif
-
-#ifdef REG_R3
-    R3 = SAVE_R3;      
-#endif
-
-#ifdef REG_R4
-    R4 = SAVE_R4;      
-#endif
-
-#ifdef REG_R5
-    R5 = SAVE_R5;      
-#endif
-
-#ifdef REG_R6
-    R6 = SAVE_R6;      
-#endif
-
-#ifdef REG_R7
-    R7 = SAVE_R7;       
-#endif
-
-#ifdef REG_R8
-    R8 = SAVE_R8;       
-#endif
-
-#ifdef REG_Flt1
-    FltReg1 = SAVE_Flt1;
-#endif
-
-#ifdef REG_Flt2
-    FltReg2 = SAVE_Flt2;
-#endif
-
-#ifdef REG_Flt3
-    FltReg3 = SAVE_Flt3;
-#endif
-
-#ifdef REG_Flt4
-    FltReg4 = SAVE_Flt4;
-#endif
-
-#ifdef REG_Dbl1
-    DblReg1 = SAVE_Dbl1;
-#endif
-
-#ifdef REG_Dbl2
-    DblReg2 = SAVE_Dbl2;
-#endif
-
-#ifdef REG_Lng1
-    LngReg1 = SAVE_Lng1;
-#endif
-
-#ifdef REG_Lng2
-    LngReg2 = SAVE_Lng2;
-#endif
-
-#ifdef REG_Tag
-    TagReg = SAVE_Tag;
-#endif
-
-#ifdef REG_Ret
-    RetReg = SAVE_Ret;
-#endif
-
-#if defined(REG_StkO) && defined(CONCURRENT)
-    StkOReg = SAVE_StkO;
-#endif
-
-#if defined(REG_SpA) || defined(CONCURRENT)
-    SpA = SAVE_SpA;
-#endif
-
-#if defined(REG_SuA) || defined(CONCURRENT)
-    SuA = SAVE_SuA;
-#endif
-
-#if defined(REG_SpB) || defined(CONCURRENT)
-    SpB = SAVE_SpB;
-#endif
-
-#if defined(REG_SuB) || defined(CONCURRENT)
-    SuB = SAVE_SuB;
-#endif
-
-    Hp   = SAVE_Hp; /* always! */
-    HpLim = SAVE_HpLim; /* ditto! */
-
-#ifdef REG_StdUpdRetVec
-    StdUpdRetVecReg = vtbl_StdUpdFrame;
-#endif
-
-#ifdef REG_StkStub
-    StkStubReg = STK_STUB_closure;
-#endif
-
-#if CONCURRENT
-# if defined(PROFILING) || defined(PAR)
-    CCC = TSO_CCC(CurrentTSO);
-# endif
-#endif
-}
-
-extern STG_INLINE void
-RestoreStackStgRegs (STG_NO_ARGS)
-{
-#if defined(REG_SpA) || defined(CONCURRENT)
-    SpA = SAVE_SpA;
-#endif
-
-#if defined(REG_SuA) || defined(CONCURRENT)
-    SuA = SAVE_SuA;
-#endif
-
-#if defined(REG_SpB) || defined(CONCURRENT)
-    SpB = SAVE_SpB;
-#endif
-
-#if defined(REG_SuB) || defined(CONCURRENT)
-    SuB = SAVE_SuB;
-#endif
-}
-
-#else /* For the unwashed and unregisterized */
-
-#ifdef CONCURRENT
-
-#define SaveAllStgRegs()    \
-  do {                     \
-     SAVE_Hp = Hp;         \
-     SAVE_HpLim = HpLim;    \
-     SAVE_SpA = SpA;       \
-     SAVE_SuA = SuA;       \
-     SAVE_SpB = SpB;       \
-     SAVE_SuB = SuB;       \
-  } while(0)
-
-#define RestoreAllStgRegs() \
-  do {                     \
-     Hp = SAVE_Hp;         \
-     HpLim = SAVE_HpLim;    \
-     SpA = SAVE_SpA;       \
-     SuA = SAVE_SuA;       \
-     SpB = SAVE_SpB;       \
-     SuB = SAVE_SuB;       \
-  } while(0)
-
-#define RestoreStackStgRegs()  \
-  do {                     \
-     SpA = SAVE_SpA;       \
-     SuA = SAVE_SuA;       \
-     SpB = SAVE_SpB;       \
-     SuB = SAVE_SuB;       \
-  } while(0)
-
-#else
-
-#define SaveAllStgRegs() do {SAVE_Hp = Hp; SAVE_HpLim = HpLim;} while(0)
-
-#define RestoreAllStgRegs()  do {Hp = SAVE_Hp; HpLim = SAVE_HpLim;} while(0)
-#define RestoreStackStgRegs()  /* nothing */
-
-#endif /* CONCURRENT */
-
-#define SaveAllStgContext() SaveAllStgRegs()
-
-#endif /* __STG_GCC_REGS__ && MAIN_REG_MAP */
-
-#endif /* STGREGS_H */
-
-\end{code}
-