From 8f56e4b3b1e22a1f68eede5f9cc1c63a9e19b3fd Mon Sep 17 00:00:00 2001 From: simonmar 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 660b99f..f0766dc 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 a78c4d6..6f5e37c 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 f89a22d..282864d 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"); -- 1.7.10.4