1.0.21.14: fix CHECK-FASL-HEADER buglet
[sbcl.git] / src / runtime / x86-assem.S
index a92113c..4a5090c 100644 (file)
@@ -185,10 +185,8 @@ GNAME(call_into_lisp_first_time):
 #ifndef LISP_FEATURE_WIN32
        movl    %esp,ALIEN_STACK + SYMBOL_VALUE_OFFSET
        movl    GNAME(all_threads),%eax
-       movl    THREAD_CONTROL_STACK_START_OFFSET(%eax) ,%esp
-       /* don't think too hard about what happens if we get interrupted
-       * here */
-       addl    $(THREAD_CONTROL_STACK_SIZE),%esp
+       /* pthread machinery takes care of this for other threads */
+       movl    THREAD_CONTROL_STACK_END_OFFSET(%eax) ,%esp
 #else
 /* Win32 -really- doesn't like you switching stacks out from under it. */
        movl    GNAME(all_threads),%eax
@@ -437,9 +435,9 @@ GNAME(do_pending_interrupt):
 #define ALLOC(size)                                             \
         pushl   %ebp;              /* Save EBP               */ \
         movl    %esp,%ebp;         /* Save ESP to EBP        */ \
-        andl    $0xfffffff0,%esp;  /* Align stack            */ \
-        pushl   $0;                /* Padding                */ \
-        pushl   size;              /* Argument to alloc      */ \
+        pushl   $0;                /* Reserve space for arg  */ \
+        andl    $0xfffffff0,%esp;  /* Align stack to 16bytes */ \
+        movl    size, (%esp);      /* Argument to alloc      */ \
         call    GNAME(alloc);                                   \
         movl    %ebp,%esp;         /* Restore ESP from EBP   */ \
         popl    %ebp;              /* Restore EBP            */