From: Christophe R. <cr...@us...> - 2002-07-16 13:48:38
|
Update of /cvsroot/sbcl/sbcl/src/code In directory usw-pr-cvs1:/tmp/cvs-serv22540/src/code Modified Files: x86-vm.lisp Log Message: 0.7.5.13: Linux floating point fixes ... define an os_restore_fp_control() function in the runtime, and use it in signal handlers (protected by #ifdef LISP_FEATURE_LINUX in non-Linux-specific code) ... write useful definitions of it ... for x86 (probably correct) ... for ppc (works, but could do with fixing) ... delete a SET_FPU_CONTROL_WORD from initialization ... dunno why it was there; no observable symptoms. Shout if some early x86/Linux system no longer works. ... export to C (via sbcl.h) Lisp's view of the floating point control word ... delete some floating-point-related stale symbols and comments from package-data-list.lisp-expr Now floating point stuff mostly works (I think) on x86/Linux and ppc/Linux, as well as sparc/SunOS. Other platforms still probably don't work. Index: x86-vm.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/x86-vm.lisp,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- x86-vm.lisp 5 May 2002 15:09:34 -0000 1.22 +++ x86-vm.lisp 16 Jul 2002 13:48:05 -0000 1.23 @@ -235,6 +235,7 @@ ;;; Given a signal context, return the floating point modes word in ;;; the same format as returned by FLOATING-POINT-MODES. +#!-linux (defun context-floating-point-modes (context) ;; FIXME: As of sbcl-0.6.7 and the big rewrite of signal handling for ;; POSIXness and (at the Lisp level) opaque signal contexts, @@ -255,6 +256,11 @@ (logior (ash (logand sw #xffff) 16) (logxor (logand cw #xffff) #x3f))) 0) + +#!+linux +(define-alien-routine ("os_context_fp_control" context-floating-point-modes) + (sb!alien:unsigned 32) + (context (* os-context-t))) ;;;; INTERNAL-ERROR-ARGS |