Index: /branches/ia32/compiler/X86/X8632/x8632-vinsns.lisp
===================================================================
--- /branches/ia32/compiler/X86/X8632/x8632-vinsns.lisp	(revision 9677)
+++ /branches/ia32/compiler/X86/X8632/x8632-vinsns.lisp	(revision 9678)
@@ -1591,6 +1591,9 @@
 
 (defmacro define-x8632-subprim-lea-jmp-vinsn ((name &rest other-attrs) spno)
-  `(define-x8632-vinsn (,name :call :subprim-call ,@other-attrs) (() () ((entry (:label 1))))
-    (leal (:@ (:^ :back) (:%l x8632::fn)) (:%l x8632::ra0))
+  `(define-x8632-vinsn (,name :call :subprim-call ,@other-attrs) (()
+								  ()
+								  ((entry (:label 1))
+								   (ra (:lisp #.x8632::ra0))))
+    (leal (:@ (:^ :back) (:%l x8632::fn)) (:%l ra))
     (:talign 5)
     (jmp (:@ ,spno))
@@ -1610,11 +1613,13 @@
 
 (define-x8632-vinsn (nthrowvalues :call :subprim-call) (()
-                                                        ((lab :label)))
-  (leal (:@ (:^ lab) (:%l x8632::fn)) (:%l x8632::ra0))
+                                                        ((lab :label))
+							((ra (:lisp #.x8632::ra0))))
+  (leal (:@ (:^ lab) (:%l x8632::fn)) (:%l ra))
   (jmp (:@ .SPnthrowvalues)))
 
 (define-x8632-vinsn (nthrow1value :call :subprim-call) (()
-                                                        ((lab :label)))
-  (leal (:@ (:^ lab) (:%l x8632::fn)) (:%l x8632::ra0))
+                                                        ((lab :label))
+							((ra (:lisp #.x8632::ra0))))
+  (leal (:@ (:^ lab) (:%l x8632::fn)) (:%l ra))
   (jmp (:@ .SPnthrow1value)))
 
@@ -1746,5 +1751,6 @@
 (define-x8632-vinsn (nmkcatch1v :call :subprim-call) (()
                                                      ((lab :label))
-                                                     ((entry (:label 1))))
+                                                     ((entry (:label 1))
+						      (xfn (:lisp #.x8632::xfn))))
   (leal (:@ (:^ lab)  (:%l x8632::fn)) (:%l x8632::xfn))
   (:talign 5)
@@ -3317,7 +3323,10 @@
   (movss (:@ (:%l src) (:%l index)) (:%xmm dest)))
 
+;;; This would normally be put in %nargs, but we need an
+;;; extra node register for passing stuff into
+;;; SPdestructuring_bind and friends.
 (define-x8632-vinsn load-adl (()
 			      ((n :u32const)))
-  (movl (:$l n) (:%l x8632::nargs)))
+  (movl (:$l n) (:%l x8632::imm0)))
 
 (define-x8632-subprim-lea-jmp-vinsn (macro-bind) .SPmacro-bind)
@@ -3365,6 +3374,7 @@
 (define-x8632-vinsn (throw :jump :jump-unknown) (()
 						 ()
-                                                 ((entry (:label 1))))
-  (leal (:@ (:^ :back) (:%l x8632::fn)) (:%l x8632::ra0))
+                                                 ((entry (:label 1))
+						  (ra (:lisp #.x8632::ra0))))
+  (leal (:@ (:^ :back) (:%l x8632::fn)) (:%l ra))
   (:talign 5)
   (jmp (:@ .SPthrow))
