X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FStgStartup.cmm;h=2f2a759c81b752b0f4c7f686b958ed82fb127f93;hb=2673ec6cb612e32aa229080c770b187e3b4e218a;hp=ece080b8b755b8eec72d470b5f1f678c6e9a6667;hpb=c77201452748a299caa3c0254bd7a76ba0c64bee;p=ghc-hetmet.git diff --git a/ghc/rts/StgStartup.cmm b/ghc/rts/StgStartup.cmm index ece080b..2f2a759 100644 --- a/ghc/rts/StgStartup.cmm +++ b/ghc/rts/StgStartup.cmm @@ -29,7 +29,7 @@ ASSERT(Sp != 0); \ ASSERT(SpLim != 0); \ ASSERT(HpLim != 0); \ - ASSERT(SpLim - RESERVED_STACK_WORDS <= Sp); \ + ASSERT(SpLim - WDS(RESERVED_STACK_WORDS) <= Sp); \ ASSERT(HpLim >= Hp); /* ----------------------------------------------------------------------------- @@ -92,8 +92,9 @@ INFO_TABLE_RET( stg_stop_thread, STOP_THREAD_WORDS, STOP_THREAD_BITMAP, SAVE_THREAD_STATE(); - /* R1 contains the return value of the thread */ - R1 = ThreadFinished; + /* The return code goes in BaseReg->rRet, and BaseReg is returned in R1 */ + StgRegTable_rRet(BaseReg) = ThreadFinished; + R1 = BaseReg; jump StgReturn; } @@ -117,7 +118,7 @@ stg_returnToStackTop stg_returnToSched { SAVE_THREAD_STATE(); - foreign "C" threadPaused(CurrentTSO); + foreign "C" threadPaused(MyCapability() "ptr", CurrentTSO); jump StgReturn; } @@ -138,7 +139,7 @@ stg_returnToSchedNotPaused stg_returnToSchedButFirst { SAVE_THREAD_STATE(); - foreign "C" threadPaused(CurrentTSO); + foreign "C" threadPaused(MyCapability() "ptr", CurrentTSO); jump R2; }