Index: /trunk/ccl/lisp-kernel/lisp-exceptions.c
===================================================================
--- /trunk/ccl/lisp-kernel/lisp-exceptions.c	(revision 893)
+++ /trunk/ccl/lisp-kernel/lisp-exceptions.c	(revision 894)
@@ -1858,12 +1858,6 @@
 #ifdef LINUX
 
-  tcr = (TCR *) xpGPR(context,rcontext);
-  
-  if (tcr == NULL) {
-    tcr = get_tcr(false);
-  } else {
-    current_r2 = tcr->native_thread_info;
-  }
-
+  tcr = (TCR *) get_interrupt_tcr(false);
+  
   /* The signal handler's entered with all signals (notably the
      thread_suspend signal) blocked.  Don't allow any other signals
@@ -2037,4 +2031,7 @@
 	  old_valence = prepare_to_wait_for_exception_lock(tcr, context);
 	  wait_for_exception_lock_in_handler(tcr, context, &xframe_link);
+#ifdef DARWIN
+          enable_fp_exceptions();
+#endif
 	  PMCL_exception_handler(signum, context, tcr, info);
 	  unlock_exception_lock_in_handler(tcr);
