Changeset 8041


Ignore:
Timestamp:
Jan 10, 2008, 8:29:57 AM (12 years ago)
Author:
gb
Message:

Set save_rbp slot of newly-created tsp frames.
Ensure that linked frames on cstack have room for/use saved_rbp
slot, encapsulate/hide foreign stack usage.

Location:
branches/working-0711/ccl/lisp-kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/lisp-kernel/x86-spentry64.s

    r7960 r8041  
    20522052        __(jnz 0b)     
    20532053        __(movq %stack_temp,(%temp0))
    2054         __(movq %imm0,tsp_frame.fixed_overhead(%temp0))
    2055         __(leaq tsp_frame.fixed_overhead+fulltag_misc(%temp0),%arg_z)
     2054        __(movq %rbp,csp_frame.save_rbp(%temp0))
     2055        __(movq %imm0,csp_frame.fixed_overhead(%temp0))
     2056        __(leaq csp_frame.fixed_overhead+fulltag_misc(%temp0),%arg_z)
    20562057        __(ret)
    20572058local_label(stack_misc_alloc_heap_alloc_ivector):
     
    26682669        __(movq %rcontext:tcr.foreign_sp,%arg_z)
    26692670        __(movq %imm1,(%arg_z))
     2671        __(movq %rbp,csp_frame.save_rbp(%arg_z))
    26702672        __(lea macptr.size+tsp_frame.fixed_overhead(%arg_z),%imm0)
    26712673        __(movq $macptr_header,tsp_frame.fixed_overhead(%arg_z))
     
    26792681        __(movq %rcontext:tcr.foreign_sp,%imm0)
    26802682        __(movq %imm1,(%imm0))
     2683        __(movq %rbp,csp_frame.save_rbp(%imm0))
    26812684        __(set_nargs(1))
    26822685        __(movq $nrs.new_gcable_ptr,%fname)
     
    26932696        __(movq %rcontext:tcr.foreign_sp,%arg_z)
    26942697        __(movq %imm1,(%arg_z))
     2698        __(movq %rbp,csp_frame.save_rbp(%arg_z))
    26952699        __(lea macptr.size+tsp_frame.fixed_overhead(%arg_z),%imm0)
    26962700        __(movq $macptr_header,tsp_frame.fixed_overhead(%arg_z))
     
    27092713        __(movq %rcontext:tcr.foreign_sp,%imm0)
    27102714        __(movq %imm1,(%imm0))
     2715        __(movq %rbp,csp_frame.save_rbp(%imm0))
    27112716        __(set_nargs(1))
    27122717        __(movq $nrs.new_gcable_ptr,%fname)
     
    45224527        __(movq %r12,%r11)
    452345281:      /* Align foreign stack for lisp   */
    4524         __(subq $node_size,%rsp)
     4529        __(pushq %rcontext:tcr.save_rbp) /* mark cstack frame's "owner" */
    45254530        __(pushq %rcontext:tcr.foreign_sp)
    45264531        /* init lisp registers   */
  • branches/working-0711/ccl/lisp-kernel/x86-subprims64.s

    r6523 r8041  
    3535        __(movq %rsp,%rbp)
    3636        /* Switch to the lisp stack */
     37        __(push $0)
     38        __(push $0)
    3739        __(movq %rsp,%rcontext:tcr.foreign_sp)
    3840        __(movq %rcontext:tcr.save_vsp,%rsp)
    3941        __(push $0)
    4042        __(movq %rsp,%rbp)
     43       
     44        __(TSP_Alloc_Fixed(0,%temp0))
     45        __(movsd %fpzero,tsp_frame.save_rbp(%temp0)) /* sentinel */
    4146        __(jmp local_label(test))
    4247local_label(loop):
     
    6166        __(jnz local_label(loop))
    6267local_label(back_to_c):
     68        __(discard_temp_frame(%imm0))
    6369        __(movq %rcontext:tcr.foreign_sp,%rsp)
     70        __(addq $dnode_size,%rsp)
    6471        __(movq %rsp,%rbp)
    6572        __(leave)
Note: See TracChangeset for help on using the changeset viewer.