Index: /branches/working-0711/ccl/compiler/X86/X8664/x8664-vinsns.lisp
===================================================================
--- /branches/working-0711/ccl/compiler/X86/X8664/x8664-vinsns.lisp	(revision 8030)
+++ /branches/working-0711/ccl/compiler/X86/X8664/x8664-vinsns.lisp	(revision 8031)
@@ -1747,4 +1747,5 @@
   (movq (:@ (:%seg :rcontext) x8664::tcr.save-tsp) (:%mmx x8664::stack-temp))
   (movq (:%mmx x8664::stack-temp) (:@ (:%q temp)))
+  (movq (:% x8664::rbp) (:@ x8664::tsp-frame.rbp (:%q temp)))
   (movq (:%q temp) (:@ (:%seg :rcontext) x8664::tcr.save-tsp))
   (leaq (:@ (+ x8664::dnode-size x8664::fulltag-cons) (:%q temp)) (:%q temp))
@@ -1775,4 +1776,5 @@
   (jnz :loop)
   (movq (:%mmx x8664::stack-temp) (:@ (:%q tempa)))
+  (movq (:% x8664::rbp) (:@ x8664::tsp-frame.rbp (:%q tempa)))
   (movq (:%q tempa) (:@ (:%seg :rcontext) x8664::tcr.save-tsp))
   (movl (:$l header) (:@ x8664::dnode-size (:%q tempa)))
@@ -2117,8 +2119,9 @@
      ((w :u64)))
   (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))  
-  (subq (:$b 16) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp))
-  (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))  
+  (subq (:$b (* 2 x8664::dnode-size)) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp))
+  (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))
   (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
-  (movq (:%q w) (:@ 8 (:%q x8664::ra0))))
+  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0)))
+  (movq (:%q w) (:@ x8664::dnode-size (:%q x8664::ra0))))
 
 
@@ -2133,4 +2136,5 @@
   (movapd (:%xmm x8664::fpzero) (:@ 16 (:%q temp)))
   (movq (:%mmx x8664::stack-temp) (:@ (:%q temp)))
+  (movq (:% x8664::rbp) (:@ x8664::tsp-frame.rbp (:%q temp)))  
   (movq (:%q temp) (:@ (:%seg :rcontext) x8664::tcr.save-tsp))
   (movq (:%q w) (:@ x8664::dnode-size (:%q temp))))
@@ -2140,8 +2144,9 @@
      ((f :double-float)))
   (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))  
-  (subq (:$b 16) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp))
+  (subq (:$b (* 2 x8664::dnode-size)) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp))
   (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))  
   (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
-  (movsd (:%xmm f) (:@ 8 (:%q x8664::ra0))))
+  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0)))
+  (movapd (:%xmm f) (:@ x8664::dnode-size (:%q x8664::ra0))))
 
 
@@ -2162,6 +2167,6 @@
      ())
   (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))
-  (movq (:@ 8 (:%q x8664::ra0)) (:%q w))
-  (addq (:$b 16) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp)))
+  (movq (:@ x8664::dnode-size (:%q x8664::ra0)) (:%q w))
+  (addq (:$b (* 2 x8664::dnode-size)) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp)))
 
 
@@ -2180,6 +2185,6 @@
      ())
   (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))
-  (movsd (:@ 8 (:%q x8664::ra0)) (:%xmm f))
-  (addq (:$b 16) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp)))
+  (movapd (:@ x8664::dnode-size (:%q x8664::ra0)) (:%xmm f))
+  (addq (:$b (* 2 x8664::dnode-size)) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp)))
 
 
@@ -2188,8 +2193,9 @@
                                    ((ptr :address)))
   (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%mmx x8664::stack-temp))
-  (subq (:$b (+ 16 x8664::macptr.size)) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp))
+  (subq (:$b (+ x8664::dnode-size x8664::macptr.size)) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp))
   (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))
   (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
-  (leaq (:@ (+ 16 x8664::fulltag-misc) (:%q  x8664::ra0)) (:%q dest))
+  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0)))
+  (leaq (:@ (+ x8664::dnode-size x8664::fulltag-misc) (:%q  x8664::ra0)) (:%q dest))
   (movq (:$l x8664::macptr-header) (:@ x8664::macptr.header (:%q dest)))
   (movq (:%q ptr) (:@ x8664::macptr.address (:%q dest)))
@@ -3600,5 +3606,6 @@
    (subq (:$l (:apply ash (:apply logandc2 (:apply + nwords 9) 1) x8664::word-shift)) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp)))
   (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))
-  (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0))))
+  (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
+  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0))))
 
 (define-x8664-vinsn alloc-variable-c-frame (()
@@ -3611,5 +3618,6 @@
   (subq (:%q size) (:@ (:%seg :rcontext) x8664::tcr.foreign-sp))
   (movq (:@ (:%seg :rcontext) x8664::tcr.foreign-sp) (:%q x8664::ra0))
-  (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0))))
+  (movq (:%mmx x8664::stack-temp) (:@ (:%q x8664::ra0)))
+  (movq (:% x8664::rbp) (:@ x8664::csp-frame.rbp (:%q x8664::ra0))))
 
 (define-x8664-vinsn set-c-arg (()
@@ -3672,5 +3680,6 @@
   (movapd (:%xmm x8664::fpzero) (:@ (:%q temp)))
   (movapd (:%xmm x8664::fpzero) (:@ x8664::dnode-size (:%q temp)))
-  (movq (:%mmx x8664::stack-temp) (:@ (:%q temp))) 
+  (movq (:%mmx x8664::stack-temp) (:@ (:%q temp)))
+  (movq (:% x8664::rbp) (:@ x8664::tsp-frame.rbp (:%q temp)))  
   (movq (:%q temp) (:@ (:%seg :rcontext) x8664::tcr.save-tsp))  
   (movq (:$l x8664::value-cell-header) (:@ x8664::dnode-size (:%q temp)))
