Skip to content
Snippets Groups Projects
Forked from cmucl / cmucl
Source project has a limited visibility.
  • rtoy's avatar
    9edd3c4b
    Fix for handling arithmetic errors with x87. · 9edd3c4b
    rtoy authored
    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.
    9edd3c4b
    History
    Fix for handling arithmetic errors with x87.
    rtoy authored
    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.