diff --git a/src/code/float-trap.lisp b/src/code/float-trap.lisp index b163cf3ed1fbbc271f758ecefb6f97706f0b6bc7..63c6e810c899f0ea0a3bc084ff84ba6c2139b605 100644 --- a/src/code/float-trap.lisp +++ b/src/code/float-trap.lisp @@ -451,6 +451,10 @@ ;; representing the invalid operation. Otherwise, if we ;; enable the invalid trap later, these sticky bits will cause ;; an exception. + ;; + ;; FIXME: Consider removing these for ppc. Since + ;; we now restore the original modes exactly, I + ;; don't think these are needed anymore. #+ppc (invalid-mask (if (member :invalid traps) (dpb 0 @@ -467,21 +471,8 @@ (logand (,',merge-traps ,orig-modes ,trap-mask) ,exception-mask))) ,@body) - ;; Restore the original traps and exceptions. - (format *debug-io* "Saved fpu mode: #x~4,'0x: ~S~%" - ,orig-modes (decode-floating-point-modes ,orig-modes)) - (format *debug-io* "Current fpu mode: #x~4,'0x: ~S~%" - (floating-point-modes) (get-floating-point-modes)) - #+nil - (setf (floating-point-modes) - (logior (logand ,orig-modes ,(logior traps exceptions)) - (logand ,orig-modes - ,(logand trap-mask exception-mask) - #+ppc - ,invalid-mask - #+mips ,(dpb 0 float-exceptions-byte #xffffffff)))) - (setf (floating-point-modes) ,orig-modes) - )))))))) + ;; Restore the modes exactly as they were. + (setf (floating-point-modes) ,orig-modes))))))))) ;; WITH-FLOAT-TRAPS-MASKED -- Public (with-float-traps masked logand