Skip to content
  1. Feb 02, 2013
  2. Feb 01, 2013
    • Raymond Toy's avatar
      Fix ticket:72 : SIGFPE with no exceptions enabled · 0174bfeb
      Raymond Toy authored
       code/float-trap.lisp::
        * In the default case, check FOP to see if it's defined.  This means
          it's a divide exception.
      
       code/x86-vm.lisp::
        * Also check to see if the offending instruction is a DIV or IDIV,
          which means we got an integer overflow.  Return the appropriate
          values in this case.
      0174bfeb
  3. May 25, 2012
  4. Jan 06, 2012
  5. Nov 04, 2011
  6. Oct 15, 2011
    • Raymond Toy's avatar
      Properly handle a denormal operand exception. This should get rid of · 7b6eb217
      Raymond Toy authored
      the occasional problem about SIGFPE's with no exceptions enabled.
      
      error.lisp:
      o Add floating-point-denormal-operand arithmetic error.
      
      exports.lisp:
      o Export the new arithmetic error type.
      
      float-trap.lisp:
      o Check the denormal trap bit and signal the appropriate error.
      
      release-20c.txt:
      o Update.
      7b6eb217
  7. Sep 25, 2011
  8. Dec 22, 2010
  9. Apr 20, 2010
  10. Apr 19, 2010
  11. Mar 19, 2010
  12. Jul 06, 2009
    • rtoy's avatar
      Fix precision bug. On x87 builds, the precision was set to 64 bits · d22e97ab
      rtoy authored
      instead of 53 bits.  This causes the incorrect result (found by Paul):
      
      (ffloor 1.1605184953130993d26 12622780800d0) ->
      
      9.193841782573768d15
      -8.05306368d8
      
      The correct result should have a remainder of zero.
      
      Force the precision to be 53 bits (double-float).
      d22e97ab
  13. Jan 05, 2009
    • rtoy's avatar
      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
  14. Nov 12, 2008
  15. Jan 03, 2008
    • cshapiro's avatar
      Switch the FreeBSD port to use the common floating point trap handling · 9495c516
      cshapiro authored
      code.  Rather than introduce a new FreeBSD case to the x86 sigcontext
      member accessor routines, collapse all of the system specific routines
      down to a common set of routines.
      
      * code/debug-int.lisp - Disable some Darwin-specific code to debug
        NULL mcontext pointers.
      
      * code/float-trap.lisp - Remove ancient FreeBSD-specific code for
        handling floating point signals.
      
      * code/macros.lisp, code/sap.lisp, compiler/saptran.lisp - Include the
        SAP-REF-LONG setter by default on the x86.
      
      * code/x86-vm.lisp - Remove operating system specific sigcontext
        definitions and sigcontext accessors.  Define the alien sigcontext
        as a system area pointer.  Replace the sigcontext accessors with
        foreign function calls that mask the complexity of the underlying
        sigcontext member access.
      
      * compiler/x86/float.lisp - Unconditionally define STORE-LONG-FLOAT.
        This function is used by the %SET-SAP-REF-LONG VOP that underlies
        the SAP-REF-LONG setter....
      9495c516
  16. Nov 14, 2007
    • cshapiro's avatar
      * Change the way the x87 precision control is managed. While in Lisp, · 1440af76
      cshapiro authored
        the precision control will always be set to double precision.  For
        the duration of calls into C, the precision control will be set to
        the ABI default.  On Linux and Darwin this is double extended
        precision.  On all other platforms the precision control is left as
        double precision.  The specious FLOAT-ACCURACY declaration has been
        eliminated.
      
      * Shorten the precision control field to 24-bits by disposing of the
        unexamined high order eight bits of the status word.  This compacts
        the code generated around floating point mode changes and reduces
        consing.
      
      * Eliminate unnecessary uses of FLDENV and FSTENV.  We can substitute a
        use of FSTENV with FSTSW in FLOATING-POINT-MODES.  This reduces the
        number of cycles to access the relevant mode bits by a factor of
        thirty.  We cannot eliminate FLDENV in SET-FLOATING-POINT-MODES, but
        the common case does not require an update to the status word.  A
        fast path has been added to the VOP that improves the execution time
        by at least a factor of fifteen.
      
      * Remove the precision control option to SET-FLOATING-POINT-MODES.  It
        is the responsibility of the compiler to generating code that yields
        correctly rounded results in double and single precision.
      1440af76
  17. Jul 06, 2007
  18. Dec 02, 2006
    • rtoy's avatar
      code/float-trap.lisp: · 896812b8
      rtoy authored
      o Need to clear out the individual invalid operation bits when
        clearing the invalid exception bit.
      
      code/exports.lisp:
      compiler/ppc/parms.lisp:
      o Export FLOAT-INVALID-OP-1-BYTE.  (Needs a better name.)
      896812b8
  19. Nov 16, 2006
    • rtoy's avatar
      code/float-trap.lisp: · 6f968a58
      rtoy authored
      o Pass the modes to GET-FP-OPERANDS
      
      compiler/ppc/float.lisp:
      o If the destination register is the same as one of the source
        registers, an overflow or underflow exception will have replaced the
        source register with the result.  In that case, replace the source
        value with NIL to indicate we don't know.  (We could recompute the
        source from the result, but there would be a round-off error.)
      6f968a58
  20. Nov 14, 2006
    • rtoy's avatar
      Floating-point fixes for ppc. · a94b4291
      rtoy authored
      code/float-trap.lisp:
      o Set FP modes now.
      o Clear out sticky bits in SIGFPE handler
      
      code/ppc-vm.lisp:
      o Add (setf sigcontext-floating-point-modes) to set the FP mode.
      
      compiler/ppc/parms.lisp:
      o Add fields for various invalid operations bits.
      o Fix float-fast-bit
      a94b4291
  21. Nov 09, 2005
  22. Jul 25, 2004
    • pmai's avatar
      This commit adds the remainder of the outstanding PPC/Darwin port merge. · 2ff25623
      pmai authored
      Besides support for Darwin foreign loading, and updates to the ppc-vm
      and bsd-os files, this commit removes unix:unix-errno as a foreign variable
      and replaces it with a function named unix-errno, and a (setf unix-errno).
      This makes both glibc support cleaner, and enables ports like PPC/Darwin
      (and the upcoming win32 port) which have no easy way of accessing errno as
      a foreign variable able to support this functionality at all.
      
      The current implementation of this is rather make-shift, it would likely
      be much cleaner to go the SBCL way and mediate all access to errno via
      defined functions in the C runtime.
      
      As an interim feature, the frobbing of the float-trap-modes is currently
      commented out for Darwin because of ongoing breakage.
      2ff25623
  23. Mar 24, 2004
    • emarsden's avatar
      · e2daaabd
      emarsden authored
       - add ignore declaration
       - fix endpwent alien routine for Solaris
      e2daaabd
  24. Sep 02, 2003
  25. Jun 18, 2003
    • gerd's avatar
      Remove package nicknames USER from COMMON-LISP-USER. Add a new · b4f2c7c7
      gerd authored
      	package COMMON-LISP which LISP uses, so that COMMON-LISP no longer
      	has the non-ANSI nickname LISP.
      
      	To bootstrap, use boot13.lisp as target:bootstrap.lisp with pmai's
      	build scripts, and do a full compile.
      
      	* src/bootfiles/18e/boot13.lisp: Change for all the package
      	changes.
      
      	* src/code/exports.lisp: New package common-lisp,
      	which lisp uses.
      
      	* src/tools/worldload.lisp:
      	* src/tools/setup.lisp: Use cl-user instead of user.
      	Use lisp:: instead of cl::.
      
      	* src/tools/worldcom.lisp:
      	* src/tools/snapshot-update.lisp:
      	* src/tools/pclcom.lisp:
      	* src/tools/mk-lisp:
      	* src/tools/hemcom.lisp:
      	* src/tools/config.lisp:
      	* src/tools/comcom.lisp:
      	* src/tools/clxcom.lisp:
      	* src/tools/clmcom.lisp:
      	* src/pcl/defsys.lisp:
      	* src/motif/lisp/initial.lisp:
      	* src/interface/initial.lisp:
      	* src/hemlock/lispmode.lisp (setup-lisp-mode):
      	Use cl-user instead of user.
      
      	* src/code/save.lisp (assert-user-package):
      	* src/code/print.lisp (%with-standard-...
      b4f2c7c7
  26. Apr 14, 2003
  27. Mar 02, 2003
  28. Jan 14, 2002
  29. Jan 13, 2002
  30. Dec 06, 2001
    • pmai's avatar
      Added specialised port to OpenBSD (2.9). Many parts of the original · 195461c1
      pmai authored
      code which were previously conditionalized on :FreeBSD, are now
      conditionalized on :BSD instead, with the :BSD feature now implying a
      4.4BSD(lite2) derived OS.  This should make future BSD-ports easier.
      FreeBSD and OpenBSD are differentiated by having either :FreeBSD or
      :OpenBSD on the features list.
      
      Currently the OpenBSD port does not have working ELF support, because
      OpenBSD 2.9 is still non-ELF by default.  So don't put ELF on the
      features list when building for OpenBSD, or fix the code to work
      correctly in this case instead.
      195461c1
  31. Apr 12, 2001
    • pw's avatar
      From Ray Toy: · b3538815
      pw authored
      Make orig-modes a gensym in with-float-traps-masked.
      b3538815
  32. Dec 05, 1999
  33. Mar 21, 1998
  34. Sep 07, 1997
  35. Sep 02, 1997
  36. Aug 30, 1997
  37. Jan 18, 1997
  38. Oct 31, 1994
  39. Oct 19, 1994