Fix Darwin/x86 stack alignment
authorwolfgang.thaller@gmx.net <unknown>
Sat, 25 Mar 2006 22:21:00 +0000 (22:21 +0000)
committerwolfgang.thaller@gmx.net <unknown>
Sat, 25 Mar 2006 22:21:00 +0000 (22:21 +0000)
... again.
For now, I've added a TODO comment, but sooner or later this will have to
be made gcc-version-independent.

ghc/rts/StgCRun.c

index a5444f4..c1afc16 100644 (file)
@@ -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  */
 
        /*