X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FStgCRun.c;h=be5843069f7d725e56df39f27a922999bac2a97e;hb=9d9784263ae1cb1d2add4b714ca676ca4b6cc22c;hp=d50bd677d148200c135d82bec59fe8b6215cfff4;hpb=34a98f40dea6d31ced5213b7810dc39b4989c395;p=ghc-hetmet.git diff --git a/ghc/rts/StgCRun.c b/ghc/rts/StgCRun.c index d50bd67..be58430 100644 --- a/ghc/rts/StgCRun.c +++ b/ghc/rts/StgCRun.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: StgCRun.c,v 1.21 2000/11/13 14:40:37 simonmar Exp $ + * $Id: StgCRun.c,v 1.23 2000/12/04 12:31:21 simonmar Exp $ * * (c) The GHC Team, 1998-2000 * @@ -314,6 +314,7 @@ StgRun(StgFunPtr f, StgRegTable *basereg) { does the last paragraph above mean when it says "the top of the stack is used for globals"? What globals? --SDM + Updated info (GHC 4.08.2): not saving %i7 any more (see below). -------------------------------------------------------------------------- */ #ifdef sparc_TARGET_ARCH @@ -343,6 +344,11 @@ StgRun(StgFunPtr f, StgRegTable *basereg) { * assembler. */ #if 0 + /* updated 4.08.2: we don't save %i7 in the middle of the reserved + * space any more, since gcc tries to save its address across the + * call to f(), this gets clobbered in STG land and we end up + * dereferencing a bogus pointer in StgReturn. + */ __asm__ volatile ("ld %1,%0" : "=r" (i7) : "m" (((void **)(space))[100])); #endif