1.0.15.15: reset DF on x86 and x86-64 after every STD instead of when calling out
authorNikodemus Siivola <nikodemus@random-state.net>
Wed, 5 Mar 2008 15:11:18 +0000 (15:11 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Wed, 5 Mar 2008 15:11:18 +0000 (15:11 +0000)
commit1a19da9ff50a45962fc2cf42c7a241a2ce97a364
tree0ac0e2cc387576a2729de172cf82d1b284325824
parent8146eeb8708fbc225169707a49b32e9e977d546e
1.0.15.15: reset DF on x86 and x86-64 after every STD instead of when calling out

 * Both the old and the new behaviour should be correct re C-ABI, but
   this is much easier to audit. Thanks to Aurelien Jarno for the
   initial patch.

 * This should also fix the build on platforms with GCC 4.3 compiled
   libc signal handling functions, which assume DF to be cleared.

   ** NOTE ** If kernel/libc does not arrange for DF to be cleared
   before calling our handler and restore it afterwards, we can still
   be broken by asynch signals on post 4.3 GCC libcs -- but this Is
   Not Our Fault, We Think.

 * Test-case suggested by Alistair Bridgewater for possible related
   default-unknown-values problems on SunOS.
12 files changed:
src/assembly/x86-64/assem-rtns.lisp
src/assembly/x86/assem-rtns.lisp
src/compiler/x86-64/call.lisp
src/compiler/x86-64/nlx.lisp
src/compiler/x86-64/values.lisp
src/compiler/x86/call.lisp
src/compiler/x86/nlx.lisp
src/compiler/x86/values.lisp
src/runtime/x86-64-assem.S
src/runtime/x86-assem.S
tests/compiler.impure.lisp
version.lisp-expr