summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwolfgang.thaller@gmx.net <unknown>2006-03-25 22:21:00 +0000
committerwolfgang.thaller@gmx.net <unknown>2006-03-25 22:21:00 +0000
commit2dadc32f24466e11125a1fae4f74548022fc01d7 (patch)
treeb3067231f11d73499608dfd0776ea3bcf6decf5a
parent1da8365291d6b156007b1ee2cb728662dd90a5d1 (diff)
downloadhaskell-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.c15
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 */
/*