diff options
author | wolfgang.thaller@gmx.net <unknown> | 2006-03-25 22:21:00 +0000 |
---|---|---|
committer | wolfgang.thaller@gmx.net <unknown> | 2006-03-25 22:21:00 +0000 |
commit | 2dadc32f24466e11125a1fae4f74548022fc01d7 (patch) | |
tree | b3067231f11d73499608dfd0776ea3bcf6decf5a | |
parent | 1da8365291d6b156007b1ee2cb728662dd90a5d1 (diff) | |
download | haskell-2dadc32f24466e11125a1fae4f74548022fc01d7.tar.gz |
Fix Darwin/x86 stack alignment
... again.
For now, I've added a TODO comment, but sooner or later this will have to
be made gcc-version-independent.
-rw-r--r-- | ghc/rts/StgCRun.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/ghc/rts/StgCRun.c b/ghc/rts/StgCRun.c index a5444f4159..c1afc16559 100644 --- a/ghc/rts/StgCRun.c +++ b/ghc/rts/StgCRun.c @@ -145,12 +145,12 @@ StgRun(StgFunPtr f, StgRegTable *basereg) { */ "movl %2,%%eax\n\t" -#if darwin_TARGET_OS /* - * Darwin: keep the stack aligned + * Darwin note: + * The stack pointer has to be aligned to a multiple of 16 bytes at + * this point. This works out correctly with gcc 4.0.1, but it might + * break at any time in the future. TODO: Make this future-proof. */ - "subl $12,%%esp\n\t" -#endif /* * jump to it @@ -160,13 +160,6 @@ StgRun(StgFunPtr f, StgRegTable *basereg) { STG_GLOBAL STG_RETURN "\n" STG_RETURN ":\n\t" -#if darwin_TARGET_OS - /* - * Darwin: keep the stack aligned - */ - "addl $12,%%esp\n\t" -#endif - "movl %%esi, %%eax\n\t" /* Return value in R1 */ /* |