Changeset 8562


Ignore:
Timestamp:
Feb 22, 2008, 5:37:17 PM (12 years ago)
Author:
andreas
Message:

Access TCR through a macro, with different implementations for UNIXen (gs-segment-based
addressing) and Windows (keep TCR pointer in a GPR). Choice of r11 for TCR is purely arbitrary,
might still change, and requires more changes in the rest of the assembler base that are not in
place yet.

Location:
trunk/source/lisp-kernel
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/x86-constants64.s

    r8561 r8562  
    215215        define([Rsave0],[15])   
    216216
     217
     218ifdef([WINDOWS],[
     219/* We keep the TCR pointer in r11 */
     220        define([rcontext_reg], r11)
     221        define([rcontext],[$1(%rcontext_reg)])
     222],[
    217223/* The TCR can be accessed relative to %gs   */
    218 define([rcontext],[gs])
     224        define([rcontext_reg],[gs])
     225        define([rcontext],[%rcontext_reg:$1])
     226])
    219227define([fname],[temp0])
    220228define([next_method_context],[temp0])
     
    225233define([ra0],[temp2])       
    226234                                               
    227 define([xfn],[temp1])   
    228 
     235define([xfn],[temp1])
    229236
    230237define([allocptr],[temp0])             
     
    249256define([fp15],[xmm15])         
    250257define([fpzero],[fp15])
    251        
     258
    252259       
    253260nbits_in_word = 64
  • trunk/source/lisp-kernel/x86-macros.s

    r8341 r8562  
    7777define([TSP_Alloc_Fixed],[
    7878        define([TSP_Alloc_Size],[((($1+node_size) & ~(dnode_size-1))+dnode_size)])
    79         __(subq [$]TSP_Alloc_Size,%rcontext:tcr.next_tsp)
    80         __(movq %rcontext:tcr.save_tsp,%stack_temp)
    81         __(movq %rcontext:tcr.next_tsp,$2)
     79        __(subq [$]TSP_Alloc_Size,rcontext(tcr.next_tsp))
     80        __(movq rcontext(tcr.save_tsp),%stack_temp)
     81        __(movq rcontext(tcr.next_tsp),$2)
    8282        zero_dnodes $2,0,TSP_Alloc_Size
    8383        __(movq %stack_temp,($2))
    8484        __(movq %rbp,tsp_frame.save_rbp($2))
    85         __(movq $2,%rcontext:tcr.save_tsp)
     85        __(movq $2,rcontext(tcr.save_tsp))
    8686        undefine([TSP_Alloc_Size])
    8787])
     
    9292define([TSP_Alloc_Var],[
    9393        new_macro_labels()
    94         subq $1,%rcontext:tcr.next_tsp
    95         __(movq %rcontext:tcr.save_tsp,%stack_temp)
    96         __(movq %rcontext:tcr.next_tsp,$2)
     94        subq $1,rcontext(tcr.next_tsp)
     95        __(movq rcontext(tcr.save_tsp),%stack_temp)
     96        __(movq rcontext(tcr.next_tsp),$2)
    9797        __(jmp macro_label(test))
    9898macro_label(loop):
     
    102102        __(subq $dnode_size,$1)
    103103        __(jge macro_label(loop))
    104         __(movq %rcontext:tcr.next_tsp,$2)
     104        __(movq rcontext(tcr.next_tsp),$2)
    105105        __(movd %stack_temp,$1)
    106106        __(movq $1,($2))
    107107        __(movq %rbp,tsp_frame.save_rbp($2))
    108         __(movq $2,%rcontext:tcr.save_tsp)
     108        __(movq $2,rcontext(tcr.save_tsp))
    109109        __(addq $dnode_size,$2)
    110110])
     
    122122define([Make_Catch],[
    123123        Allocate_Catch_Frame(%imm2)
    124         __(movq %rcontext:tcr.catch_top,%imm0)
    125         __(movq %rcontext:tcr.db_link,%imm1)
     124        __(movq rcontext(tcr.catch_top),%imm0)
     125        __(movq rcontext(tcr.db_link),%imm1)
    126126        __(movq %arg_z,catch_frame.catch_tag(%imm2))
    127127        __(movq %imm0,catch_frame.link(%imm2))
    128128        __(movq [$]$1,catch_frame.mvflag(%imm2))
    129         __(movq %rcontext:tcr.xframe,%imm0)
     129        __(movq rcontext(tcr.xframe),%imm0)
    130130        __(movq %rsp,catch_frame.rsp(%imm2))
    131131        __(movq %rbp,catch_frame.rbp(%imm2))
    132         __(movq %rcontext:tcr.foreign_sp,%stack_temp)
     132        __(movq rcontext(tcr.foreign_sp),%stack_temp)
    133133        __(movq %imm1,catch_frame.db_link(%imm2))
    134134        __(movq %save3,catch_frame._save3(%imm2))
     
    139139        __(movq %stack_temp,catch_frame.foreign_sp(%imm2))
    140140        __(movq %xfn,catch_frame.pc(%imm2))
    141         __(movq %imm2,%rcontext:tcr.catch_top)
     141        __(movq %imm2,rcontext(tcr.catch_top))
    142142])     
    143143
    144144define([nMake_Catch],[
    145145        Allocate_Catch_Frame(%imm2)
    146         __(movq %rcontext:tcr.catch_top,%imm0)
    147         __(movq %rcontext:tcr.db_link,%imm1)
     146        __(movq rcontext(tcr.catch_top),%imm0)
     147        __(movq rcontext(tcr.db_link),%imm1)
    148148        __(movq %arg_z,catch_frame.catch_tag(%imm2))
    149149        __(movq %imm0,catch_frame.link(%imm2))
     
    151151        __(movq [$]$1,catch_frame.mvflag(%imm2))
    152152        __(movq %imm0,catch_frame.rsp(%imm2))
    153         __(movq %rcontext:tcr.xframe,%imm0)
     153        __(movq rcontext(tcr.xframe),%imm0)
    154154        __(movq %rbp,catch_frame.rbp(%imm2))
    155         __(movq %rcontext:tcr.foreign_sp,%stack_temp)
     155        __(movq rcontext(tcr.foreign_sp),%stack_temp)
    156156        __(movq %imm1,catch_frame.db_link(%imm2))
    157157        __(movq %save3,catch_frame._save3(%imm2))
     
    162162        __(movq %stack_temp,catch_frame.foreign_sp(%imm2))
    163163        __(movq %xfn,catch_frame.pc(%imm2))
    164         __(movq %imm2,%rcontext:tcr.catch_top)
     164        __(movq %imm2,rcontext(tcr.catch_top))
    165165])     
    166166               
     
    183183/* to interrupt; the interrupting code has to recognize and possibly  */
    184184/* emulate the instructions in between   */
    185         __(subq $cons.size-fulltag_cons,%rcontext:tcr.save_allocptr)
    186         __(movq %rcontext:tcr.save_allocptr,%allocptr)
    187         __(rcmpq(%allocptr,%rcontext:tcr.save_allocbase))
     185        __(subq $cons.size-fulltag_cons,rcontext(tcr.save_allocptr))
     186        __(movq rcontext(tcr.save_allocptr),%allocptr)
     187        __(rcmpq(%allocptr,rcontext(tcr.save_allocbase)))
    188188        __(jg macro_label(no_trap))
    189189        uuo_alloc()
    190190macro_label(no_trap):   
    191         __(andb $~fulltagmask,%rcontext:tcr.save_allocptr)
     191        __(andb $~fulltagmask,rcontext(tcr.save_allocptr))
    192192/* Easy to interrupt now that tcr.save_allocptr isn't tagged as a cons    */
    193193        __(movq $2,cons.cdr(%allocptr))
     
    211211               
    212212        new_macro_labels()
    213         __(subq %imm1,%rcontext:tcr.save_allocptr)
    214         __(movq %rcontext:tcr.save_allocptr,%allocptr)
    215         __(rcmpq(%allocptr,%rcontext:tcr.save_allocbase))
     213        __(subq %imm1,rcontext(tcr.save_allocptr))
     214        __(movq rcontext(tcr.save_allocptr),%allocptr)
     215        __(rcmpq(%allocptr,rcontext(tcr.save_allocbase)))
    216216        __(jg macro_label(no_trap))
    217217        uuo_alloc()
    218218macro_label(no_trap):   
    219219        __(movq %imm0,misc_header_offset(%allocptr))
    220         __(andb $~fulltagmask,%rcontext:tcr.save_allocptr)
     220        __(andb $~fulltagmask,rcontext(tcr.save_allocptr))
    221221/* Now that tcr.save_allocptr is untagged, it's easier to be interrupted   */
    222222        ifelse($1,[],[],[
     
    411411
    412412define([discard_temp_frame],[
    413         __(movq %rcontext:tcr.save_tsp,$1)
     413        __(movq rcontext(tcr.save_tsp),$1)
    414414        __(movq ($1),$1)
    415         __(movq $1,%rcontext:tcr.save_tsp)
    416         __(movq $1,%rcontext:tcr.next_tsp)
     415        __(movq $1,rcontext(tcr.save_tsp))
     416        __(movq $1,rcontext(tcr.next_tsp))
    417417
    418418])     
    419419
    420420define([check_pending_enabled_interrupt],[
    421         __(btrq [$]63,%rcontext:tcr.interrupt_pending)
     421        __(btrq [$]63,rcontext(tcr.interrupt_pending))
    422422        __(jnc,pt $1)
    423423        interrupt_now()
     
    431431define([check_pending_interrupt],[
    432432        new_macro_labels()
    433         __(movq %rcontext:tcr.tlb_pointer,$1)
     433        __(movq rcontext(tcr.tlb_pointer),$1)
    434434        __(cmpq [$]0,INTERRUPT_LEVEL_BINDING_INDEX($1))
    435435        __(js,pt macro_label(done))
     
    457457       
    458458define([set_foreign_gs_base],[
    459         set_gs_base([%rcontext:tcr.osid])
     459        set_gs_base([rcontext(tcr.osid)])
    460460])
    461461
     
    464464
    465465define([save_tcr_linear],[
    466         __(movq %rcontext:tcr.linear,$1)
     466        __(movq rcontext(tcr.linear),$1)
    467467])
    468468       
  • trunk/source/lisp-kernel/x86-spentry64.s

    r8553 r8562  
    11671167   double binding of *interrupt-level* out-of-line */
    11681168_spentry(nmkunwind)
    1169         __(movq %rcontext:tcr.tlb_pointer,%arg_x)
     1169        __(movq rcontext(tcr.tlb_pointer),%arg_x)
    11701170        __(movq INTERRUPT_LEVEL_BINDING_INDEX(%arg_x),%arg_y)
    11711171        __(push %arg_y)
    11721172        __(push $INTERRUPT_LEVEL_BINDING_INDEX)
    1173         __(push %rcontext:tcr.db_link)
    1174         __(movq %rsp,%rcontext:tcr.db_link)
     1173        __(push rcontext(tcr.db_link))
     1174        __(movq %rsp,rcontext(tcr.db_link))
    11751175        __(movq $-1<<fixnumshift,INTERRUPT_LEVEL_BINDING_INDEX(%arg_x))
    11761176        __(movq $undefined,%arg_z)
     
    11861186       
    11871187_spentry(throw)
    1188         __(movq %rcontext:tcr.catch_top,%imm1)
     1188        __(movq rcontext(tcr.catch_top),%imm1)
    11891189        __(xorl %imm0_l,%imm0_l)
    11901190        __(movq (%rsp,%nargs_q),%temp0) /* temp0 = tag   */
     
    12141214        __(jmp _SPnthrow1value)
    12151215__(tra(local_label(_threw_one_value)))
    1216         __(movq %rcontext:tcr.catch_top,%temp0)
     1216        __(movq rcontext(tcr.catch_top),%temp0)
    12171217        __(movq catch_frame.db_link(%temp0),%imm0)
    1218         __(movq %rcontext:tcr.db_link,%imm1)
     1218        __(movq rcontext(tcr.db_link),%imm1)
    12191219        __(cmpq %imm0,%imm1)
    12201220        __(jz local_label(_threw_one_value_dont_unbind))
     
    12261226        __(movq catch_frame.foreign_sp(%temp0),%imm0)
    12271227        __(movq catch_frame.xframe(%temp0),%imm1)
    1228         __(movq %imm0,%rcontext:tcr.foreign_sp)
    1229         __(movq %imm1,%rcontext:tcr.xframe)
     1228        __(movq %imm0,rcontext(tcr.foreign_sp))
     1229        __(movq %imm1,rcontext(tcr.xframe))
    12301230        __(movq catch_frame.rsp(%temp0),%rsp)
    12311231        __(movq catch_frame.link(%temp0),%imm1)
     
    12341234        __(movq catch_frame._save2(%temp0),%save2)
    12351235        __(movq catch_frame._save3(%temp0),%save3)
    1236         __(movq %imm1,%rcontext:tcr.catch_top)
     1236        __(movq %imm1,rcontext(tcr.catch_top))
    12371237        __(movq catch_frame.pc(%temp0),%ra0)
    12381238        __(lea -(tsp_frame.fixed_overhead+fulltag_misc)(%temp0),%imm1)
    12391239        __(movq (%imm1),%imm1)
    1240         __(movq %imm1,%rcontext:tcr.save_tsp)
    1241         __(movq %imm1,%rcontext:tcr.next_tsp)
     1240        __(movq %imm1,rcontext(tcr.save_tsp))
     1241        __(movq %imm1,rcontext(tcr.next_tsp))
    12421242        __(jmp *%ra0)
    12431243local_label(_throw_multiple):
     
    12451245        __(jmp _SPnthrowvalues)
    12461246__(tra(local_label(_threw_multiple)))
    1247         __(movq %rcontext:tcr.catch_top,%temp0)
     1247        __(movq rcontext(tcr.catch_top),%temp0)
    12481248        __(movq catch_frame.db_link(%temp0),%imm0)
    1249         __(movq %rcontext:tcr.db_link,%imm1)
     1249        __(movq rcontext(tcr.db_link),%imm1)
    12501250        __(cmpq %imm0,%imm1)
    12511251        __(je local_label(_threw_multiple_dont_unbind))
     
    12691269        __(movq catch_frame.rbp(%temp0),%rbp)
    12701270        __(movq catch_frame.foreign_sp(%temp0),%imm0)
    1271         __(movq %imm0,%rcontext:tcr.foreign_sp)       
     1271        __(movq %imm0,rcontext(tcr.foreign_sp))       
    12721272        __(movq catch_frame.xframe(%temp0),%imm0)
    1273         __(movq %imm0,%rcontext:tcr.xframe)
     1273        __(movq %imm0,rcontext(tcr.xframe))
    12741274        __(movq %imm1,%rsp)
    12751275        __(movq catch_frame.link(%temp0),%imm1)         
     
    12781278        __(movq catch_frame._save2(%temp0),%save2)
    12791279        __(movq catch_frame._save3(%temp0),%save3)
    1280         __(movq %imm1,%rcontext:tcr.catch_top)
     1280        __(movq %imm1,rcontext(tcr.catch_top))
    12811281        __(movq catch_frame.pc(%temp0),%ra0)
    12821282        __(lea -(tsp_frame.fixed_overhead+fulltag_misc)(%temp0),%imm1)
    12831283        __(movq (%imm1),%imm1)
    1284         __(movq %imm1,%rcontext:tcr.save_tsp)
    1285         __(movq %imm1,%rcontext:tcr.next_tsp)
     1284        __(movq %imm1,rcontext(tcr.save_tsp))
     1285        __(movq %imm1,rcontext(tcr.next_tsp))
    12861286        __(jmp *%ra0)
    12871287_endsubp(throw)
     
    12891289/* This takes N multiple values atop the vstack.   */
    12901290_spentry(nthrowvalues)
    1291         __(movb $1,%rcontext:tcr.unwinding)
     1291        __(movb $1,rcontext(tcr.unwinding))
    12921292local_label(_nthrowv_nextframe):
    12931293        __(subq $fixnumone,%imm0)
    12941294        __(js local_label(_nthrowv_done))
    12951295        __(movd %imm0,%mm1)
    1296         __(movq %rcontext:tcr.catch_top,%temp0)
     1296        __(movq rcontext(tcr.catch_top),%temp0)
    12971297        __(movq catch_frame.link(%temp0),%imm1)
    12981298        __(movq catch_frame.db_link(%temp0),%imm0)
    1299         __(movq %imm1,%rcontext:tcr.catch_top)
    1300         __(cmpq %imm0,%rcontext:tcr.db_link)
     1299        __(movq %imm1,rcontext(tcr.catch_top))
     1300        __(cmpq %imm0,rcontext(tcr.db_link))
    13011301        __(jz local_label(_nthrowv_dont_unbind))
    13021302        __(push %ra0)
     
    13151315        __(jne local_label(_nthrowv_skip))
    13161316        __(movq catch_frame.xframe(%temp0),%save0)
    1317         __(movq %save0,%rcontext:tcr.xframe)
     1317        __(movq %save0,rcontext(tcr.xframe))
    13181318        __(leaq (%rsp,%nargs_q),%save1)
    13191319        __(movq catch_frame.rsp(%temp0),%save2)
     
    13291329        __(jns local_label(_nthrowv_push_loop))
    13301330        __(movq catch_frame.xframe(%temp0),%save0)
    1331         __(movq %save0,%rcontext:tcr.xframe)
     1331        __(movq %save0,rcontext(tcr.xframe))
    13321332        __(movq %save2,%rsp)
    13331333        __(movq catch_frame.rbp(%temp0),%rbp)
     
    13371337        __(movq catch_frame._save0(%temp0),%save0)
    13381338        __(movq catch_frame.foreign_sp(%temp0),%stack_temp)
    1339         __(movq %stack_temp,%rcontext:tcr.foreign_sp)       
     1339        __(movq %stack_temp,rcontext(tcr.foreign_sp))       
    13401340local_label(_nthrowv_skip):     
    13411341        __(movq -(tsp_frame.fixed_overhead+fulltag_misc)(%temp0),%imm1)
    1342         __(movq %imm1,%rcontext:tcr.save_tsp)       
    1343         __(movq %imm1,%rcontext:tcr.next_tsp)
     1342        __(movq %imm1,rcontext(tcr.save_tsp))       
     1343        __(movq %imm1,rcontext(tcr.next_tsp))
    13441344        __(movd %mm1,%imm0)
    13451345        __(jmp local_label(_nthrowv_nextframe))
     
    13571357        __(movq catch_frame.xframe(%temp0),%stack_temp)
    13581358        __(movq catch_frame.rsp(%temp0),%arg_x)
    1359         __(movq %stack_temp,%rcontext:tcr.xframe)
     1359        __(movq %stack_temp,rcontext(tcr.xframe))
    13601360        __(movq catch_frame.foreign_sp(%temp0),%stack_temp)
    1361         __(movq %stack_temp,%rcontext:tcr.foreign_sp)       
     1361        __(movq %stack_temp,rcontext(tcr.foreign_sp))       
    13621362        /* Discard the catch frame, so we can build a temp frame   */
    13631363        __(movq -(tsp_frame.fixed_overhead+fulltag_misc)(%temp0),%imm1)
    1364         __(movq %imm1,%rcontext:tcr.save_tsp)
    1365         __(movq %imm1,%rcontext:tcr.next_tsp)
     1364        __(movq %imm1,rcontext(tcr.save_tsp))
     1365        __(movq %imm1,rcontext(tcr.next_tsp))
    13661366        /* tsp overhead, nargs, throw count, ra0   */
    13671367        __(dnode_align(%nargs_q,(tsp_frame.fixed_overhead+(3*node_size)),%imm0))
     
    13901390        __(leaq local_label(_nthrowv_called_cleanup)(%rip),%ra0)
    13911391        __(push %ra0)
    1392         __(movb $0,%rcontext:tcr.unwinding)
     1392        __(movb $0,rcontext(tcr.unwinding))
    13931393        __(jmp *%xfn)
    13941394__(tra(local_label(_nthrowv_called_cleanup)))
    13951395
    1396         __(movb $1,%rcontext:tcr.unwinding)
    1397         __(movq %rcontext:tcr.save_tsp,%imm1)
     1396        __(movb $1,rcontext(tcr.unwinding))
     1397        __(movq rcontext(tcr.save_tsp),%imm1)
    13981398        __(movq tsp_frame.data_offset+(0*node_size)(%imm1),%nargs_q)
    13991399        __(movq tsp_frame.data_offset+(1*node_size)(%imm1),%ra0)
     
    14081408        __(subq $node_size,%imm0)
    14091409        __(jns local_label(_nthrowv_tpoploop))
    1410         __(movq %rcontext:tcr.save_tsp,%imm1)
     1410        __(movq rcontext(tcr.save_tsp),%imm1)
    14111411        __(movq (%imm1),%imm1)
    1412         __(movq %imm1,%rcontext:tcr.save_tsp)
    1413         __(movq %imm1,%rcontext:tcr.next_tsp)
     1412        __(movq %imm1,rcontext(tcr.save_tsp))
     1413        __(movq %imm1,rcontext(tcr.next_tsp))
    14141414        __(movd %mm1,%imm0)
    14151415        __(jmp local_label(_nthrowv_nextframe))
    14161416local_label(_nthrowv_done):
    1417         __(movb $0,%rcontext:tcr.unwinding)
     1417        __(movb $0,rcontext(tcr.unwinding))
    14181418        __(check_pending_interrupt(%imm0))
    14191419local_label(_nthrowv_return):   
     
    14261426       
    14271427_spentry(nthrow1value)
    1428         __(movb $1,%rcontext:tcr.unwinding)
     1428        __(movb $1,rcontext(tcr.unwinding))
    14291429local_label(_nthrow1v_nextframe):
    14301430        __(subq $fixnumone,%imm0)
    14311431        __(js local_label(_nthrow1v_done))
    14321432        __(movd %imm0,%mm1)
    1433         __(movq %rcontext:tcr.catch_top,%temp0)
     1433        __(movq rcontext(tcr.catch_top),%temp0)
    14341434        __(movq catch_frame.link(%temp0),%imm1)
    14351435        __(movq catch_frame.db_link(%temp0),%imm0)
    1436         __(movq %imm1,%rcontext:tcr.catch_top)
    1437         __(cmpq %imm0,%rcontext:tcr.db_link)
     1436        __(movq %imm1,rcontext(tcr.catch_top))
     1437        __(cmpq %imm0,rcontext(tcr.db_link))
    14381438        __(jz local_label(_nthrow1v_dont_unbind))
    14391439        __(push %ra0)
     
    14521452        __(jne local_label(_nthrow1v_skip))
    14531453        __(movq catch_frame.xframe(%temp0),%save0)
    1454         __(movq %save0,%rcontext:tcr.xframe)
     1454        __(movq %save0,rcontext(tcr.xframe))
    14551455        __(leaq (%rsp,%nargs_q),%save1)
    14561456        __(movq catch_frame.xframe(%temp0),%save0)
    1457         __(movq %save0,%rcontext:tcr.xframe)
     1457        __(movq %save0,rcontext(tcr.xframe))
    14581458        __(movq catch_frame.rsp(%temp0),%rsp)
    14591459        __(movq catch_frame.rbp(%temp0),%rbp)
     
    14631463        __(movq catch_frame._save0(%temp0),%save0)
    14641464        __(movq catch_frame.foreign_sp(%temp0),%stack_temp)
    1465         __(movq %stack_temp,%rcontext:tcr.foreign_sp)       
     1465        __(movq %stack_temp,rcontext(tcr.foreign_sp))       
    14661466local_label(_nthrow1v_skip):   
    14671467        __(movq -(tsp_frame.fixed_overhead+fulltag_misc)(%temp0),%imm1)
    1468         __(movq %imm1,%rcontext:tcr.save_tsp)
    1469         __(movq %imm1,%rcontext:tcr.next_tsp)       
     1468        __(movq %imm1,rcontext(tcr.save_tsp))
     1469        __(movq %imm1,rcontext(tcr.next_tsp))       
    14701470        __(movd %mm1,%imm0)
    14711471        __(jmp local_label(_nthrow1v_nextframe))
     
    14761476       
    14771477        __(movq catch_frame.xframe(%temp0),%save0)
    1478         __(movq %save0,%rcontext:tcr.xframe)
     1478        __(movq %save0,rcontext(tcr.xframe))
    14791479        __(movq catch_frame._save0(%temp0),%save0)
    14801480        __(movq catch_frame._save1(%temp0),%save1)
     
    14851485        __(movq catch_frame.rsp(%temp0),%rsp)
    14861486        __(movq catch_frame.foreign_sp(%temp0),%stack_temp)
    1487         __(movq %stack_temp,%rcontext:tcr.foreign_sp)       
     1487        __(movq %stack_temp,rcontext(tcr.foreign_sp))       
    14881488        /* Discard the catch frame, so we can build a temp frame   */
    14891489        __(movq -(tsp_frame.fixed_overhead+fulltag_misc)(%temp0),%imm1)
    1490         __(movq %imm1,%rcontext:tcr.save_tsp)
    1491         __(movq %imm1,%rcontext:tcr.next_tsp)       
     1490        __(movq %imm1,rcontext(tcr.save_tsp))
     1491        __(movq %imm1,rcontext(tcr.next_tsp))       
    14921492        __(TSP_Alloc_Fixed((3*node_size),%imm1))
    14931493        __(addq $tsp_frame.fixed_overhead,%imm1)
     
    14971497/* Ready to call cleanup code. set up tra, jmp to %xfn   */
    14981498        __(leaq local_label(_nthrow1v_called_cleanup)(%rip),%ra0)
    1499         __(movb $0,%rcontext:tcr.unwinding)
     1499        __(movb $0,rcontext(tcr.unwinding))
    15001500        __(push %ra0)
    15011501        __(jmp *%xfn)
    15021502__(tra(local_label(_nthrow1v_called_cleanup)))
    15031503
    1504         __(movb $1,%rcontext:tcr.unwinding)
    1505         __(movq %rcontext:tcr.save_tsp,%imm1)
     1504        __(movb $1,rcontext(tcr.unwinding))
     1505        __(movq rcontext(tcr.save_tsp),%imm1)
    15061506        __(movq tsp_frame.data_offset+(0*node_size)(%imm1),%ra0)
    15071507        __(movq tsp_frame.data_offset+(1*node_size)(%imm1),%mm1)
     
    15091509
    15101510        __(movq (%imm1),%imm1)
    1511         __(movq %imm1,%rcontext:tcr.save_tsp)
    1512         __(movq %imm1,%rcontext:tcr.next_tsp)       
     1511        __(movq %imm1,rcontext(tcr.save_tsp))
     1512        __(movq %imm1,rcontext(tcr.next_tsp))       
    15131513        __(movd %mm1,%imm0)
    15141514        __(jmp local_label(_nthrow1v_nextframe))
    15151515local_label(_nthrow1v_done):
    1516         __(movb $0,%rcontext:tcr.unwinding)
     1516        __(movb $0,rcontext(tcr.unwinding))
    15171517        __(check_pending_interrupt(%imm0))
    15181518local_label(_nthrow1v_return): 
     
    15251525_spentry(bind)
    15261526        __(movq symbol.binding_index(%arg_y),%temp0)
    1527         __(cmpq %rcontext:tcr.tlb_limit,%temp0)
     1527        __(cmpq rcontext(tcr.tlb_limit),%temp0)
    15281528        __(jb,pt 0f)
    15291529        __(push %temp0)
     
    153115310:      __(testq %temp0,%temp0)
    15321532        __(jz 9f)
    1533         __(movq %rcontext:tcr.tlb_pointer,%temp1)
     1533        __(movq rcontext(tcr.tlb_pointer),%temp1)
    15341534        __(push (%temp1,%temp0))
    15351535        __(push %temp0)
    1536         __(push %rcontext:tcr.db_link)
    1537         __(movq %rsp,%rcontext:tcr.db_link)
     1536        __(push rcontext(tcr.db_link))
     1537        __(movq %rsp,rcontext(tcr.db_link))
    15381538        __(movq %arg_z,(%temp1,%temp0))
    15391539        __(jmp *%ra0)
     
    15501550_spentry(bind_self)
    15511551        __(movq symbol.binding_index(%arg_z),%temp0)
    1552         __(cmpq %rcontext:tcr.tlb_limit,%temp0)
     1552        __(cmpq rcontext(tcr.tlb_limit),%temp0)
    15531553        __(jb,pt 0f)
    15541554        __(push %temp0)
     
    155615560:      __(testq %temp0,%temp0)
    15571557        __(jz 9f)
    1558         __(movq %rcontext:tcr.tlb_pointer,%temp1)
     1558        __(movq rcontext(tcr.tlb_pointer),%temp1)
    15591559        __(cmpb $no_thread_local_binding_marker,(%temp0,%temp1))
    15601560        __(jz 2f)
    15611561        __(push (%temp1,%temp0))
    15621562        __(push %temp0)
    1563         __(push %rcontext:tcr.db_link)
    1564         __(movq %rsp,%rcontext:tcr.db_link)
     1563        __(push rcontext(tcr.db_link))
     1564        __(movq %rsp,rcontext(tcr.db_link))
    15651565        __(jmp *%ra0)
    156615662:      __(movq symbol.vcell(%arg_z),%arg_y)
    15671567        __(push (%temp1,%temp0))
    15681568        __(push %temp0)
    1569         __(push %rcontext:tcr.db_link)
     1569        __(push rcontext(tcr.db_link))
    15701570        __(movq %arg_y,(%temp1,%temp0))
    1571         __(movq %rsp,%rcontext:tcr.db_link)
     1571        __(movq %rsp,rcontext(tcr.db_link))
    15721572        __(jmp *%ra0)
    157315739:      __(movq $XSYMNOBIND,%arg_y)
     
    15791579_spentry(bind_nil)
    15801580        __(movq symbol.binding_index(%arg_z),%temp0)
    1581         __(cmpq %rcontext:tcr.tlb_limit,%temp0)
     1581        __(cmpq rcontext(tcr.tlb_limit),%temp0)
    15821582        __(jb,pt 0f)
    15831583        __(push %temp0)
     
    158515850:      __(testq %temp0,%temp0)
    15861586        __(jz 9f)
    1587         __(movq %rcontext:tcr.tlb_pointer,%temp1)
     1587        __(movq rcontext(tcr.tlb_pointer),%temp1)
    15881588        __(push (%temp1,%temp0))
    15891589        __(push %temp0)
    1590         __(push %rcontext:tcr.db_link)
    1591         __(movq %rsp,%rcontext:tcr.db_link)
     1590        __(push rcontext(tcr.db_link))
     1591        __(movq %rsp,rcontext(tcr.db_link))
    15921592        __(movq $nil_value,(%temp1,%temp0))
    15931593        __(jmp *%ra0)
     
    16001600_spentry(bind_self_boundp_check)
    16011601        __(movq symbol.binding_index(%arg_z),%temp0)
    1602         __(cmpq %rcontext:tcr.tlb_limit,%temp0)
     1602        __(cmpq rcontext(tcr.tlb_limit),%temp0)
    16031603        __(jb,pt 0f)
    16041604        __(push %temp0)
     
    160616060:      __(testq %temp0,%temp0)
    16071607        __(jz 9f)
    1608         __(movq %rcontext:tcr.tlb_pointer,%temp1)
     1608        __(movq rcontext(tcr.tlb_pointer),%temp1)
    16091609        __(cmpb $no_thread_local_binding_marker,(%temp1,%temp0))
    16101610        __(je 2f)
     
    16131613        __(push (%temp1,%temp0))
    16141614        __(push %temp0)
    1615         __(push %rcontext:tcr.db_link)
    1616         __(movq %rsp,%rcontext:tcr.db_link)
     1615        __(push rcontext(tcr.db_link))
     1616        __(movq %rsp,rcontext(tcr.db_link))
    16171617        __(jmp *%ra0)
    161816182:      __(movq symbol.vcell(%arg_z),%arg_y)
     
    16211621        __(push (%temp1,%temp0))
    16221622        __(push %temp0)
    1623         __(push %rcontext:tcr.db_link)
    1624         __(movq %rsp,%rcontext:tcr.db_link)
     1623        __(push rcontext(tcr.db_link))
     1624        __(movq %rsp,rcontext(tcr.db_link))
    16251625        __(movq %arg_y,(%temp1,%temp0))
    16261626        __(jmp *%ra0)
     
    19521952        __(TSP_Alloc_Var(%imm1,%temp0))
    19531953        __(movq %imm0,(%temp0))
    1954         __(movq %rcontext:tcr.db_link,%temp1)
     1954        __(movq rcontext(tcr.db_link),%temp1)
    195519553:      __(movl $unbound_marker,%temp0_l)
    19561956        __(compare_reg_to_nil(%arg_z))
     
    19601960        __(_cdr(%arg_y,%arg_y))
    19611961        __(movq symbol.binding_index(%arg_x),%arg_x)
    1962         __(cmp %rcontext:tcr.tlb_limit,%arg_x)
     1962        __(cmp rcontext(tcr.tlb_limit),%arg_x)
    19631963        __(jb,pt 4f)
    19641964        __(push %arg_x)
    19651965        __(tlb_too_small())
    1966 4:      __(movq %rcontext:tcr.tlb_pointer,%imm0)
     19664:      __(movq rcontext(tcr.tlb_pointer),%imm0)
    19671967        __(subq $binding.size,%imm1)
    19681968        __(compare_reg_to_nil(%arg_y))
     
    19741974        __(movq %imm1,%temp1)
    19751975        __(jne 3b)
    1976         __(movq %temp1,%rcontext:tcr.db_link)
     1976        __(movq %temp1,rcontext(tcr.db_link))
    19771977        __(ret)
    19781978_endsubp(progvsave)
     
    20282028        __(cmpq $tstack_alloc_limit,%imm1)
    20292029        __(ja local_label(stack_misc_alloc_heap_alloc_ivector))
    2030         __(movq %rcontext:tcr.foreign_sp,%stack_temp)
     2030        __(movq rcontext(tcr.foreign_sp),%stack_temp)
    20312031        __(movd %stack_temp,%temp1)
    2032         __(subq %imm1,%rcontext:tcr.foreign_sp)
    2033         __(movq %rcontext:tcr.foreign_sp,%temp0)
     2032        __(subq %imm1,rcontext(tcr.foreign_sp))
     2033        __(movq rcontext(tcr.foreign_sp),%temp0)
    203420340:      __(movapd %fpzero,-dnode_size(%temp1))
    20352035        __(subq $dnode_size,%temp1)
     
    20422042        __(ret)
    20432043local_label(stack_misc_alloc_heap_alloc_ivector):
    2044         __(movq %rcontext:tcr.foreign_sp,%imm1)
    2045         __(subq $dnode_size,%rcontext:tcr.foreign_sp)
    2046         __(movq %rcontext:tcr.foreign_sp,%imm0)
     2044        __(movq rcontext(tcr.foreign_sp),%imm1)
     2045        __(subq $dnode_size,rcontext(tcr.foreign_sp))
     2046        __(movq rcontext(tcr.foreign_sp),%imm0)
    20472047        __(movq %imm1,(%imm0))
    20482048        __(jmp _SPmisc_alloc)   
     
    23202320        /* the function takes an &rest arg or because we need to signal an  */
    23212321        /* "unknown keywords" error   */
    2322 1:      __(movq %rcontext:tcr.save_tsp,%arg_z)
     23221:      __(movq rcontext(tcr.save_tsp),%arg_z)
    23232323        __(mov (%arg_z),%arg_y)
    23242324        __(jmp 3f)
     
    26392639        __(cmpq $tstack_alloc_limit,%imm0)
    26402640        __(jae 1f)
    2641         __(movq %rcontext:tcr.foreign_sp,%imm1)
    2642         __(subq %imm0,%rcontext:tcr.foreign_sp)
    2643         __(movq %rcontext:tcr.foreign_sp,%arg_z)
     2641        __(movq rcontext(tcr.foreign_sp),%imm1)
     2642        __(subq %imm0,rcontext(tcr.foreign_sp))
     2643        __(movq rcontext(tcr.foreign_sp),%arg_z)
    26442644        __(movq %imm1,(%arg_z))
    26452645        __(movq %rbp,csp_frame.save_rbp(%arg_z))
     
    26512651        __(movsd %fpzero,macptr.type(%arg_z))
    26522652        __(ret)
    2653 1:      __(movq %rcontext:tcr.foreign_sp,%imm1)
    2654         __(subq $dnode_size,%rcontext:tcr.foreign_sp)
    2655         __(movq %rcontext:tcr.foreign_sp,%imm0)
     26531:      __(movq rcontext(tcr.foreign_sp),%imm1)
     2654        __(subq $dnode_size,rcontext(tcr.foreign_sp))
     2655        __(movq rcontext(tcr.foreign_sp),%imm0)
    26562656        __(movq %imm1,(%imm0))
    26572657        __(movq %rbp,csp_frame.save_rbp(%imm0))
     
    26662666        __(cmpq $tstack_alloc_limit,%imm0)
    26672667        __(jae 9f)
    2668         __(movq %rcontext:tcr.foreign_sp,%imm1)
    2669         __(subq %imm0,%rcontext:tcr.foreign_sp)
    2670         __(movq %rcontext:tcr.foreign_sp,%arg_z)
     2668        __(movq rcontext(tcr.foreign_sp),%imm1)
     2669        __(subq %imm0,rcontext(tcr.foreign_sp))
     2670        __(movq rcontext(tcr.foreign_sp),%arg_z)
    26712671        __(movq %imm1,(%arg_z))
    26722672        __(movq %rbp,csp_frame.save_rbp(%arg_z))
     
    26832683        __(jne 1b)             
    26842684        __(repret)
    2685 9:      __(movq %rcontext:tcr.foreign_sp,%imm1)
    2686         __(subq $dnode_size,%rcontext:tcr.foreign_sp)
    2687         __(movq %rcontext:tcr.foreign_sp,%imm0)
     26859:      __(movq rcontext(tcr.foreign_sp),%imm1)
     2686        __(subq $dnode_size,rcontext(tcr.foreign_sp))
     2687        __(movq rcontext(tcr.foreign_sp),%imm0)
    26882688        __(movq %imm1,(%imm0))
    26892689        __(movq %rbp,csp_frame.save_rbp(%imm0))
     
    30543054
    30553055_spentry(save_values)
    3056         __(movq %rcontext:tcr.save_tsp,%imm1)
     3056        __(movq rcontext(tcr.save_tsp),%imm1)
    30573057/* common exit: nargs = values in this set, imm1 = ptr to tsp before call to save_values   */
    30583058local_label(save_values_to_tsp):
    3059         __(movq %rcontext:tcr.save_tsp,%arg_x)
     3059        __(movq rcontext(tcr.save_tsp),%arg_x)
    30603060        __(dnode_align(%nargs_q,tsp_frame.fixed_overhead+(2*node_size),%imm0)) /* count, link   */
    30613061        __(TSP_Alloc_Var(%imm0,%arg_z))
    3062         __(movq %rcontext:tcr.save_tsp,%imm0)
     3062        __(movq rcontext(tcr.save_tsp),%imm0)
    30633063        __(movq %imm1,(%imm0))
    30643064        __(movq %nargs_q,(%arg_z))
     
    30873087_spentry(add_values)
    30883088        __(testl %nargs,%nargs)
    3089         __(movq %rcontext:tcr.save_tsp,%imm1)
     3089        __(movq rcontext(tcr.save_tsp),%imm1)
    30903090        __(movq (%imm1),%imm1)
    30913091        __(jne local_label(save_values_to_tsp))
     
    31003100        /* segment pointers Can tell the end because that previous  */
    31013101        /* segment pointer is the prev tsp pointer   */
    3102         __(movq %rcontext:tcr.save_tsp,%temp1)
     3102        __(movq rcontext(tcr.save_tsp),%temp1)
    31033103        __(movq %temp1,%arg_x)  /* current segment   */
    31043104        __(movq %temp1,%arg_y)  /* last segment   */
     
    31283128        __(jne local_label(pushloop))
    31293129        __(movq (%temp1),%temp1)
    3130         __(movq %temp1,%rcontext:tcr.save_tsp)
    3131         __(movq %temp1,%rcontext:tcr.next_tsp)       
     3130        __(movq %temp1,rcontext(tcr.save_tsp))
     3131        __(movq %temp1,rcontext(tcr.next_tsp))       
    31323132        __(jmp *%ra0)           
    31333133_endsubp(recover_values)
     
    31433143        /* segment pointer is the prev tsp pointer   */
    31443144        __(xorl %nargs,%nargs)
    3145         __(movq %rcontext:tcr.save_tsp,%temp1)
     3145        __(movq rcontext(tcr.save_tsp),%temp1)
    31463146        __(movq %temp1,%arg_x)  /* current segment   */
    31473147        __(movq %temp1,%arg_y)  /* last segment   */
     
    31763176        __(jne local_label(pushloop_mvcall))
    31773177        __(movq (%temp1),%temp1)
    3178         __(movq %temp1,%rcontext:tcr.save_tsp)
    3179         __(movq %temp1,%rcontext:tcr.next_tsp)       
     3178        __(movq %temp1,rcontext(tcr.save_tsp))
     3179        __(movq %temp1,rcontext(tcr.next_tsp))       
    31803180        __(jmp *%ra0)           
    31813181_endsubp(recover_values_for_mvcall)
     
    33093309_spentry(specref)
    33103310        __(movq symbol.binding_index(%arg_z),%imm0)
    3311         __(cmp %rcontext:tcr.tlb_limit,%imm0)
    3312         __(movq %rcontext:tcr.tlb_pointer,%imm1)
     3311        __(cmp rcontext(tcr.tlb_limit),%imm0)
     3312        __(movq rcontext(tcr.tlb_pointer),%imm1)
    33133313        __(movq %arg_z,%arg_y)
    33143314        __(jae 7f)
     
    33233323_spentry(specset)
    33243324        __(movq symbol.binding_index(%arg_y),%imm0)
    3325         __(cmp %rcontext:tcr.tlb_limit,%imm0)
    3326         __(movq %rcontext:tcr.tlb_pointer,%imm1)
     3325        __(cmp rcontext(tcr.tlb_limit),%imm0)
     3326        __(movq rcontext(tcr.tlb_pointer),%imm1)
    33273327        __(jae 1f)
    33283328        __(movq (%imm1,%imm0),%arg_x)
     
    33383338_spentry(specrefcheck)
    33393339        __(movq symbol.binding_index(%arg_z),%imm0)
    3340         __(cmp %rcontext:tcr.tlb_limit,%imm0)
    3341         __(movq %rcontext:tcr.tlb_pointer,%imm1)
     3340        __(cmp rcontext(tcr.tlb_limit),%imm0)
     3341        __(movq rcontext(tcr.tlb_pointer),%imm1)
    33423342        __(movq %arg_z,%arg_y)
    33433343        __(jae 7f)
     
    33803380
    33813381_spentry(unbind)
    3382         __(movq %rcontext:tcr.db_link,%imm1)
    3383         __(movq %rcontext:tcr.tlb_pointer,%arg_x)
     3382        __(movq rcontext(tcr.db_link),%imm1)
     3383        __(movq rcontext(tcr.tlb_pointer),%arg_x)
    33843384        __(movq binding.sym(%imm1),%temp1)
    33853385        __(movq binding.val(%imm1),%arg_y)
    33863386        __(movq binding.link(%imm1),%imm1)
    33873387        __(movq %arg_y,(%arg_x,%temp1))
    3388         __(movq %imm1,%rcontext:tcr.db_link)
     3388        __(movq %imm1,rcontext(tcr.db_link))
    33893389        __(ret)
    33903390_endsubp(unbind)
    33913391
    33923392_spentry(unbind_n)
    3393         __(movq %rcontext:tcr.db_link,%imm1)
    3394         __(movq %rcontext:tcr.tlb_pointer,%arg_x)
     3393        __(movq rcontext(tcr.db_link),%imm1)
     3394        __(movq rcontext(tcr.tlb_pointer),%arg_x)
    339533951:             
    33963396        __(movq binding.sym(%imm1),%temp1)
     
    34003400        __(subq $1,%imm0)
    34013401        __(jne 1b)
    3402         __(movq %imm1,%rcontext:tcr.db_link)
     3402        __(movq %imm1,rcontext(tcr.db_link))
    34033403        __(ret)
    34043404_endsubp(unbind_n)
    34053405
    34063406_spentry(unbind_to)
    3407         __(movq %rcontext:tcr.db_link,%imm1)
    3408         __(movq %rcontext:tcr.tlb_pointer,%arg_x)
     3407        __(movq rcontext(tcr.db_link),%imm1)
     3408        __(movq rcontext(tcr.tlb_pointer),%arg_x)
    340934091:             
    34103410        __(movq binding.sym(%imm1),%temp1)
     
    34143414        __(cmpq %imm1,%imm0)
    34153415        __(jne 1b)
    3416         __(movq %imm1,%rcontext:tcr.db_link)
     3416        __(movq %imm1,rcontext(tcr.db_link))
    34173417        __(ret)
    34183418_endsubp(unbind_to)
     
    34233423       
    34243424_spentry(bind_interrupt_level_0)
    3425         __(movq %rcontext:tcr.tlb_pointer,%temp1)
     3425        __(movq rcontext(tcr.tlb_pointer),%temp1)
    34263426        __(cmpq $0,INTERRUPT_LEVEL_BINDING_INDEX(%temp1))
    34273427        __(push INTERRUPT_LEVEL_BINDING_INDEX(%temp1))
    34283428        __(push $INTERRUPT_LEVEL_BINDING_INDEX)
    3429         __(push %rcontext:tcr.db_link)
    3430         __(movq %rsp,%rcontext:tcr.db_link)
     3429        __(push rcontext(tcr.db_link))
     3430        __(movq %rsp,rcontext(tcr.db_link))
    34313431        __(movq $0,INTERRUPT_LEVEL_BINDING_INDEX(%temp1))
    34323432        __(js,pn 1f)
     
    34423442
    34433443_spentry(bind_interrupt_level_m1)
    3444         __(movq %rcontext:tcr.tlb_pointer,%temp1)
     3444        __(movq rcontext(tcr.tlb_pointer),%temp1)
    34453445        __(push INTERRUPT_LEVEL_BINDING_INDEX(%temp1))
    34463446        __(push $INTERRUPT_LEVEL_BINDING_INDEX)
    3447         __(push %rcontext:tcr.db_link)
    3448         __(movq %rsp,%rcontext:tcr.db_link)
     3447        __(push rcontext(tcr.db_link))
     3448        __(movq %rsp,rcontext(tcr.db_link))
    34493449        __(movq $-1<<fixnumshift,INTERRUPT_LEVEL_BINDING_INDEX(%temp1))
    34503450        __(jmp *%ra0)
     
    34553455_spentry(bind_interrupt_level)
    34563456        __(testq %arg_z,%arg_z)
    3457         __(movq %rcontext:tcr.tlb_pointer,%temp1)
     3457        __(movq rcontext(tcr.tlb_pointer),%temp1)
    34583458        __(jz _SPbind_interrupt_level_0)
    34593459        __(push INTERRUPT_LEVEL_BINDING_INDEX(%temp1))
    34603460        __(push $INTERRUPT_LEVEL_BINDING_INDEX)
    3461         __(push %rcontext:tcr.db_link)
    3462         __(movq %rsp,%rcontext:tcr.db_link)
     3461        __(push rcontext(tcr.db_link))
     3462        __(movq %rsp,rcontext(tcr.db_link))
    34633463        __(movq %arg_z,INTERRUPT_LEVEL_BINDING_INDEX(%temp1))
    34643464        __(jmp *%ra0)
     
    34693469       
    34703470_spentry(unbind_interrupt_level)
    3471         __(btq $TCR_FLAG_BIT_PENDING_SUSPEND,%rcontext:tcr.flags)
    3472         __(movq %rcontext:tcr.db_link,%imm1)
    3473         __(movq %rcontext:tcr.tlb_pointer,%arg_x)
     3471        __(btq $TCR_FLAG_BIT_PENDING_SUSPEND,rcontext(tcr.flags))
     3472        __(movq rcontext(tcr.db_link),%imm1)
     3473        __(movq rcontext(tcr.tlb_pointer),%arg_x)
    34743474        __(movq INTERRUPT_LEVEL_BINDING_INDEX(%arg_x),%imm0)
    34753475        __(jc 5f)
     
    34783478        __(movq binding.link(%imm1),%imm1)
    34793479        __(movq %temp0,INTERRUPT_LEVEL_BINDING_INDEX(%arg_x))
    3480         __(movq %imm1,%rcontext:tcr.db_link)
     3480        __(movq %imm1,rcontext(tcr.db_link))
    34813481        __(js,pn 3f)
    348234822:      __(repret)
     
    34993499       
    35003500_spentry(progvrestore)
    3501         __(movq %rcontext:tcr.save_tsp,%imm0)
     3501        __(movq rcontext(tcr.save_tsp),%imm0)
    35023502        __(movq tsp_frame.backlink(%imm0),%imm0) /* ignore .SPnthrowXXX values frame   */
    35033503        __(movq tsp_frame.data_offset(%imm0),%imm0)
     
    39363936        __(push %save2)
    39373937        __(push %save3)         /* 10 registers pushed after %rbp */
    3938         __(movq %rsp,%rcontext:tcr.save_vsp)
    3939         __(movq %rbp,%rcontext:tcr.save_rbp)
    3940         __(movq $TCR_STATE_FOREIGN,%rcontext:tcr.valence)
    3941         __(movq %rcontext:tcr.foreign_sp,%rsp)
    3942         __(stmxcsr %rcontext:tcr.lisp_mxcsr)
     3938        __(movq %rsp,rcontext(tcr.save_vsp))
     3939        __(movq %rbp,rcontext(tcr.save_rbp))
     3940        __(movq $TCR_STATE_FOREIGN,rcontext(tcr.valence))
     3941        __(movq rcontext(tcr.foreign_sp),%rsp)
     3942        __(stmxcsr rcontext(tcr.lisp_mxcsr))
    39433943        __(emms)
    3944         __(ldmxcsr %rcontext:tcr.foreign_mxcsr)
     3944        __(ldmxcsr rcontext(tcr.foreign_mxcsr))
    39453945        __(movq (%rsp),%rbp)
    39463946        __ifdef([DARWIN_GS_HACK])
     
    39863986         __(movq %save2,%rdx)
    39873987        __endif
    3988         __(movq %rsp,%rcontext:tcr.foreign_sp)       
     3988        __(movq %rsp,rcontext(tcr.foreign_sp))       
    39893989        __(clr %save3)
    39903990        __(clr %save2)
     
    40024002           about causing spurious FP exceptions */
    40034003        __ifdef([DARWIN])
    4004          __(movl %arg_x_l,%rcontext:tcr.ffi_exception)
     4004         __(movl %arg_x_l,rcontext(tcr.ffi_exception))
    40054005        __else
    4006          __(stmxcsr %rcontext:tcr.ffi_exception)
     4006         __(stmxcsr rcontext(tcr.ffi_exception))
    40074007        __endif
    4008         __(movq %rcontext:tcr.save_vsp,%rsp)
    4009         __(movq %rcontext:tcr.save_rbp,%rbp)
    4010         __(movq $TCR_STATE_LISP,%rcontext:tcr.valence)
     4008        __(movq rcontext(tcr.save_vsp),%rsp)
     4009        __(movq rcontext(tcr.save_rbp),%rbp)
     4010        __(movq $TCR_STATE_LISP,rcontext(tcr.valence))
    40114011        __(pop %save3)
    40124012        __(pop %save2)
     
    40194019        __(pop %temp2)
    40204020        __(pop %temp1)
    4021         __(ldmxcsr %rcontext:tcr.lisp_mxcsr)
     4021        __(ldmxcsr rcontext(tcr.lisp_mxcsr))
    40224022        __(check_pending_interrupt(%temp0))
    40234023        __(pop %temp0)
    40244024        __(leave)
    40254025        __ifdef([DARWIN])
    4026         __(btrq $TCR_FLAG_BIT_FOREIGN_EXCEPTION,%rcontext:tcr.flags)
     4026        __(btrq $TCR_FLAG_BIT_FOREIGN_EXCEPTION,rcontext(tcr.flags))
    40274027        __(jc,pn 0f)
    40284028        __endif
     
    41344134        __(movq macptr.address(%arg_y),%rbx)  /* %rbx non-volatile */
    41354135        __(push %fn)
    4136         __(movq %rsp,%rcontext:tcr.save_vsp)
    4137         __(movq %rbp,%rcontext:tcr.save_rbp)
    4138         __(movq $TCR_STATE_FOREIGN,%rcontext:tcr.valence)
    4139         __(movq %rcontext:tcr.foreign_sp,%rsp)
    4140         __(stmxcsr %rcontext:tcr.lisp_mxcsr)
     4136        __(movq %rsp,rcontext(tcr.save_vsp))
     4137        __(movq %rbp,rcontext(tcr.save_rbp))
     4138        __(movq $TCR_STATE_FOREIGN,rcontext(tcr.valence))
     4139        __(movq rcontext(tcr.foreign_sp),%rsp)
     4140        __(stmxcsr rcontext(tcr.lisp_mxcsr))
    41414141        __(emms)
    4142         __(ldmxcsr %rcontext:tcr.foreign_mxcsr)
     4142        __(ldmxcsr rcontext(tcr.foreign_mxcsr))
    41434143        __(movq (%rsp),%rbp)
    41444144        __ifdef([DARWIN_GS_HACK])
     
    41884188         __(movsd 24(%save2),%xmm1)
    41894189        __endif
    4190         __(movq %rsp,%rcontext:tcr.foreign_sp)       
     4190        __(movq %rsp,rcontext(tcr.foreign_sp))       
    41914191        __(clr %save3)
    41924192        __(clr %save2)
     
    42044204           about causing spurious FP exceptions */
    42054205        __ifdef([DARWIN])
    4206          __(movl %arg_x_l,%rcontext:tcr.ffi_exception)
     4206         __(movl %arg_x_l,rcontext(tcr.ffi_exception))
    42074207        __else
    4208          __(stmxcsr %rcontext:tcr.ffi_exception)
     4208         __(stmxcsr rcontext(tcr.ffi_exception))
    42094209        __endif
    4210         __(movq %rcontext:tcr.save_vsp,%rsp)
    4211         __(movq %rcontext:tcr.save_rbp,%rbp)
    4212         __(movq $TCR_STATE_LISP,%rcontext:tcr.valence)
     4210        __(movq rcontext(tcr.save_vsp),%rsp)
     4211        __(movq rcontext(tcr.save_rbp),%rbp)
     4212        __(movq $TCR_STATE_LISP,rcontext(tcr.valence))
    42134213        __(pop %fn)
    42144214        __(pop %save3)
     
    42214221        __(pop %temp2)
    42224222        __(pop %temp1)
    4223         __(ldmxcsr %rcontext:tcr.lisp_mxcsr)
     4223        __(ldmxcsr rcontext(tcr.lisp_mxcsr))
    42244224        __(check_pending_interrupt(%temp0))
    42254225        __(pop %temp0)
    42264226        __(leave)
    42274227        __ifdef([DARWIN])
    4228         __(btrq $TCR_FLAG_BIT_FOREIGN_EXCEPTION,%rcontext:tcr.flags)
     4228        __(btrq $TCR_FLAG_BIT_FOREIGN_EXCEPTION,rcontext(tcr.flags))
    42294229        __(jc,pn 0f)
    42304230        __endif
     
    43274327        __(push %save3)
    43284328        __(push %fn)
    4329         __(movq %rsp,%rcontext:tcr.save_vsp)
    4330         __(movq %rbp,%rcontext:tcr.save_rbp)
    4331         __(movq $TCR_STATE_FOREIGN,%rcontext:tcr.valence)
    4332         __(movq %rcontext:tcr.foreign_sp,%rsp)
     4329        __(movq %rsp,rcontext(tcr.save_vsp))
     4330        __(movq %rbp,rcontext(tcr.save_rbp))
     4331        __(movq $TCR_STATE_FOREIGN,rcontext(tcr.valence))
     4332        __(movq rcontext(tcr.foreign_sp),%rsp)
    43334333        __(emms)
    43344334        __(movq (%rsp),%rbp)
     
    43484348        __endif       
    43494349        __(movq %rbp,%rsp)
    4350         __(movq %rsp,%rcontext:tcr.foreign_sp)       
     4350        __(movq %rsp,rcontext(tcr.foreign_sp))       
    43514351        __(clr %save3)
    43524352        __(clr %save2)
     
    43614361        __(clr %fn)
    43624362        __(pxor %fpzero,%fpzero)
    4363         __(movq %rcontext:tcr.save_vsp,%rsp)
    4364         __(movq %rcontext:tcr.save_rbp,%rbp)
    4365         __(movq $TCR_STATE_LISP,%rcontext:tcr.valence)
     4363        __(movq rcontext(tcr.save_vsp),%rsp)
     4364        __(movq rcontext(tcr.save_rbp),%rbp)
     4365        __(movq $TCR_STATE_LISP,rcontext(tcr.valence))
    43664366        __(pop %fn)
    43674367        __(pop %save3)
     
    44994499        __(movq %r12,%r11)
    450045001:      /* Align foreign stack for lisp   */
    4501         __(pushq %rcontext:tcr.save_rbp) /* mark cstack frame's "owner" */
    4502         __(pushq %rcontext:tcr.foreign_sp)
     4501        __(pushq rcontext(tcr.save_rbp)) /* mark cstack frame's "owner" */
     4502        __(pushq rcontext(tcr.foreign_sp))
    45034503        /* init lisp registers   */
    45044504        __(movq %r11,%rax)
    4505         __(movq %rsp,%rcontext:tcr.foreign_sp)
     4505        __(movq %rsp,rcontext(tcr.foreign_sp))
    45064506        __(clr %save3)
    45074507        __(clr %save2)
     
    45164516        __(clr %fn)
    45174517        __(pxor %fpzero,%fpzero)
    4518         __(movq %rcontext:tcr.save_vsp,%rsp)
     4518        __(movq rcontext(tcr.save_vsp),%rsp)
    45194519        __(box_fixnum(%rax,%arg_y))
    45204520        __(movq %rbp,%arg_z)
    4521         __(movq %rcontext:tcr.save_rbp,%rbp)
    4522         __(movq $TCR_STATE_LISP,%rcontext:tcr.valence)
     4521        __(movq rcontext(tcr.save_rbp),%rbp)
     4522        __(movq $TCR_STATE_LISP,rcontext(tcr.valence))
    45234523        __(movq (%rsp),%save3)
    45244524        __(movq 8(%rsp),%save2)
    45254525        __(movq 16(%rsp),%save1)
    45264526        __(movq 24(%rsp),%save0)
    4527         __(stmxcsr %rcontext:tcr.foreign_mxcsr)
    4528         __(andb $~mxcsr_all_exceptions,%rcontext:tcr.foreign_mxcsr)
    4529         __(ldmxcsr %rcontext:tcr.lisp_mxcsr)
     4527        __(stmxcsr rcontext(tcr.foreign_mxcsr))
     4528        __(andb $~mxcsr_all_exceptions,rcontext(tcr.foreign_mxcsr))
     4529        __(ldmxcsr rcontext(tcr.lisp_mxcsr))
    45304530        __(movq $nrs.callbacks,%fname)
    45314531        __(lea local_label(back_from_callback)(%rip),%ra0)
     
    45344534        __(jump_fname())
    45354535__(tra(local_label(back_from_callback)))
    4536         __(movq %rsp,%rcontext:tcr.save_vsp)
    4537         __(movq %rbp,%rcontext:tcr.save_rbp)
    4538         __(movq %rcontext:tcr.foreign_sp,%rsp)
    4539         __(stmxcsr %rcontext:tcr.lisp_mxcsr)
    4540         __(movq $TCR_STATE_FOREIGN,%rcontext:tcr.valence)
     4536        __(movq %rsp,rcontext(tcr.save_vsp))
     4537        __(movq %rbp,rcontext(tcr.save_rbp))
     4538        __(movq rcontext(tcr.foreign_sp),%rsp)
     4539        __(stmxcsr rcontext(tcr.lisp_mxcsr))
     4540        __(movq $TCR_STATE_FOREIGN,rcontext(tcr.valence))
    45414541        __(emms)
    4542         __(pop %rcontext:tcr.foreign_sp)
     4542        __(pop rcontext(tcr.foreign_sp))
    45434543        __(addq $node_size,%rsp)
    4544         __(ldmxcsr %rcontext:tcr.foreign_mxcsr)
     4544        __(ldmxcsr rcontext(tcr.foreign_mxcsr))
    45454545        __ifdef([DARWIN_GS_HACK])
    45464546         /* Lucky us; nothing is live here */
  • trunk/source/lisp-kernel/x86-subprims64.s

    r8224 r8562  
    3737        __(push $0)
    3838        __(push $0)
    39         __(movq %rsp,%rcontext:tcr.foreign_sp)
    40         __(movq %rcontext:tcr.save_vsp,%rsp)
     39        __(movq %rsp,rcontext(tcr.foreign_sp))
     40        __(movq rcontext(tcr.save_vsp),%rsp)
    4141        __(push $0)
    4242        __(movq %rsp,%rbp)
     
    6767local_label(back_to_c):
    6868        __(discard_temp_frame(%imm0))
    69         __(movq %rcontext:tcr.foreign_sp,%rsp)
     69        __(movq rcontext(tcr.foreign_sp),%rsp)
    7070        __(addq $dnode_size,%rsp)
    7171        __(movq %rsp,%rbp)
     
    110110        __(clr %save3)
    111111        __(pxor %fpzero,%fpzero)        /* fpzero = 0.0[d0] */
    112         __(stmxcsr %rcontext:tcr.foreign_mxcsr)
    113         __(andb $~mxcsr_all_exceptions,%rcontext:tcr.foreign_mxcsr)
    114         __(ldmxcsr %rcontext:tcr.lisp_mxcsr)
    115         __(movq $TCR_STATE_LISP,%rcontext:tcr.valence)
     112        __(stmxcsr rcontext(tcr.foreign_mxcsr))
     113        __(andb $~mxcsr_all_exceptions,rcontext(tcr.foreign_mxcsr))
     114        __(ldmxcsr rcontext(tcr.lisp_mxcsr))
     115        __(movq $TCR_STATE_LISP,rcontext(tcr.valence))
    116116        __(call toplevel_loop)
    117         __(movq $TCR_STATE_FOREIGN,%rcontext:tcr.valence)
     117        __(movq $TCR_STATE_FOREIGN,rcontext(tcr.valence))
    118118        __(emms)
    119119        __(addq $8,%rsp)        /* discard alignment word */
     
    123123        __(pop %r12)
    124124        __(pop %rbx)
    125         __(ldmxcsr %rcontext:tcr.foreign_mxcsr)
     125        __(ldmxcsr rcontext(tcr.foreign_mxcsr))
    126126        __ifdef([DARWIN_GS_HACK])
    127127         __(set_foreign_gs_base)
Note: See TracChangeset for help on using the changeset viewer.