Index: /branches/win64/lisp-kernel/x86-exceptions.c
===================================================================
--- /branches/win64/lisp-kernel/x86-exceptions.c	(revision 9554)
+++ /branches/win64/lisp-kernel/x86-exceptions.c	(revision 9555)
@@ -1307,9 +1307,7 @@
 
 #ifdef WINDOWS
-void
-interrupt_handler (int signum, siginfo_t *info, ExceptionInformation *context)
-{
-}
-#else
+extern LONG restore_win64_context(ExceptionInformation *, TCR *, int;);
+#endif
+
 void
 interrupt_handler (int signum, siginfo_t *info, ExceptionInformation *context)
@@ -1319,4 +1317,6 @@
 #endif
   TCR *tcr = get_interrupt_tcr(false);
+  int old_valence = tcr->valence;
+
   if (tcr) {
     if ((TCR_INTERRUPT_LEVEL(tcr) < 0) ||
@@ -1336,5 +1336,4 @@
 
         xframe_list xframe_link;
-        int old_valence;
         signed_natural alloc_displacement = 0;
         LispObj 
@@ -1371,5 +1370,7 @@
         tcr->flags |= old_foreign_exception;
         unlock_exception_lock_in_handler(tcr);
+#ifndef WINDOWS
         exit_signal_handler(tcr, old_valence);
+#endif
       }
     }
@@ -1380,7 +1381,11 @@
   }
 #endif
+#ifdef WINDOWS
+  restore_win64_context(context,tcr,old_valence);
+#else
   SIGRETURN(context);
-}
-#endif
+#endif
+}
+
 
 #ifndef WINDOWS
@@ -1506,5 +1511,4 @@
 }
 
-extern LONG restore_win64_context(ExceptionInformation *, TCR *, int;);
 
 LONG
