diff --git a/ghc/includes/StgRegs.lh b/ghc/includes/StgRegs.lh index ddeebf375f2979f56dcf7b4b57231de76a1895f3..f5664f928818b14b718023dce2b66b4d14e223ae 100644 --- a/ghc/includes/StgRegs.lh +++ b/ghc/includes/StgRegs.lh @@ -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;