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
|