Index: /branches/watchpoints/lisp-kernel/x86-exceptions.c
===================================================================
--- /branches/watchpoints/lisp-kernel/x86-exceptions.c	(revision 12984)
+++ /branches/watchpoints/lisp-kernel/x86-exceptions.c	(revision 12985)
@@ -301,8 +301,4 @@
 }
 
-  
-
-
-
 void
 push_on_lisp_stack(ExceptionInformation *xp, LispObj value)
@@ -312,5 +308,4 @@
   xpGPR(xp,Isp) = (LispObj)vsp;
 }
-
 
 /* Hard to know if or whether this is necessary in general.  For now,
@@ -842,9 +837,13 @@
 	  LispObj save_vsp = xpGPR(xp, Isp);
 	  LispObj save_fp = xpGPR(xp, Ifp);
-	  LispObj xcf = create_exception_callback_frame(xp, tcr);
+	  LispObj xcf;
+	  natural offset = (LispObj)addr - obj;
 	  int skip;
 
-	  /* The magic 2 means this was a write to a watchd object */
-	  skip = callback_to_lisp(tcr, cmain, xp, xcf, SIGSEGV, 2, (natural) addr, obj);
+	  push_on_lisp_stack(xp, obj);
+	  xcf = create_exception_callback_frame(xp, tcr);
+
+	  /* The magic 2 means this was a write to a watched object */
+	  skip = callback_to_lisp(tcr, cmain, xp, xcf, SIGSEGV, 2, (natural) addr, offset);
 	  xpPC(xp) += skip;
 	  xpGPR(xp, Ifp) = save_fp;
