From: Juho S. <js...@us...> - 2006-01-20 08:35:08
|
Update of /cvsroot/sbcl/sbcl/src/runtime In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8386/src/runtime Modified Files: x86-64-assem.S Log Message: 0.9.8.47: Clear the direction flag on Lisp -> C transitions, as required by the x86-64 ABI. Fixes mysterious GC crashes on SuSE. (reported by Andrej Grozin and Hendrik Maryns) Index: x86-64-assem.S =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/x86-64-assem.S,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- x86-64-assem.S 8 Jan 2006 00:33:13 -0000 1.9 +++ x86-64-assem.S 20 Jan 2006 08:34:57 -0000 1.10 @@ -60,6 +60,10 @@ .global GNAME(call_into_c) .type GNAME(call_into_c),@function GNAME(call_into_c): + /* ABI requires that the direction flag be clear on function + * entry and exit. */ + cld + push %rbp # Save old frame pointer. mov %rsp,%rbp # Establish new frame. @@ -179,6 +183,10 @@ pop %r12 pop %rbx + /* ABI requires that the direction flag be clear on function + * entry and exit. */ + cld + /* FIXME Restore the NPX state. */ /* return value is already in rax where lisp expects it */ @@ -384,5 +392,4 @@ ret .size GNAME(fast_bzero), .-GNAME(fast_bzero) - .end |