Fix building RTS with gcc 2.*; declare all variables at the top of a block
[ghc-hetmet.git] / rts / StgStartup.cmm
index 33345cf..b5a5cdc 100644 (file)
    Returning from the STG world.
    -------------------------------------------------------------------------- */
 
+INFO_TABLE_RET( stg_stop_thread, STOP_FRAME,
 #if defined(PROFILING)
-#define STOP_THREAD_BITMAP 3
-#define STOP_THREAD_WORDS  2
-#else
-#define STOP_THREAD_BITMAP 0
-#define STOP_THREAD_WORDS  0
+  W_ unused,
+  W_ unused
 #endif
-
-INFO_TABLE_RET( stg_stop_thread, STOP_THREAD_WORDS, STOP_THREAD_BITMAP,
-               STOP_FRAME)
+)
 {
     /* 
        The final exit.
@@ -128,6 +124,13 @@ stg_returnToSchedButFirst
   jump R2;
 }
 
+stg_threadFinished
+{
+  StgRegTable_rRet(BaseReg) = ThreadFinished;
+  R1 = BaseReg;
+  jump StgReturn;
+}  
+
 /* -----------------------------------------------------------------------------
     Strict IO application - performing an IO action and entering its result.
     
@@ -139,9 +142,10 @@ stg_returnToSchedButFirst
 
     forceIO takes care of this, performing the IO action and entering the
     results that comes back.
+
     ------------------------------------------------------------------------- */
 
-INFO_TABLE_RET( stg_forceIO, 0/*size*/, 0/*bitmap*/, RET_SMALL)
+INFO_TABLE_RET( stg_forceIO, RET_SMALL)
 
 #ifdef REG_R1
 {
@@ -165,7 +169,7 @@ INFO_TABLE_RET( stg_forceIO, 0/*size*/, 0/*bitmap*/, RET_SMALL)
     is a register or not.
     ------------------------------------------------------------------------- */
 
-INFO_TABLE_RET( stg_noforceIO, 0/*size*/, 0/*bitmap*/, RET_SMALL )
+INFO_TABLE_RET( stg_noforceIO, RET_SMALL )
 
 #ifdef REG_R1
 {