Index: /branches/working-0711/ccl/lisp-kernel/x86-spentry64.s
===================================================================
--- /branches/working-0711/ccl/lisp-kernel/x86-spentry64.s	(revision 8040)
+++ /branches/working-0711/ccl/lisp-kernel/x86-spentry64.s	(revision 8041)
@@ -2052,6 +2052,7 @@
 	__(jnz 0b)	
 	__(movq %stack_temp,(%temp0))
-	__(movq %imm0,tsp_frame.fixed_overhead(%temp0))
-	__(leaq tsp_frame.fixed_overhead+fulltag_misc(%temp0),%arg_z)
+        __(movq %rbp,csp_frame.save_rbp(%temp0))
+	__(movq %imm0,csp_frame.fixed_overhead(%temp0))
+	__(leaq csp_frame.fixed_overhead+fulltag_misc(%temp0),%arg_z)
 	__(ret)
 local_label(stack_misc_alloc_heap_alloc_ivector):
@@ -2668,4 +2669,5 @@
         __(movq %rcontext:tcr.foreign_sp,%arg_z)
 	__(movq %imm1,(%arg_z))
+        __(movq %rbp,csp_frame.save_rbp(%arg_z))
 	__(lea macptr.size+tsp_frame.fixed_overhead(%arg_z),%imm0)
 	__(movq $macptr_header,tsp_frame.fixed_overhead(%arg_z))
@@ -2679,4 +2681,5 @@
         __(movq %rcontext:tcr.foreign_sp,%imm0)
 	__(movq %imm1,(%imm0))
+        __(movq %rbp,csp_frame.save_rbp(%imm0))
 	__(set_nargs(1))
 	__(movq $nrs.new_gcable_ptr,%fname)
@@ -2693,4 +2696,5 @@
         __(movq %rcontext:tcr.foreign_sp,%arg_z)
 	__(movq %imm1,(%arg_z))
+        __(movq %rbp,csp_frame.save_rbp(%arg_z))
 	__(lea macptr.size+tsp_frame.fixed_overhead(%arg_z),%imm0)
 	__(movq $macptr_header,tsp_frame.fixed_overhead(%arg_z))
@@ -2709,4 +2713,5 @@
         __(movq %rcontext:tcr.foreign_sp,%imm0)
 	__(movq %imm1,(%imm0))
+        __(movq %rbp,csp_frame.save_rbp(%imm0))
 	__(set_nargs(1))
 	__(movq $nrs.new_gcable_ptr,%fname)
@@ -4522,5 +4527,5 @@
 	__(movq %r12,%r11)
 1:	/* Align foreign stack for lisp   */
-        __(subq $node_size,%rsp)
+        __(pushq %rcontext:tcr.save_rbp) /* mark cstack frame's "owner" */
 	__(pushq %rcontext:tcr.foreign_sp)
 	/* init lisp registers   */
Index: /branches/working-0711/ccl/lisp-kernel/x86-subprims64.s
===================================================================
--- /branches/working-0711/ccl/lisp-kernel/x86-subprims64.s	(revision 8040)
+++ /branches/working-0711/ccl/lisp-kernel/x86-subprims64.s	(revision 8041)
@@ -35,8 +35,13 @@
 	__(movq %rsp,%rbp)
 	/* Switch to the lisp stack */
+        __(push $0)
+        __(push $0)
 	__(movq %rsp,%rcontext:tcr.foreign_sp)
 	__(movq %rcontext:tcr.save_vsp,%rsp)
 	__(push $0)
 	__(movq %rsp,%rbp)
+        
+        __(TSP_Alloc_Fixed(0,%temp0))
+        __(movsd %fpzero,tsp_frame.save_rbp(%temp0)) /* sentinel */
 	__(jmp local_label(test))
 local_label(loop):
@@ -61,5 +66,7 @@
 	__(jnz local_label(loop))
 local_label(back_to_c):
+        __(discard_temp_frame(%imm0))
 	__(movq %rcontext:tcr.foreign_sp,%rsp)
+        __(addq $dnode_size,%rsp)
 	__(movq %rsp,%rbp)
 	__(leave)
