From 8f56e4b3b1e22a1f68eede5f9cc1c63a9e19b3fd Mon Sep 17 00:00:00 2001
From: simonmar <unknown>
Date: Thu, 17 Aug 2000 14:30:26 +0000
Subject: [PATCH] [project @ 2000-08-17 14:30:26 by simonmar] Complete the
 removal of tso->splim (these are the NCG bits).

---
 ghc/compiler/main/Constants.lhs     |  8 ++++++++
 ghc/compiler/nativeGen/StixPrim.lhs | 12 +++++-------
 ghc/includes/mkNativeHdr.c          |  6 +++---
 3 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/ghc/compiler/main/Constants.lhs b/ghc/compiler/main/Constants.lhs
index 660b99fdded1..f0766dc7c4f8 100644
--- a/ghc/compiler/main/Constants.lhs
+++ b/ghc/compiler/main/Constants.lhs
@@ -24,6 +24,7 @@ module Constants (
 	aRR_WORDS_HDR_SIZE,
 	aRR_PTRS_HDR_SIZE,
         rESERVED_C_STACK_BYTES,
+        rESERVED_STACK_WORDS,
 
 	sTD_ITBL_SIZE,
 	pROF_ITBL_SIZE,
@@ -231,6 +232,13 @@ area is has available.
 rESERVED_C_STACK_BYTES = (RESERVED_C_STACK_BYTES :: Int)
 \end{code}
 
+The amount of (Haskell) stack to leave free for saving registers when
+returning to the scheduler.
+
+\begin{code}
+rESERVED_STACK_WORDS = (RESERVED_STACK_WORDS :: Int)
+\end{code}
+
 Size of a word, in bytes
 
 \begin{code}
diff --git a/ghc/compiler/nativeGen/StixPrim.lhs b/ghc/compiler/nativeGen/StixPrim.lhs
index a78c4d682207..6f5e37c2abb6 100644
--- a/ghc/compiler/nativeGen/StixPrim.lhs
+++ b/ghc/compiler/nativeGen/StixPrim.lhs
@@ -18,7 +18,8 @@ import Literal		( Literal(..), word2IntLit )
 import PrimOp		( PrimOp(..), CCall(..), CCallTarget(..) )
 import PrimRep		( PrimRep(..), isFloatingRep )
 import UniqSupply	( returnUs, thenUs, getUniqueUs, UniqSM )
-import Constants	( mIN_INTLIKE, mIN_CHARLIKE, uF_UPDATEE, bLOCK_SIZE )
+import Constants	( mIN_INTLIKE, mIN_CHARLIKE, uF_UPDATEE, bLOCK_SIZE,
+			  rESERVED_STACK_WORDS )
 import CLabel		( mkIntlikeClosureLabel, mkCharlikeClosureLabel,
 			  mkMAP_FROZEN_infoLabel, mkForeignLabel )
 import Outputable
@@ -570,10 +571,6 @@ save_thread_state
 	   (StInd PtrRep (StPrim IntAddOp 
 		[tso, StInt (toInteger (TSO_SU*BYTES_PER_WORD))]))
 	   stgSu :
-	StAssign PtrRep 
-	   (StInd PtrRep (StPrim IntAddOp 
-		[tso, StInt (toInteger (TSO_SPLIM*BYTES_PER_WORD))]))
-	   stgSpLim :
 	StAssign PtrRep
 	   (StInd PtrRep (StPrim IntAddOp
 		[stgCurrentNursery, 
@@ -594,8 +591,9 @@ load_thread_state
 	   (StInd PtrRep (StPrim IntAddOp 
 		[tso, StInt (toInteger (TSO_SU*BYTES_PER_WORD))])) :
 	StAssign PtrRep stgSpLim
-	   (StInd PtrRep (StPrim IntAddOp 
-		[tso, StInt (toInteger (TSO_SPLIM*BYTES_PER_WORD))])) :
+	   (StPrim IntAddOp [tso, 
+			     StInt (toInteger ((TSO_STACK + rESERVED_STACK_WORDS)
+					       *BYTES_PER_WORD))]) :
 	StAssign PtrRep stgHp
 	   (StPrim IntSubOp [
 	      StInd PtrRep (StPrim IntAddOp
diff --git a/ghc/includes/mkNativeHdr.c b/ghc/includes/mkNativeHdr.c
index f89a22dadd45..282864dddad1 100644
--- a/ghc/includes/mkNativeHdr.c
+++ b/ghc/includes/mkNativeHdr.c
@@ -1,5 +1,5 @@
 /* --------------------------------------------------------------------------
- * $Id: mkNativeHdr.c,v 1.4 2000/05/15 14:44:42 simonmar Exp $
+ * $Id: mkNativeHdr.c,v 1.5 2000/08/17 14:30:26 simonmar Exp $
  *
  * (c) The GHC Team, 1992-1998
  *
@@ -37,8 +37,8 @@
 #define OFFSET_CurrentNursery OFFSET(RegTable, RegTable.rCurrentNursery)
 
 #define TSO_SP       OFFSET(tso, tso.sp)
-#define TSO_SPLIM    OFFSET(tso, tso.splim)
 #define TSO_SU       OFFSET(tso, tso.su)
+#define TSO_STACK    OFFSET(tso, tso.stack)
 
 #define BDESCR_START OFFSET(bd, bd.start)
 #define BDESCR_FREE  OFFSET(bd, bd.free)
@@ -87,7 +87,7 @@ main()
 
     printf("#define TSO_SP %d\n", TSO_SP);
     printf("#define TSO_SU %d\n", TSO_SU);
-    printf("#define TSO_SPLIM %d\n", TSO_SPLIM);
+    printf("#define TSO_STACK %d\n", TSO_STACK);
 
     printf("\n-- Block descriptor offsets for the Native Code Generator\n");
 
-- 
GitLab