Index: /trunk/source/compiler/X86/X8664/x8664-vinsns.lisp
===================================================================
--- /trunk/source/compiler/X86/X8664/x8664-vinsns.lisp	(revision 15113)
+++ /trunk/source/compiler/X86/X8664/x8664-vinsns.lisp	(revision 15114)
@@ -1837,11 +1837,12 @@
 (define-x8664-vinsn make-tsp-cons (((dest :lisp))
 				   ((car :lisp) (cdr :lisp))
-				   ((temp :imm)))
+				   ((temp :imm)
+				    (stack-temp :imm)))
   (subq (:$b (+ x8664::cons.size x8664::dnode-size)) (:rcontext x8664::tcr.next-tsp))
   (movq (:rcontext x8664::tcr.next-tsp) (:%q temp))
   (movapd (:%xmm x8664::fpzero) (:@ (:%q temp)))
   (movapd (:%xmm x8664::fpzero) (:@ 16 (:%q temp)))
-  (movq (:rcontext x8664::tcr.save-tsp) (:%mmx x8664::stack-temp))
-  (movq (:%mmx x8664::stack-temp) (:@ (:%q temp)))
+  (movq (:rcontext x8664::tcr.save-tsp) (:%q stack-temp))
+  (movq (:%q stack-temp) (:@ (:%q temp)))
   (movq (:% x8664::rbp) (:@ x8664::tsp-frame.rbp (:%q temp)))
   (movq (:%q temp) (:rcontext x8664::tcr.save-tsp))
@@ -1855,5 +1856,6 @@
                                                (header :s32const))
                                               ((tempa :imm)
-                                               (tempb :imm)))
+                                               (tempb :imm)
+					       (stack-temp :imm)))
   ((:and (:pred >= (:apply + aligned-size x8664::dnode-size) -128)
          (:pred <= (:apply + aligned-size x8664::dnode-size) 127))
@@ -1866,5 +1868,5 @@
   (movq (:rcontext x8664::tcr.save-tsp) (:%q tempb))
   (movq (:rcontext x8664::tcr.next-tsp) (:%q tempa))
-  (movd (:%q tempb) (:%mmx x8664::stack-temp))
+  (movq (:%q tempb) (:%q stack-temp))
   :loop
   (movapd (:%xmm x8664::fpzero) (:@ -16 (:%q tempb)))
@@ -1872,5 +1874,5 @@
   (cmpq (:%q tempa) (:%q tempb))
   (jnz :loop)
-  (movq (:%mmx x8664::stack-temp) (:@ (:%q tempa)))
+  (movq (:%q stack-temp) (:@ (:%q tempa)))
   (movq (:% x8664::rbp) (:@ x8664::tsp-frame.rbp (:%q tempa)))
   (movq (:%q tempa) (:rcontext x8664::tcr.save-tsp))
@@ -2238,11 +2240,13 @@
 (define-x8664-vinsn (temp-push-unboxed-word :push :word :csp)
     (()
-     ((w :u64)))
-  (movq (:rcontext x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))  
+     ((w :u64))
+     ((temp :imm)
+      (stack-temp :imm)))
+  (movq (:rcontext x8664::tcr.foreign-sp) (:%q stack-temp))
   (subq (:$b (* 2 x8664::dnode-size)) (:rcontext x8664::tcr.foreign-sp))
-  (movq (:rcontext x8664::tcr.foreign-sp) (:%q x8664::ra0))
-  (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
-  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0)))
-  (movq (:%q w) (:@ x8664::dnode-size (:%q x8664::ra0))))
+  (movq (:rcontext x8664::tcr.foreign-sp) (:%q temp))
+  (movq (:%q stack-temp) (:@ (:%q temp)))
+  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q temp)))
+  (movq (:%q w) (:@ x8664::dnode-size (:%q temp))))
 
 
@@ -2250,11 +2254,12 @@
         (()
          ((w :lisp))
-         ((temp :imm)))
+         ((temp :imm)
+	  (stack-temp :imm)))
   (subq (:$b (* 2 x8664::dnode-size)) (:rcontext x8664::tcr.next-tsp))
-  (movq (:rcontext x8664::tcr.save-tsp) (:%mmx x8664::stack-temp))
+  (movq (:rcontext x8664::tcr.save-tsp) (:%q stack-temp))
   (movq (:rcontext x8664::tcr.next-tsp) (:%q temp))
   (movapd (:%xmm x8664::fpzero) (:@ (:%q temp)))
   (movapd (:%xmm x8664::fpzero) (:@ 16 (:%q temp)))
-  (movq (:%mmx x8664::stack-temp) (:@ (:%q temp)))
+  (movq (:%q stack-temp) (:@ (:%q temp)))
   (movq (:% x8664::rbp) (:@ x8664::tsp-frame.rbp (:%q temp)))  
   (movq (:%q temp) (:rcontext x8664::tcr.save-tsp))
@@ -2263,11 +2268,13 @@
 (define-x8664-vinsn (temp-push-double-float :push :word :csp)
     (()
-     ((f :double-float)))
-  (movq (:rcontext x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))  
+     ((f :double-float))
+     ((temp :imm)
+      (stack-temp :imm)))
+  (movq (:rcontext x8664::tcr.foreign-sp) (:%q stack-temp))  
   (subq (:$b (* 2 x8664::dnode-size)) (:rcontext x8664::tcr.foreign-sp))
-  (movq (:rcontext x8664::tcr.foreign-sp) (:%q x8664::ra0))  
-  (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
-  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0)))
-  (movapd (:%xmm f) (:@ x8664::dnode-size (:%q x8664::ra0))))
+  (movq (:rcontext x8664::tcr.foreign-sp) (:%q temp))  
+  (movq (:%q stack-temp) (:@ (:%q temp)))
+  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q temp)))
+  (movapd (:%xmm f) (:@ x8664::dnode-size (:%q temp))))
 
 
@@ -2312,11 +2319,13 @@
 
 (define-x8664-vinsn macptr->stack (((dest :lisp))
-                                   ((ptr :address)))
-  (movq (:rcontext x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))
+                                   ((ptr :address))
+				   ((temp :imm)
+				    (stack-temp :imm)))
+  (movq (:rcontext x8664::tcr.foreign-sp) (:%q stack-temp))
   (subq (:$b (+ x8664::dnode-size x8664::macptr.size)) (:rcontext x8664::tcr.foreign-sp))
-  (movq (:rcontext x8664::tcr.foreign-sp) (:%q x8664::ra0))
-  (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
-  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0)))
-  (leaq (:@ (+ x8664::dnode-size x8664::fulltag-misc) (:%q  x8664::ra0)) (:%q dest))
+  (movq (:rcontext x8664::tcr.foreign-sp) (:%q temp))
+  (movq (:%q stack-temp) (:@ (:%q temp)))
+  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q temp)))
+  (leaq (:@ (+ x8664::dnode-size x8664::fulltag-misc) (:%q temp)) (:%q dest))
   (movq (:$l x8664::macptr-header) (:@ x8664::macptr.header (:%q dest)))
   (movq (:%q ptr) (:@ x8664::macptr.address (:%q dest)))
@@ -3747,25 +3756,29 @@
 
 (define-x8664-vinsn alloc-c-frame (()
-                                   ((nwords :u32const)))
-  (movq (:rcontext x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))
+                                   ((nwords :u32const))
+				   ((temp :imm)
+				    (stack-temp :imm)))
+  (movq (:rcontext x8664::tcr.foreign-sp) (:%q stack-temp))
   ((:pred < (:apply ash (:apply logandc2 (:apply + nwords 9) 1) x8664::word-shift) 128)
    (subq (:$b (:apply ash (:apply logandc2 (:apply + nwords 9) 1) x8664::word-shift)) (:rcontext x8664::tcr.foreign-sp)))
   ((:not (:pred < (:apply ash (:apply logandc2 (:apply + nwords 9) 1) x8664::word-shift) 128))
    (subq (:$l (:apply ash (:apply logandc2 (:apply + nwords 9) 1) x8664::word-shift)) (:rcontext x8664::tcr.foreign-sp)))
-  (movq (:rcontext x8664::tcr.foreign-sp) (:%q x8664::ra0))
-  (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
-  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0))))
+  (movq (:rcontext x8664::tcr.foreign-sp) (:%q temp))
+  (movq (:%q stack-temp) (:@ (:%q temp)))
+  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q temp))))
 
 (define-x8664-vinsn alloc-variable-c-frame (()
                                             ((nwords :imm))
-                                            ((size :s64)))
+                                            ((size :s64)
+					     (temp :imm)
+					     (stack-temp :imm)))
   (leaq (:@ (* 9 x8664::node-size) (:%q nwords)) (:%q size))
   (andb (:$b (lognot x8664::fulltagmask)) (:%b size))
 
-  (movq (:rcontext x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))
+  (movq (:rcontext x8664::tcr.foreign-sp) (:%q stack-temp))
   (subq (:%q size) (:rcontext x8664::tcr.foreign-sp))
-  (movq (:rcontext x8664::tcr.foreign-sp) (:%q x8664::ra0))
-  (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
-  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0))))
+  (movq (:rcontext x8664::tcr.foreign-sp) (:%q temp))
+  (movq (:%q stack-temp) (:@ (:%q temp)))
+  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q temp))))
 
 (define-x8664-vinsn set-c-arg (()
@@ -3822,11 +3835,12 @@
 (define-x8664-vinsn make-tsp-vcell (((dest :lisp))
 				    ((closed :lisp))
-				    ((temp :imm)))
+				    ((temp :imm)
+				     (stack-temp :imm)))
   (subq (:$b (+ x8664::value-cell.size x8664::dnode-size)) (:rcontext x8664::tcr.next-tsp))
-  (movq (:rcontext x8664::tcr.save-tsp) (:%mmx x8664::stack-temp))
+  (movq (:rcontext x8664::tcr.save-tsp) (:%q stack-temp))
   (movq (:rcontext x8664::tcr.next-tsp) (:%q temp))
   (movapd (:%xmm x8664::fpzero) (:@ (:%q temp)))
   (movapd (:%xmm x8664::fpzero) (:@ x8664::dnode-size (:%q temp)))
-  (movq (:%mmx x8664::stack-temp) (:@ (:%q temp)))
+  (movq (:%q stack-temp) (:@ (:%q temp)))
   (movq (:% x8664::rbp) (:@ x8664::tsp-frame.rbp (:%q temp)))  
   (movq (:%q temp) (:rcontext x8664::tcr.save-tsp))  
