diff --git a/src/code/float-trap.lisp b/src/code/float-trap.lisp index 6ed3d03602c8bd005e214a6b7014779950869a19..aa681dbd2f857b83e2460a4773825600dd5fa731 100644 --- a/src/code/float-trap.lisp +++ b/src/code/float-trap.lisp @@ -357,6 +357,14 @@ ;; XXX: This seems not right. Shouldn't we be setting the modes ;; in the sigcontext instead? This however seems to do what we ;; want. + + (format *debug-io* "sigcontext modes: #x~4x (~A)~%" + modes (decode-floating-point-modes modes)) + (format *debug-io* "current modes: #x~4x (~A)~%" + (vm:floating-point-modes) (get-floating-point-modes)) + (format *debug-io* "new modes: #x~x (~A)~%" + new-modes (decode-floating-point-modes new-modes)) + #+nil (setf (vm:floating-point-modes) new-modes)) (multiple-value-bind (fop operands) diff --git a/src/lisp/interrupt.c b/src/lisp/interrupt.c index a87bc579a1481e56851138133d510d581a3eaeec..e28209cda3dc5afad2d2b0e0355f2216e4830b86 100644 --- a/src/lisp/interrupt.c +++ b/src/lisp/interrupt.c @@ -252,7 +252,9 @@ interrupt_handle_now(HANDLER_ARGS) handler = interrupt_handlers[signal]; +#if 0 RESTORE_FPU(context); +#endif if (handler.c == (void (*)(HANDLER_ARGS)) SIG_IGN) return; @@ -333,7 +335,9 @@ maybe_now_maybe_later(HANDLER_ARGS) setup_pending_signal(signal, code, context); arch_set_pseudo_atomic_interrupted(context); } else { +#if 0 RESTORE_FPU(context); +#endif interrupt_handle_now(signal, code, context); }