Index: /branches/x8664-call/ccl/compiler/X86/x862.lisp
===================================================================
--- /branches/x8664-call/ccl/compiler/X86/x862.lisp	(revision 6293)
+++ /branches/x8664-call/ccl/compiler/X86/x862.lisp	(revision 6294)
@@ -2425,5 +2425,6 @@
   (with-x86-local-vinsn-macros (seg)
     (! emit-aligned-label (aref *backend-labels* labelnum))
-    (@ labelnum)))
+    (@ labelnum)
+    (! recover-fn-from-rip)))
 
   
@@ -2498,6 +2499,5 @@
                 (! pass-multiple-values))
               (when mvpass-label
-                (@= mvpass-label)
-                (! recover-fn-from-ra0 (aref *backend-labels* mvpass-label))))
+                (@= mvpass-label)))
             (progn 
               (if label-p
@@ -2554,6 +2554,5 @@
               (progn (! pass-multiple-values)
                      (when mvpass-label
-                       (@= mvpass-label)
-                       (! recover-fn-from-ra0 (aref *backend-labels* mvpass-label))))
+                       (@= mvpass-label)))
               (! funcall))                  
             (cond ((or (null nargs) spread-p)
@@ -7749,5 +7748,4 @@
     (x862-close-undo)
     (@= tag-label)
-    (! recover-fn-from-ra0  (aref *backend-labels* tag-label))
     (unless mv-pass (if vreg (<- x8664::arg_z)))
     (let* ((*x862-returning-values* mv-pass)) ; nlexit keeps values on stack
@@ -8202,5 +8200,6 @@
     (! ref-interrupt-level yreg)
     (x862-dbind seg (make-acode (%nx1-operator fixnum) -1) '*interrupt-level*)
-    (! mkunwind (aref *backend-labels* protform-label)
+    (! mkunwind
+       (aref *backend-labels* protform-label)
        (aref *backend-labels* cleanup-label))
     (@= cleanup-label)
