From: Nikodemus S. <de...@us...> - 2007-05-06 17:56:33
|
Update of /cvsroot/sbcl/sbcl/src/runtime In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv28343/src/runtime Modified Files: x86-assem.S Log Message: 1.0.5.35: stack alignment on x86/Darwin, once more * Stack alignment cannot be changed after arguments have been pushed on stack: ALLOCATE-NUMBER-STACK-SPACE is the place to do this, and nowhere else. * Use the RESET-STACK-POINTER logic on all x86 platforms for simplicity. * Factor out the alignment logic to ALIGN-STACK-POINTER. * Clear DF unconditionally when calling out, which means that Solaris doesn't need to switch it back and forth. (Darwin, Solaris, and Win32 all need DF cleared for call-out.) Index: x86-assem.S =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/x86-assem.S,v retrieving revision 1.41 retrieving revision 1.42 diff -u -d -r1.41 -r1.42 --- x86-assem.S 11 Apr 2007 13:59:25 -0000 1.41 +++ x86-assem.S 6 May 2007 17:56:28 -0000 1.42 @@ -122,16 +122,11 @@ fstp %st(0) fstp %st(0) -#ifdef LISP_FEATURE_WIN32 - cld -#endif - -#ifdef LISP_FEATURE_DARWIN - andl $0xfffffff0,%esp # align stack to 16-byte boundary before calling C -#endif - call *%eax # normal callout using Lisp stack - - movl %eax,%ecx # remember integer return value + cld # clear out DF: Darwin, Solaris and Win32 at + # least need this, and it should not hurt others + + call *%eax # normal callout using Lisp stack + movl %eax,%ecx # remember integer return value /* Check for a return FP value. */ fxam |