Update of /cvsroot/sbcl/sbcl/src/code
In directory usw-pr-cvs1:/tmp/cvs-serv29652/src/code
Modified Files:
ppc-vm.lisp
Log Message:
0.7.5.10:
Begin to fix floating point exceptions on PPC
... write an os_context_fp_control function
... use it in CONTEXT-FLOATING-POINT-MODES
(this, unlike on the SPARC and Alpha ports, doesn't fix all the
normal-user problems. After the first return from the Lisp
debugger on the PPC, the FLOATING-POINT-MODES are (almost)
cleared, which means that the second bad floating point
operation is not trapped).
Index: ppc-vm.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/code/ppc-vm.lisp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- ppc-vm.lisp 22 May 2002 14:50:23 -0000 1.3
+++ ppc-vm.lisp 11 Jul 2002 15:17:01 -0000 1.4
@@ -97,13 +97,9 @@
;;; Given a signal context, return the floating point modes word in
;;; the same format as returned by FLOATING-POINT-MODES.
-(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,
- ;; this is needs to be rewritten as an alien function.
- (warn "stub CONTEXT-FLOATING-POINT-MODES")
- 0)
-
+(define-alien-routine ("os_context_fp_control" context-floating-point-modes)
+ (sb!alien:unsigned 32)
+ (context (* os-context-t)))
;;;; INTERNAL-ERROR-ARGS.
|