Fix for handling arithmetic errors with x87.
Use bootstrap-2009-01-1.lisp to bootstrap this change. code/float-trap.lisp: o FLOATING-POINT-MODES for :X87 needs to massage the results into the expected format (SSE2 MXCSR order). o Update for changed VOP names too. compiler/x86/float.lisp: o Rename the floating-point-modes and set-floating-point-modes VOPS to x87-floating-point-modes and set-x87-floating-point-modes. Change the translations accordingly too. compiler/x86/parms.lisp: o The float property bytes have been updated to match the SSE2 MXCSR register for both SSE2 and X87 builds because the code assumes SSE2 format. lisp/Linux-os.c: o Don't OR in the SSE2 modes if we're not running an SSE2 build. Doing this can erroneously mask out exceptions because the Lisp code didn't set up the sse2 modes. (This happens if you select the x87 core on a chip that supports sse2.) lisp/globals.h: o Declare fpu_mode. lisp/lisp.c: o Set fpu_mode to be the mode determined from the core file. Needed in Linux-os.c to process the SSE2 modes correctly with an x87 core on a sse2-capable chip.
Showing
- bootfiles/19e/boot-2009-01-1.lisp 16 additions, 0 deletionsbootfiles/19e/boot-2009-01-1.lisp
- code/float-trap.lisp 23 additions, 2 deletionscode/float-trap.lisp
- compiler/x86/float.lisp 7 additions, 7 deletionscompiler/x86/float.lisp
- compiler/x86/parms.lisp 9 additions, 10 deletionscompiler/x86/parms.lisp
- lisp/Linux-os.c 3 additions, 3 deletionslisp/Linux-os.c
- lisp/globals.h 3 additions, 1 deletionlisp/globals.h
- lisp/lisp.c 2 additions, 1 deletionlisp/lisp.c
Loading
Please register or sign in to comment