[project @ 1998-01-22 16:04:08 by sof]
[ghc-hetmet.git] / ghc / includes / StgRegs.lh
index 31e2ce7..f5664f9 100644 (file)
@@ -45,6 +45,20 @@ void SaveAllStgRegs(STG_NO_ARGS)
     /* 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;      
@@ -140,7 +154,7 @@ SaveAllStgContext(STG_NO_ARGS)
 {
     SaveAllStgRegs(); 
 #ifdef CONCURRENT
-# ifdef PAR
+# if defined(PROFILING) || defined(PAR)
     TSO_CCC(CurrentTSO) = CCC;
     CCC = (CostCentre)STATIC_CC_REF(CC_MAIN);
 # endif
@@ -279,8 +293,10 @@ RestoreAllStgRegs (STG_NO_ARGS)
     StkStubReg = STK_STUB_closure;
 #endif
 
-#ifdef PAR
+#if CONCURRENT
+# if defined(PROFILING) || defined(PAR)
     CCC = TSO_CCC(CurrentTSO);
+# endif
 #endif
 }