Changeset 10558

Show
Ignore:
Timestamp:
08/24/08 23:57:40 (3 months ago)
Author:
gb
Message:

When doing ff-calls and syscalls, don't assume anything about foreign
stack alignment on entry, but force 16-byte alignment before the
call. (We're now pushing two words beyound the aligned area when
building C frames; this change just helps to bootstrap that.)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/source/lisp-kernel/x86-spentry32.s

    r10500 r10558  
    10311031        __(emms) 
    10321032        __(pop %ebp)            /* backlink */ 
     1033        __(lea 15(%esp),%edx) 
     1034        __(andl $-16,%edx) 
     1035        __(movl %edx,%esp) 
    10331036        __(unbox_fixnum(%arg_z,%eax))   /* syscall number */ 
    10341037        __(movl $local_label(back_from_sysenter),%edx) 
     
    10841087        __(emms) 
    10851088        __(pop %ebp)            /* backlink */ 
     1089        __(lea 15(%esp),%edx) 
     1090        __(andl $-16,%edx) 
     1091        __(movl %edx,%esp) 
    10861092        __(unbox_fixnum(%arg_z,%eax))   /* syscall number */ 
    10871093        __(pushl $local_label(back_from_syscall)) 
     
    40554061        __(movl (%esp),%ebp) 
    40564062LocalLabelPrefix[]ffcall_setup: 
    4057         __(addl $node_size,%esp) 
     4063        __(lea 15(%esp),%ecx) 
     4064        __(andl $-16,%ecx) 
     4065        __(movl %ecx,%esp) 
     4066/*      __(addl $node_size,%esp) */ 
    40584067LocalLabelPrefix[]ffcall_call: 
    40594068        __(call *%eax)