Index: /branches/working-0711/ccl/lisp-kernel/x86-exceptions.c
===================================================================
--- /branches/working-0711/ccl/lisp-kernel/x86-exceptions.c	(revision 8003)
+++ /branches/working-0711/ccl/lisp-kernel/x86-exceptions.c	(revision 8004)
@@ -315,5 +315,5 @@
 
 LispObj
-create_exception_callback_frame(ExceptionInformation *xp)
+create_exception_callback_frame(ExceptionInformation *xp, TCR *tcr)
 {
   LispObj containing_uvector = 0, 
@@ -370,5 +370,6 @@
     relative_pc = abs_pc << fixnumshift;
   }
-  
+  push_on_lisp_stack(xp,(LispObj)(tcr->xframe->prev));
+  push_on_lisp_stack(xp,(LispObj)(tcr->foreign_sp));
   push_on_lisp_stack(xp,tra);
   push_on_lisp_stack(xp,(LispObj)xp);
@@ -408,5 +409,5 @@
   
   {
-    LispObj xcf = create_exception_callback_frame(xp),
+    LispObj xcf = create_exception_callback_frame(xp, tcr),
       cmain = nrs_CMAIN.vcell;
     int skip;
@@ -458,5 +459,5 @@
     *save_vsp = (LispObj *)xpGPR(xp,Isp),
     word_beyond_vsp = save_vsp[-1],
-    xcf = create_exception_callback_frame(xp);
+    xcf = create_exception_callback_frame(xp, tcr);
   int save_errno = errno;
   
@@ -483,5 +484,5 @@
       finish_function_entry(xp);
     }
-    xcf0 = create_exception_callback_frame(xp);
+    xcf0 = create_exception_callback_frame(xp, tcr);
     skip = callback_to_lisp(tcr, errdisp, xp, xcf0, 0, 0, 0, 0);
     if (skip == -1) {
@@ -591,5 +592,5 @@
     soft = a->softprot;
     unprotect_area(soft);
-    xcf = create_exception_callback_frame(xp);
+    xcf = create_exception_callback_frame(xp, tcr);
     skip = callback_to_lisp(tcr, nrs_CMAIN.vcell, xp, xcf, SIGSEGV, on_TSP, 0, 0);
     xpGPR(xp,Irbp) = save_rbp;
@@ -642,5 +643,5 @@
     if ((fulltag_of(cmain) == fulltag_misc) &&
       (header_subtag(header_of(cmain)) == subtag_macptr)) {
-      xcf = create_exception_callback_frame(xp);
+      xcf = create_exception_callback_frame(xp, tcr);
       callback_to_lisp(tcr, cmain, xp, xcf, SIGBUS, is_write_fault(xp,info), (natural)addr, 0);
     }
@@ -660,5 +661,5 @@
   if ((fulltag_of(cmain) == fulltag_misc) &&
       (header_subtag(header_of(cmain)) == subtag_macptr)) {
-    xcf = create_exception_callback_frame(xp);
+    xcf = create_exception_callback_frame(xp, tcr);
     skip = callback_to_lisp(tcr, cmain, xp, xcf, SIGFPE, code, 0, 0);
     xpPC(xp) += skip;
