Changeset 9992


Ignore:
Timestamp:
Jul 10, 2008, 10:01:46 AM (11 years ago)
Author:
gb
Message:

rme's fixes from trunk: CISC bitvector ops, fixes to progvsave,
stack_cons_rest_arg.
Treat nargs as 32-bit register.

File:
1 edited

Legend:

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

    r9337 r9992  
    558558local_label(misc_ref_bit_vector):
    559559        __(unbox_fixnum(%arg_z,%imm0))
    560         __(movl $63,%imm1_l)
    561         __(andb %imm0_b,%imm1_b)
    562         __(shrq $6,%imm0)
    563         __(btq %imm1,misc_data_offset(%arg_y,%imm0,8))
     560        __(btq %imm0,misc_data_offset(%arg_y))
    564561        __(setc %imm0_b)
    565         __(negb %imm0_b)
    566         __(andl $fixnum_one,%imm0_l)
    567         __(movq %imm0,%arg_z)
     562        __(movzbl %imm0_b,%imm0_l)
     563        __(imull $fixnumone,%imm0_l,%arg_z_l)
    568564        __(ret)
    569565local_label(misc_ref_invalid):
     
    10231019        __(testq $~fixnumone,%arg_z)
    10241020        __(jne local_label(misc_set_bad))
    1025         __(unbox_fixnum(%arg_y,%imm1))
    1026         __(movzbl %imm1_b,%imm0_l)
    1027         __(andb $63,%imm0_b)
    1028         __(shrq $6,%imm1)
     1021        __(unbox_fixnum(%arg_y,%imm0))
    10291022        __(testb %arg_z_b,%arg_z_b)
    10301023        __(je local_label(misc_set_clr_bit))
    10311024local_label(misc_set_set_bit): 
    1032         __(btsq %imm0,misc_data_offset(%arg_x,%imm1,8))
     1025        __(btsq %imm0,misc_data_offset(%arg_x))
    10331026        __(ret)
    10341027local_label(misc_set_clr_bit): 
    1035         __(btrq %imm0,misc_data_offset(%arg_x,%imm1,8))
     1028        __(btrq %imm0,misc_data_offset(%arg_x))
    10361029        __(ret)
    10371030local_label(misc_set_u8):       
     
    11211114        __(cmpq lisp_frame.savera0(%rbp),%temp1)
    11221115        __(je 1f)
    1123         __(testw %nargs,%nargs)
    1124         __(movzwl %nargs,%nargs_l)
     1116        __(testl %nargs,%nargs)
    11251117        __(movl $nil_value,%arg_z_l)
    11261118        __(cmovneq -node_size(%rsp,%nargs_q),%arg_z)
     
    11311123/* actually need to return values ; always need to copy   */
    113211241:      __(leaq 2*node_size(%rbp),%imm1)
    1133         __(movzwl %nargs,%nargs_l)
    11341125        __(movq (%imm1),%ra0)
    11351126        __(addq $node_size,%imm1)
     
    114011312:      __(movq -node_size(%temp0),%temp1)
    11411132        __(subq $node_size,%temp0)
    1142         __(addq $node_size,%imm0)
     1133        __(addl $node_size,%imm0_l)
    11431134        __(movq %temp1,-node_size(%imm1))
    11441135        __(subq $node_size,%imm1)
    1145 3:      __(cmpw %imm0_w,%nargs)
     11363:      __(cmpl %imm0_l,%nargs)  ;
    11461137        __(jne 2b)
    11471138        __(movq %imm1,%rsp)
     
    11761167   double binding of *interrupt-level* out-of-line */
    11771168_spentry(nmkunwind)
    1178         __(movq %rcontext:tcr.tlb_pointer,%arg_x)
     1169        __(movq rcontext(tcr.tlb_pointer),%arg_x)
    11791170        __(movq INTERRUPT_LEVEL_BINDING_INDEX(%arg_x),%arg_y)
    11801171        __(push %arg_y)
    11811172        __(push $INTERRUPT_LEVEL_BINDING_INDEX)
    1182         __(push %rcontext:tcr.db_link)
    1183         __(movq %rsp,%rcontext:tcr.db_link)
     1173        __(push rcontext(tcr.db_link))
     1174        __(movq %rsp,rcontext(tcr.db_link))
    11841175        __(movq $-1<<fixnumshift,INTERRUPT_LEVEL_BINDING_INDEX(%arg_x))
    11851176        __(movq $undefined,%arg_z)
     
    11951186       
    11961187_spentry(throw)
    1197         __(movq %rcontext:tcr.catch_top,%imm1)
     1188        __(movq rcontext(tcr.catch_top),%imm1)
    11981189        __(xorl %imm0_l,%imm0_l)
    1199         __(movzwl %nargs,%nargs_l)
    12001190        __(movq (%rsp,%nargs_q),%temp0) /* temp0 = tag   */
    12011191        __(jmp local_label(_throw_test))
     
    12151205        __(testb $fulltagmask,catch_frame.mvflag(%imm1))
    12161206        __(jne local_label(_throw_multiple))
    1217         __(testw %nargs,%nargs)
     1207        __(testl %nargs,%nargs)
    12181208        __(movl $nil_value,%arg_z_l)
    12191209        __(je local_label(_throw_one_value))
     
    12241214        __(jmp _SPnthrow1value)
    12251215__(tra(local_label(_threw_one_value)))
    1226         __(movq %rcontext:tcr.catch_top,%temp0)
     1216        __(movq rcontext(tcr.catch_top),%temp0)
    12271217        __(movq catch_frame.db_link(%temp0),%imm0)
    1228         __(movq %rcontext:tcr.db_link,%imm1)
     1218        __(movq rcontext(tcr.db_link),%imm1)
    12291219        __(cmpq %imm0,%imm1)
    12301220        __(jz local_label(_threw_one_value_dont_unbind))
     
    12361226        __(movq catch_frame.foreign_sp(%temp0),%imm0)
    12371227        __(movq catch_frame.xframe(%temp0),%imm1)
    1238         __(movq %imm0,%rcontext:tcr.foreign_sp)
    1239         __(movq %imm1,%rcontext:tcr.xframe)
     1228        __(movq %imm0,rcontext(tcr.foreign_sp))
     1229        __(movq %imm1,rcontext(tcr.xframe))
    12401230        __(movq catch_frame.rsp(%temp0),%rsp)
    12411231        __(movq catch_frame.link(%temp0),%imm1)
     
    12431233        __(movq catch_frame._save1(%temp0),%save1)
    12441234        __(movq catch_frame._save2(%temp0),%save2)
     1235        __ifndef([WINDOWS])
    12451236        __(movq catch_frame._save3(%temp0),%save3)
    1246         __(movq %imm1,%rcontext:tcr.catch_top)
     1237        __endif
     1238        __(movq %imm1,rcontext(tcr.catch_top))
    12471239        __(movq catch_frame.pc(%temp0),%ra0)
    12481240        __(lea -(tsp_frame.fixed_overhead+fulltag_misc)(%temp0),%imm1)
    12491241        __(movq (%imm1),%imm1)
    1250         __(movq %imm1,%rcontext:tcr.save_tsp)
    1251         __(movq %imm1,%rcontext:tcr.next_tsp)
     1242        __(movq %imm1,rcontext(tcr.save_tsp))
     1243        __(movq %imm1,rcontext(tcr.next_tsp))
    12521244        __(jmp *%ra0)
    12531245local_label(_throw_multiple):
     
    12551247        __(jmp _SPnthrowvalues)
    12561248__(tra(local_label(_threw_multiple)))
    1257         __(movq %rcontext:tcr.catch_top,%temp0)
     1249        __(movq rcontext(tcr.catch_top),%temp0)
    12581250        __(movq catch_frame.db_link(%temp0),%imm0)
    1259         __(movq %rcontext:tcr.db_link,%imm1)
     1251        __(movq rcontext(tcr.db_link),%imm1)
    12601252        __(cmpq %imm0,%imm1)
    12611253        __(je local_label(_threw_multiple_dont_unbind))
     
    12791271        __(movq catch_frame.rbp(%temp0),%rbp)
    12801272        __(movq catch_frame.foreign_sp(%temp0),%imm0)
    1281         __(movq %imm0,%rcontext:tcr.foreign_sp)       
     1273        __(movq %imm0,rcontext(tcr.foreign_sp))       
    12821274        __(movq catch_frame.xframe(%temp0),%imm0)
    1283         __(movq %imm0,%rcontext:tcr.xframe)
     1275        __(movq %imm0,rcontext(tcr.xframe))
    12841276        __(movq %imm1,%rsp)
    12851277        __(movq catch_frame.link(%temp0),%imm1)         
     
    12871279        __(movq catch_frame._save1(%temp0),%save1)
    12881280        __(movq catch_frame._save2(%temp0),%save2)
     1281        __ifndef([WINDOWS])
    12891282        __(movq catch_frame._save3(%temp0),%save3)
    1290         __(movq %imm1,%rcontext:tcr.catch_top)
     1283        __endif
     1284        __(movq %imm1,rcontext(tcr.catch_top))
    12911285        __(movq catch_frame.pc(%temp0),%ra0)
    12921286        __(lea -(tsp_frame.fixed_overhead+fulltag_misc)(%temp0),%imm1)
    12931287        __(movq (%imm1),%imm1)
    1294         __(movq %imm1,%rcontext:tcr.save_tsp)
    1295         __(movq %imm1,%rcontext:tcr.next_tsp)
     1288        __(movq %imm1,rcontext(tcr.save_tsp))
     1289        __(movq %imm1,rcontext(tcr.next_tsp))
    12961290        __(jmp *%ra0)
    12971291_endsubp(throw)
     
    12991293/* This takes N multiple values atop the vstack.   */
    13001294_spentry(nthrowvalues)
    1301         __(movb $1,%rcontext:tcr.unwinding)
    1302         __(movzwl %nargs,%nargs_l)
     1295        __(movb $1,rcontext(tcr.unwinding))
    13031296local_label(_nthrowv_nextframe):
    13041297        __(subq $fixnumone,%imm0)
    13051298        __(js local_label(_nthrowv_done))
    13061299        __(movd %imm0,%mm1)
    1307         __(movq %rcontext:tcr.catch_top,%temp0)
     1300        __(movq rcontext(tcr.catch_top),%temp0)
    13081301        __(movq catch_frame.link(%temp0),%imm1)
    13091302        __(movq catch_frame.db_link(%temp0),%imm0)
    1310         __(movq %imm1,%rcontext:tcr.catch_top)
    1311         __(cmpq %imm0,%rcontext:tcr.db_link)
     1303        __(movq %imm1,rcontext(tcr.catch_top))
     1304        __(cmpq %imm0,rcontext(tcr.db_link))
    13121305        __(jz local_label(_nthrowv_dont_unbind))
    13131306        __(push %ra0)
     
    13261319        __(jne local_label(_nthrowv_skip))
    13271320        __(movq catch_frame.xframe(%temp0),%save0)
    1328         __(movq %save0,%rcontext:tcr.xframe)
     1321        __(movq %save0,rcontext(tcr.xframe))
    13291322        __(leaq (%rsp,%nargs_q),%save1)
    13301323        __(movq catch_frame.rsp(%temp0),%save2)
     
    13401333        __(jns local_label(_nthrowv_push_loop))
    13411334        __(movq catch_frame.xframe(%temp0),%save0)
    1342         __(movq %save0,%rcontext:tcr.xframe)
     1335        __(movq %save0,rcontext(tcr.xframe))
    13431336        __(movq %save2,%rsp)
    13441337        __(movq catch_frame.rbp(%temp0),%rbp)
     1338        __ifndef([WINDOWS])
    13451339        __(movq catch_frame._save3(%temp0),%save3)
     1340        __endif
    13461341        __(movq catch_frame._save2(%temp0),%save2)
    13471342        __(movq catch_frame._save1(%temp0),%save1)
    13481343        __(movq catch_frame._save0(%temp0),%save0)
    13491344        __(movq catch_frame.foreign_sp(%temp0),%stack_temp)
    1350         __(movq %stack_temp,%rcontext:tcr.foreign_sp)       
     1345        __(movq %stack_temp,rcontext(tcr.foreign_sp))       
    13511346local_label(_nthrowv_skip):     
    13521347        __(movq -(tsp_frame.fixed_overhead+fulltag_misc)(%temp0),%imm1)
    1353         __(movq %imm1,%rcontext:tcr.save_tsp)       
    1354         __(movq %imm1,%rcontext:tcr.next_tsp)
     1348        __(movq %imm1,rcontext(tcr.save_tsp))       
     1349        __(movq %imm1,rcontext(tcr.next_tsp))
    13551350        __(movd %mm1,%imm0)
    13561351        __(jmp local_label(_nthrowv_nextframe))
     
    13631358        __(push catch_frame._save1(%temp0))
    13641359        __(push catch_frame._save2(%temp0))
     1360        __ifndef([WINDOWS])
    13651361        __(push catch_frame._save3(%temp0))
     1362        __endif
    13661363        __(push catch_frame.pc(%temp0))
    13671364        __(movq catch_frame.rbp(%temp0),%rbp)
    13681365        __(movq catch_frame.xframe(%temp0),%stack_temp)
    13691366        __(movq catch_frame.rsp(%temp0),%arg_x)
    1370         __(movq %stack_temp,%rcontext:tcr.xframe)
     1367        __(movq %stack_temp,rcontext(tcr.xframe))
    13711368        __(movq catch_frame.foreign_sp(%temp0),%stack_temp)
    1372         __(movq %stack_temp,%rcontext:tcr.foreign_sp)       
     1369        __(movq %stack_temp,rcontext(tcr.foreign_sp))       
    13731370        /* Discard the catch frame, so we can build a temp frame   */
    13741371        __(movq -(tsp_frame.fixed_overhead+fulltag_misc)(%temp0),%imm1)
    1375         __(movq %imm1,%rcontext:tcr.save_tsp)
    1376         __(movq %imm1,%rcontext:tcr.next_tsp)
     1372        __(movq %imm1,rcontext(tcr.save_tsp))
     1373        __(movq %imm1,rcontext(tcr.next_tsp))
    13771374        /* tsp overhead, nargs, throw count, ra0   */
    13781375        __(dnode_align(%nargs_q,(tsp_frame.fixed_overhead+(3*node_size)),%imm0))
     
    13901387        __(addq $node_size,%imm1)
    13911388local_label(_nthrowv_tpushtest):
    1392         __(subw $node_size,%nargs)
     1389        __(subl $node_size,%nargs)
    13931390        __(jns local_label(_nthrowv_tpushloop))
    13941391        __(pop %xfn)
     1392        __ifndef([WINDOWS])
    13951393        __(pop %save3)
     1394        __endif
    13961395        __(pop %save2)
    13971396        __(pop %save1)
     
    14011400        __(leaq local_label(_nthrowv_called_cleanup)(%rip),%ra0)
    14021401        __(push %ra0)
    1403         __(movb $0,%rcontext:tcr.unwinding)
     1402        __(movb $0,rcontext(tcr.unwinding))
    14041403        __(jmp *%xfn)
    14051404__(tra(local_label(_nthrowv_called_cleanup)))
    14061405
    1407         __(movb $1,%rcontext:tcr.unwinding)
    1408         __(movq %rcontext:tcr.save_tsp,%imm1)
     1406        __(movb $1,rcontext(tcr.unwinding))
     1407        __(movq rcontext(tcr.save_tsp),%imm1)
    14091408        __(movq tsp_frame.data_offset+(0*node_size)(%imm1),%nargs_q)
    14101409        __(movq tsp_frame.data_offset+(1*node_size)(%imm1),%ra0)
     
    14191418        __(subq $node_size,%imm0)
    14201419        __(jns local_label(_nthrowv_tpoploop))
    1421         __(movq %rcontext:tcr.save_tsp,%imm1)
     1420        __(movq rcontext(tcr.save_tsp),%imm1)
    14221421        __(movq (%imm1),%imm1)
    1423         __(movq %imm1,%rcontext:tcr.save_tsp)
    1424         __(movq %imm1,%rcontext:tcr.next_tsp)
     1422        __(movq %imm1,rcontext(tcr.save_tsp))
     1423        __(movq %imm1,rcontext(tcr.next_tsp))
    14251424        __(movd %mm1,%imm0)
    14261425        __(jmp local_label(_nthrowv_nextframe))
    14271426local_label(_nthrowv_done):
    1428         __(movb $0,%rcontext:tcr.unwinding)
     1427        __(movb $0,rcontext(tcr.unwinding))
    14291428        __(check_pending_interrupt(%imm0))
    14301429local_label(_nthrowv_return):   
     
    14371436       
    14381437_spentry(nthrow1value)
    1439         __(movb $1,%rcontext:tcr.unwinding)
    1440         __(movzwl %nargs,%nargs_l)
     1438        __(movb $1,rcontext(tcr.unwinding))
    14411439local_label(_nthrow1v_nextframe):
    14421440        __(subq $fixnumone,%imm0)
    14431441        __(js local_label(_nthrow1v_done))
    14441442        __(movd %imm0,%mm1)
    1445         __(movq %rcontext:tcr.catch_top,%temp0)
     1443        __(movq rcontext(tcr.catch_top),%temp0)
    14461444        __(movq catch_frame.link(%temp0),%imm1)
    14471445        __(movq catch_frame.db_link(%temp0),%imm0)
    1448         __(movq %imm1,%rcontext:tcr.catch_top)
    1449         __(cmpq %imm0,%rcontext:tcr.db_link)
     1446        __(movq %imm1,rcontext(tcr.catch_top))
     1447        __(cmpq %imm0,rcontext(tcr.db_link))
    14501448        __(jz local_label(_nthrow1v_dont_unbind))
    14511449        __(push %ra0)
     
    14641462        __(jne local_label(_nthrow1v_skip))
    14651463        __(movq catch_frame.xframe(%temp0),%save0)
    1466         __(movq %save0,%rcontext:tcr.xframe)
     1464        __(movq %save0,rcontext(tcr.xframe))
    14671465        __(leaq (%rsp,%nargs_q),%save1)
    14681466        __(movq catch_frame.xframe(%temp0),%save0)
    1469         __(movq %save0,%rcontext:tcr.xframe)
     1467        __(movq %save0,rcontext(tcr.xframe))
    14701468        __(movq catch_frame.rsp(%temp0),%rsp)
    14711469        __(movq catch_frame.rbp(%temp0),%rbp)
     1470        __ifndef([WINDOWS])
    14721471        __(movq catch_frame._save3(%temp0),%save3)
     1472        __endif
    14731473        __(movq catch_frame._save2(%temp0),%save2)
    14741474        __(movq catch_frame._save1(%temp0),%save1)
    14751475        __(movq catch_frame._save0(%temp0),%save0)
    14761476        __(movq catch_frame.foreign_sp(%temp0),%stack_temp)
    1477         __(movq %stack_temp,%rcontext:tcr.foreign_sp)       
     1477        __(movq %stack_temp,rcontext(tcr.foreign_sp))       
    14781478local_label(_nthrow1v_skip):   
    14791479        __(movq -(tsp_frame.fixed_overhead+fulltag_misc)(%temp0),%imm1)
    1480         __(movq %imm1,%rcontext:tcr.save_tsp)
    1481         __(movq %imm1,%rcontext:tcr.next_tsp)       
     1480        __(movq %imm1,rcontext(tcr.save_tsp))
     1481        __(movq %imm1,rcontext(tcr.next_tsp))       
    14821482        __(movd %mm1,%imm0)
    14831483        __(jmp local_label(_nthrow1v_nextframe))
     
    14881488       
    14891489        __(movq catch_frame.xframe(%temp0),%save0)
    1490         __(movq %save0,%rcontext:tcr.xframe)
     1490        __(movq %save0,rcontext(tcr.xframe))
    14911491        __(movq catch_frame._save0(%temp0),%save0)
    14921492        __(movq catch_frame._save1(%temp0),%save1)
    14931493        __(movq catch_frame._save2(%temp0),%save2)
     1494        __ifndef([WINDOWS])
    14941495        __(movq catch_frame._save3(%temp0),%save3)
     1496        __endif
    14951497        __(movq catch_frame.pc(%temp0),%xfn)
    14961498        __(movq catch_frame.rbp(%temp0),%rbp)
    14971499        __(movq catch_frame.rsp(%temp0),%rsp)
    14981500        __(movq catch_frame.foreign_sp(%temp0),%stack_temp)
    1499         __(movq %stack_temp,%rcontext:tcr.foreign_sp)       
     1501        __(movq %stack_temp,rcontext(tcr.foreign_sp))       
    15001502        /* Discard the catch frame, so we can build a temp frame   */
    15011503        __(movq -(tsp_frame.fixed_overhead+fulltag_misc)(%temp0),%imm1)
    1502         __(movq %imm1,%rcontext:tcr.save_tsp)
    1503         __(movq %imm1,%rcontext:tcr.next_tsp)       
     1504        __(movq %imm1,rcontext(tcr.save_tsp))
     1505        __(movq %imm1,rcontext(tcr.next_tsp))       
    15041506        __(TSP_Alloc_Fixed((3*node_size),%imm1))
    15051507        __(addq $tsp_frame.fixed_overhead,%imm1)
     
    15091511/* Ready to call cleanup code. set up tra, jmp to %xfn   */
    15101512        __(leaq local_label(_nthrow1v_called_cleanup)(%rip),%ra0)
    1511         __(movb $0,%rcontext:tcr.unwinding)
     1513        __(movb $0,rcontext(tcr.unwinding))
    15121514        __(push %ra0)
    15131515        __(jmp *%xfn)
    15141516__(tra(local_label(_nthrow1v_called_cleanup)))
    15151517
    1516         __(movb $1,%rcontext:tcr.unwinding)
    1517         __(movq %rcontext:tcr.save_tsp,%imm1)
     1518        __(movb $1,rcontext(tcr.unwinding))
     1519        __(movq rcontext(tcr.save_tsp),%imm1)
    15181520        __(movq tsp_frame.data_offset+(0*node_size)(%imm1),%ra0)
    15191521        __(movq tsp_frame.data_offset+(1*node_size)(%imm1),%mm1)
     
    15211523
    15221524        __(movq (%imm1),%imm1)
    1523         __(movq %imm1,%rcontext:tcr.save_tsp)
    1524         __(movq %imm1,%rcontext:tcr.next_tsp)       
     1525        __(movq %imm1,rcontext(tcr.save_tsp))
     1526        __(movq %imm1,rcontext(tcr.next_tsp))       
    15251527        __(movd %mm1,%imm0)
    15261528        __(jmp local_label(_nthrow1v_nextframe))
    15271529local_label(_nthrow1v_done):
    1528         __(movb $0,%rcontext:tcr.unwinding)
     1530        __(movb $0,rcontext(tcr.unwinding))
    15291531        __(check_pending_interrupt(%imm0))
    15301532local_label(_nthrow1v_return): 
     
    15371539_spentry(bind)
    15381540        __(movq symbol.binding_index(%arg_y),%temp0)
    1539         __(cmpq %rcontext:tcr.tlb_limit,%temp0)
     1541        __(cmpq rcontext(tcr.tlb_limit),%temp0)
    15401542        __(jb,pt 0f)
    15411543        __(push %temp0)
     
    154315450:      __(testq %temp0,%temp0)
    15441546        __(jz 9f)
    1545         __(movq %rcontext:tcr.tlb_pointer,%temp1)
     1547        __(movq rcontext(tcr.tlb_pointer),%temp1)
    15461548        __(push (%temp1,%temp0))
    15471549        __(push %temp0)
    1548         __(push %rcontext:tcr.db_link)
    1549         __(movq %rsp,%rcontext:tcr.db_link)
     1550        __(push rcontext(tcr.db_link))
     1551        __(movq %rsp,rcontext(tcr.db_link))
    15501552        __(movq %arg_z,(%temp1,%temp0))
    15511553        __(jmp *%ra0)
     
    15621564_spentry(bind_self)
    15631565        __(movq symbol.binding_index(%arg_z),%temp0)
    1564         __(cmpq %rcontext:tcr.tlb_limit,%temp0)
     1566        __(cmpq rcontext(tcr.tlb_limit),%temp0)
    15651567        __(jb,pt 0f)
    15661568        __(push %temp0)
     
    156815700:      __(testq %temp0,%temp0)
    15691571        __(jz 9f)
    1570         __(movq %rcontext:tcr.tlb_pointer,%temp1)
     1572        __(movq rcontext(tcr.tlb_pointer),%temp1)
    15711573        __(cmpb $no_thread_local_binding_marker,(%temp0,%temp1))
    15721574        __(jz 2f)
    15731575        __(push (%temp1,%temp0))
    15741576        __(push %temp0)
    1575         __(push %rcontext:tcr.db_link)
    1576         __(movq %rsp,%rcontext:tcr.db_link)
     1577        __(push rcontext(tcr.db_link))
     1578        __(movq %rsp,rcontext(tcr.db_link))
    15771579        __(jmp *%ra0)
    157815802:      __(movq symbol.vcell(%arg_z),%arg_y)
    15791581        __(push (%temp1,%temp0))
    15801582        __(push %temp0)
    1581         __(push %rcontext:tcr.db_link)
     1583        __(push rcontext(tcr.db_link))
    15821584        __(movq %arg_y,(%temp1,%temp0))
    1583         __(movq %rsp,%rcontext:tcr.db_link)
     1585        __(movq %rsp,rcontext(tcr.db_link))
    15841586        __(jmp *%ra0)
    158515879:      __(movq $XSYMNOBIND,%arg_y)
     
    15911593_spentry(bind_nil)
    15921594        __(movq symbol.binding_index(%arg_z),%temp0)
    1593         __(cmpq %rcontext:tcr.tlb_limit,%temp0)
     1595        __(cmpq rcontext(tcr.tlb_limit),%temp0)
    15941596        __(jb,pt 0f)
    15951597        __(push %temp0)
     
    159715990:      __(testq %temp0,%temp0)
    15981600        __(jz 9f)
    1599         __(movq %rcontext:tcr.tlb_pointer,%temp1)
     1601        __(movq rcontext(tcr.tlb_pointer),%temp1)
    16001602        __(push (%temp1,%temp0))
    16011603        __(push %temp0)
    1602         __(push %rcontext:tcr.db_link)
    1603         __(movq %rsp,%rcontext:tcr.db_link)
    1604         __(movq $nil_value,(%temp0,%temp1))
     1604        __(push rcontext(tcr.db_link))
     1605        __(movq %rsp,rcontext(tcr.db_link))
     1606        __(movq $nil_value,(%temp1,%temp0))
    16051607        __(jmp *%ra0)
    160616089:      __(movq $XSYMNOBIND,%arg_y)
     
    16121614_spentry(bind_self_boundp_check)
    16131615        __(movq symbol.binding_index(%arg_z),%temp0)
    1614         __(cmpq %rcontext:tcr.tlb_limit,%temp0)
     1616        __(cmpq rcontext(tcr.tlb_limit),%temp0)
    16151617        __(jb,pt 0f)
    16161618        __(push %temp0)
     
    161816200:      __(testq %temp0,%temp0)
    16191621        __(jz 9f)
    1620         __(movq %rcontext:tcr.tlb_pointer,%temp1)
     1622        __(movq rcontext(tcr.tlb_pointer),%temp1)
    16211623        __(cmpb $no_thread_local_binding_marker,(%temp1,%temp0))
    16221624        __(je 2f)
     
    16251627        __(push (%temp1,%temp0))
    16261628        __(push %temp0)
    1627         __(push %rcontext:tcr.db_link)
    1628         __(movq %rsp,%rcontext:tcr.db_link)
     1629        __(push rcontext(tcr.db_link))
     1630        __(movq %rsp,rcontext(tcr.db_link))
    16291631        __(jmp *%ra0)
    163016322:      __(movq symbol.vcell(%arg_z),%arg_y)
     
    16331635        __(push (%temp1,%temp0))
    16341636        __(push %temp0)
    1635         __(push %rcontext:tcr.db_link)
    1636         __(movq %rsp,%rcontext:tcr.db_link)
     1637        __(push rcontext(tcr.db_link))
     1638        __(movq %rsp,rcontext(tcr.db_link))
    16371639        __(movq %arg_y,(%temp1,%temp0))
    16381640        __(jmp *%ra0)
     
    16481650_spentry(conslist)
    16491651        __(movl $nil_value,%arg_z_l)
    1650         __(testw %nargs,%nargs)
     1652        __(testl %nargs,%nargs)
    16511653        __(jmp 2f)
    165216541:      __(pop %arg_y)
    16531655        __(Cons(%arg_y,%arg_z,%arg_z))
    1654         __(subw $node_size,%nargs)
     1656        __(subl $node_size,%nargs)
    165516572:      __(jnz 1b)
    16561658        __(jmp *%ra0)           
     
    16611663       
    16621664_spentry(conslist_star)
    1663         __(testw %nargs,%nargs)
     1665        __(testl %nargs,%nargs)
    16641666        __(jmp 2f)
    166516671:      __(pop %arg_y)
    16661668        __(Cons(%arg_y,%arg_z,%arg_z))
    1667         __(subw $node_size,%nargs)
     1669        __(subl $node_size,%nargs)
    166816702:      __(jnz 1b)
    16691671        __(jmp *%ra0)           
     
    16731675/* doesn't get confused.   */
    16741676_spentry(stkconslist)
    1675         __(movzwl %nargs,%nargs_l)
    16761677        __(movq %nargs_q,%imm1)
    16771678        __(addq %imm1,%imm1)
     
    16801681        __(TSP_Alloc_Var(%imm1,%imm0))
    16811682        __(addq $fulltag_cons,%imm0)
    1682         __(testw %nargs,%nargs)
     1683        __(testl %nargs,%nargs)
    16831684        __(jmp 2f)
    168416851:      __(pop %temp0)
     
    16871688        __(movq %imm0,%arg_z)
    16881689        __(add $cons.size,%imm0)
    1689         __(subw $node_size,%nargs)
     1690        __(subl $node_size,%nargs)
    169016912:      __(jne 1b)
    16911692        __(jmp *%ra0)
     
    16961697       
    16971698_spentry(stkconslist_star)
    1698         __(movzwl %nargs,%nargs_l)
    16991699        __(movq %nargs_q,%imm1)
    17001700        __(addq %imm1,%imm1)
     
    17021702        __(TSP_Alloc_Var(%imm1,%imm0))
    17031703        __(addq $fulltag_cons,%imm0)
    1704         __(testw %nargs,%nargs)
     1704        __(testl %nargs,%nargs)
    17051705        __(jmp 2f)
    170617061:      __(pop %temp0)
     
    17091709        __(movq %imm0,%arg_z)
    17101710        __(addq $cons.size,%imm0)
    1711         __(subw $node_size,%nargs)
     1711        __(subl $node_size,%nargs)
    171217122:      __(jne 1b)
    17131713        __(jmp *%ra0)
     
    17181718       
    17191719_spentry(mkstackv)
    1720         __(movzwl %nargs,%nargs_l)
    17211720        __(dnode_align(%nargs_q,tsp_frame.fixed_overhead+node_size,%imm1))
    17221721        __(TSP_Alloc_Var(%imm1,%temp0))
    1723         __(movl %nargs_l,%imm0_l)
     1722        __(movl %nargs,%imm0_l)
    17241723        __(shlq $(num_subtag_bits-fixnumshift),%imm0)
    17251724        __(movb $subtag_simple_vector,%imm0_b)
    17261725        __(movq %imm0,(%temp0))
    17271726        __(leaq fulltag_misc(%temp0),%arg_z)
    1728         __(testw %nargs,%nargs)
     1727        __(testl %nargs,%nargs)
    17291728        __(leaq misc_data_offset(%arg_z,%nargs_q),%imm1)
    17301729        __(jmp 2f)
    173117301:      __(pop -node_size(%imm1))
    1732         __(subw $node_size,%nargs)
     1731        __(subl $node_size,%nargs)
    17331732        __(leaq -node_size(%imm1),%imm1)
    173417332:      __(jne 1b)
     
    17731772        __(jae 0b)
    17741773        __(ref_global(refbits,%temp0))
    1775         __(movq %imm0,%imm1)
    1776         __(andl $63,%imm0_l)
    1777         __(shrq $bitmap_shift,%imm1)
    17781774        __(xorb $63,%imm0_b)
    17791775        __(lock)
    1780         __(btsq %imm0,(%temp0,%imm1,8))
     1776        __(btsq %imm0,(%temp0))
    17811777        __(ret)
    17821778_endsubp(rplaca)
     
    17951791        __(jae 0b)
    17961792        __(ref_global(refbits,%temp0))
    1797         __(movq %imm0,%imm1)
    1798         __(andl $63,%imm0_l)
    1799         __(shrq $bitmap_shift,%imm1)
    18001793        __(xorb $63,%imm0_b)
    18011794        __(lock)
    1802         __(btsq %imm0,(%temp0,%imm1,8))
     1795        __(btsq %imm0,(%temp0))
    18031796        __(ret)
    18041797_endsubp(rplacd)
     
    18201813        __(jae 0b)
    18211814        __(ref_global(refbits,%temp0))
    1822         __(movq %imm0,%imm1)
    1823         __(andl $63,%imm0_l)
    1824         __(shrq $bitmap_shift,%imm1)
    18251815        __(xorb $63,%imm0_b)
    18261816        __(lock)
    1827         __(btsq %imm0,(%temp0,%imm1,8))
     1817        __(btsq %imm0,(%temp0))
    18281818        __(ret)               
    18291819_endsubp(gvset)
     
    18471837        __(jae 0b)
    18481838        __(ref_global(refbits,%temp0))
    1849         __(movq %imm0,%imm1)
    1850         __(andl $63,%imm0_l)
    1851         __(shrq $bitmap_shift,%imm1)
    18521839        __(xorb $63,%imm0_b)
    18531840        __(lock)
    1854         __( btsq %imm0,(%temp0,%imm1,8))
     1841        __(btsq %imm0,(%temp0))
    18551842        /* Now memoize the address of the hash vector   */
    18561843        __(movq %arg_x,%imm0)
    18571844        __(subq lisp_global(heap_start),%imm0)
    18581845        __(shrq $dnode_shift,%imm0)
    1859         __(movq %imm0,%imm1)
    1860         __(andl $63,%imm0_l)
    1861         __(shrq $bitmap_shift,%imm1)
    18621846        __(xorb $63,%imm0_b)
    18631847        __(lock)
    1864         __(btsq %imm0,(%temp0,%imm1,8))
     1848        __(btsq %imm0,(%temp0))
    18651849        __(ret)               
    18661850_endsubp(set_hash_key)
     
    18911875        __(ref_global(refbits,%temp1))
    18921876        __(jae 2f)
    1893         __(movq %imm0,%imm1)
    1894         __(andl $63,%imm0_l)
    1895         __(shrq $bitmap_shift,%imm1)
    18961877        __(xorb $63,%imm0_b)
    18971878        __(lock)
    1898         __(btsq %imm0,(%temp1,%imm1,8))
     1879        __(btsq %imm0,(%temp1))
    18991880        .globl C(egc_write_barrier_end)
    19001881C(egc_write_barrier_end):
     
    19661947        __(TSP_Alloc_Var(%imm1,%temp0))
    19671948        __(movq %imm0,(%temp0))
    1968         __(movq %rcontext:tcr.db_link,%temp1)
     1949        __(movq rcontext(tcr.db_link),%temp1)
    196919503:      __(movl $unbound_marker,%temp0_l)
    19701951        __(compare_reg_to_nil(%arg_z))
     
    19741955        __(_cdr(%arg_y,%arg_y))
    19751956        __(movq symbol.binding_index(%arg_x),%arg_x)
    1976         __(cmp %rcontext:tcr.tlb_limit,%arg_x)
     1957        __(cmp rcontext(tcr.tlb_limit),%arg_x)
    19771958        __(jb,pt 4f)
    19781959        __(push %arg_x)
    19791960        __(tlb_too_small())
    1980 4:      __(movq %rcontext:tcr.tlb_pointer,%imm0)
     19614:      __(movq rcontext(tcr.tlb_pointer),%imm0)
    19811962        __(subq $binding.size,%imm1)
    19821963        __(compare_reg_to_nil(%arg_y))
     
    19881969        __(movq %imm1,%temp1)
    19891970        __(jne 3b)
    1990         __(movq %temp1,%rcontext:tcr.db_link)
     1971        __(movq %temp1,rcontext(tcr.db_link))
    19911972        __(ret)
    19921973_endsubp(progvsave)
     
    20422023        __(cmpq $tstack_alloc_limit,%imm1)
    20432024        __(ja local_label(stack_misc_alloc_heap_alloc_ivector))
    2044         __(movq %rcontext:tcr.foreign_sp,%stack_temp)
     2025        __(movq rcontext(tcr.foreign_sp),%stack_temp)
    20452026        __(movd %stack_temp,%temp1)
    2046         __(subq %imm1,%rcontext:tcr.foreign_sp)
    2047         __(movq %rcontext:tcr.foreign_sp,%temp0)
     2027        __(subq %imm1,rcontext(tcr.foreign_sp))
     2028        __(movq rcontext(tcr.foreign_sp),%temp0)
    204820290:      __(movapd %fpzero,-dnode_size(%temp1))
    20492030        __(subq $dnode_size,%temp1)
     
    20562037        __(ret)
    20572038local_label(stack_misc_alloc_heap_alloc_ivector):
    2058         __(movq %rcontext:tcr.foreign_sp,%imm1)
    2059         __(subq $dnode_size,%rcontext:tcr.foreign_sp)
    2060         __(movq %rcontext:tcr.foreign_sp,%imm0)
     2039        __(movq rcontext(tcr.foreign_sp),%imm1)
     2040        __(subq $dnode_size,rcontext(tcr.foreign_sp))
     2041        __(movq rcontext(tcr.foreign_sp),%imm0)
    20612042        __(movq %imm1,(%imm0))
    20622043        __(jmp _SPmisc_alloc)   
     
    20832064/* objects.   */
    20842065_spentry(gvector)
    2085         __(movzwl %nargs,%nargs_l)     
    2086         __(subl $node_size,%nargs_l)
     2066        __(subl $node_size,%nargs)
    20872067        __(movq (%rsp,%nargs_q),%imm0)  /* boxed subtype   */
    20882068        __(sarq $fixnumshift,%imm0)
     
    21162096        __(ref_global(ret1val_addr,%imm1))
    21172097        __(cmpq %imm1,%ra0)
    2118         __(movzwl %nargs,%nargs_l)
    21192098        __(movl $nil_value,%arg_z_l)
    21202099        __(je 0f)
    2121         __(testw %nargs,%nargs)
     2100        __(testl %nargs,%nargs)
    21222101        __(cmovneq -node_size(%rsp,%nargs_q),%arg_z)
    21232102        __(movq %temp0,%rsp)
     
    21522131        __(push_argregs())
    21532132        __(movq %next_method_context,%arg_y)
    2154         __(movzwl %nargs,%nargs_l)
    2155         __(movl %nargs_l,%imm1_l)
     2133        __(movl %nargs,%imm1_l)
    21562134        __(testl %imm1_l,%imm1_l)
    21572135        __(movl $nil_value,%arg_z_l)
     
    21712149        __(push_argregs())
    21722150        __(movq %next_method_context,%arg_y)
    2173         __(movzwl %nargs,%nargs_l)
    2174         __(movl %nargs_l,%imm1_l)
     2151        __(movl %nargs,%imm1_l)
    21752152        __(subl %imm0_l,%imm1_l)
    21762153        __(movl $nil_value,%arg_z_l)
     
    21892166/* make an &rest arg out of any others   */
    21902167_spentry(heap_cons_rest_arg)
    2191         __(movzwl %nargs,%nargs_l)
    2192         __(movl %nargs_l,%imm1_l)
     2168        __(movl %nargs,%imm1_l)
    21932169        __(subl %imm0_l,%imm1_l)
    21942170        __(movq %next_method_context,%arg_y)
     
    22302206       
    22312207_spentry(keyword_bind)
    2232         __(movzwl %nargs,%imm1_l)
     2208        __(movl %nargs,%imm1_l)
    22332209        __(subq %imm0,%imm1)
    22342210        __(jbe local_label(no_keyword_values))
     
    22372213        __(movl $nil_value,%arg_z_l)
    22382214        __(movq %imm1,%nargs_q)
    2239         __(testw %nargs,%nargs)
     2215        __(testl %nargs,%nargs)
    22402216        __(jmp 1f)
    224122170:      __(pop %arg_y)
    22422218        __(Cons(%arg_y,%arg_z,%arg_z))
    2243         __(subw $node_size,%nargs)
     2219        __(subl $node_size,%nargs)
    224422201:      __(jnz 0b)
    22452221        __(movl $XBADKEYS,%arg_y_l)
     
    22782254        __(jge 3b)
    22792255        /* Push the %saveN registers, so that we can use them in this loop   */
    2280         __(push %save3)
     2256        /* Also, borrow %arg_y for a bit */
     2257        __(push %arg_y)
    22812258        __(push %save2)
    22822259        __(push %save1)
     
    22882265        __(movq %imm0,%save2)
    22892266        /* %save2 is the length of the keyword vector   */
    2290 5:      __(movq (%arg_z),%save3)        /* %save3 is current keyword   */
     22675:      __(movq (%arg_z),%arg_y)        /* %arg_y is current keyword   */
    22912268        __(xorl %imm0_l,%imm0_l)
    2292         __(cmpq $nrs.kallowotherkeys,%save3)
     2269        __(cmpq $nrs.kallowotherkeys,%arg_y)
    22932270        __(jne local_label(next_keyvect_entry))
    22942271        __(btsq $keyword_flags_seen_aok_bit,%temp1)
     
    22982275        __(btsq $keyword_flags_aok_bit,%temp1)
    22992276        __(jmp local_label(next_keyvect_entry))
    2300 6:      __(cmpq misc_data_offset(%arg_x,%imm0),%save3)
     22776:      __(cmpq misc_data_offset(%arg_x,%imm0),%arg_y)
    23012278        __(jne 7f)
    23022279        /* Got a match; have we already seen this keyword ?   */
     
    23042281        __(cmpb $fulltag_nil,-node_size*2(%save0,%imm0,2))
    23052282        __(jne 9f)      /* already seen keyword, ignore this value   */
    2306         __(movq node_size(%arg_z),%save3)
    2307         __(movq %save3,-node_size(%save0,%imm0,2))
     2283        __(movq node_size(%arg_z),%arg_y)
     2284        __(movq %arg_y,-node_size(%save0,%imm0,2))
    23082285        __(movl $t_value,-node_size*2(%save0,%imm0,2))
    23092286        __(jmp 9f)
     
    23142291        /* Didn't match anything in the keyword vector. Is the keyword  */
    23152292        /* :allow-other-keys ?   */
    2316         __(cmpq $nrs.kallowotherkeys,%save3)
     2293        __(cmpq $nrs.kallowotherkeys,%arg_y)
    23172294        __(je 9f)               /* :allow-other-keys is never "unknown" */
    231822958:      __(btsq $keyword_flags_unknown_keys_bit,%temp1)
     
    23232300        __(pop %save1)
    23242301        __(pop %save2)
    2325         __(pop %save3)
     2302        __(pop %arg_y)
    23262303        /* If the function takes an &rest arg, or if we got an unrecognized  */
    23272304        /* keyword and don't allow that, copy the incoming keyword/value  */
     
    23392316        /* the function takes an &rest arg or because we need to signal an  */
    23402317        /* "unknown keywords" error   */
    2341 1:      __(movq %rcontext:tcr.save_tsp,%arg_z)
     23181:      __(movq rcontext(tcr.save_tsp),%arg_z)
    23422319        __(mov (%arg_z),%arg_y)
    23432320        __(jmp 3f)
     
    23542331        /* Signal an "unknown keywords" error   */
    23552332        __(movq %imm1,%nargs_q)
    2356         __(testw %nargs,%nargs)
     2333        __(testl %nargs,%nargs)
    23572334        __(movl $nil_value,%arg_z_l)
    23582335        __(jmp 5f)
    235923364:      __(pop %arg_y)
    23602337        __(Cons(%arg_y,%arg_z,%arg_z))
    2361         __(subw $node_size,%nargs)
     2338        __(subl $node_size,%nargs)
    236223395:      __(jnz 4b)
    23632340        __(movl $XBADKEYS,%arg_y_l)
     
    24032380
    24042381_spentry(stack_cons_rest_arg)
    2405         __(movzwl %nargs,%nargs_l)
    2406         __(movl %nargs_l,%imm1_l)
     2382        __(movl %nargs,%imm1_l)
    24072383        __(subl %imm0_l,%imm1_l)
    24082384        __(movl $nil_value,%arg_z_l)
    2409         __(je 2f)       /* empty list ; make an empty TSP frame   */
     2385        __(jle 2f)      /* empty list ; make an empty TSP frame   */
    24102386        __(addq %imm1,%imm1)
    24112387        __(cmpq $(tstack_alloc_limit-dnode_size),%imm1)
     
    24512427/*   if all args fit in registers.   */
    24522428_spentry(spreadargz)
    2453         __(testw %nargs,%nargs)
     2429        __(testl %nargs,%nargs)
    24542430        __(jne 0f)
    24552431        __(push $reserved_frame_marker)
     
    24692445        __(push %arg_x)
    24702446        __(jne 1b)
    2471 2:      __(addw %imm0_w,%nargs)
     24472:      __(addw %imm0_w,%nargs_w)
    24722448        __(jne 4f)
    247324493:      __(addq $2*node_size,%rsp)
    24742450        __(jmp *%ra0)
    2475 4:      __(cmpw $1*node_size,%nargs)
     24514:      __(cmpl $1*node_size,%nargs)
    24762452        __(pop %arg_z)
    24772453        __(je 3b)
    2478         __(cmpw $2*node_size,%nargs)
     2454        __(cmpl $2*node_size,%nargs)
    24792455        __(pop %arg_y)
    24802456        __(je 3b)
    2481         __(cmpw $3*node_size,%nargs)
     2457        __(cmpl $3*node_size,%nargs)
    24822458        __(pop %arg_x)
    24832459        __(je 3b)
     
    25042480/* relative to it and restore %rbp/%ra0   */
    25052481_spentry(tfuncallgen)
    2506         __(cmpw $nargregs*node_size,%nargs)
     2482        __(cmpl $nargregs*node_size,%nargs)
    25072483        __(jbe 9f)
    2508         __(movzwl %nargs,%nargs_l)
    25092484        __(lea -nargregs*node_size(%rsp,%nargs_q),%imm0)
    25102485        __(xorl %imm1_l,%imm1_l)
     
    25302505/* Some args were pushed; move them down in the frame   */
    25312506_spentry(tfuncallslide)
    2532         __(movzwl %nargs,%nargs_l)
    25332507        __(lea -nargregs*node_size(%rsp,%nargs_q),%imm0)
    25342508        __(xorl %imm1_l,%imm1_l)
     
    25552529
    25562530_spentry(tcallsymgen)
    2557         __(cmpw $nargregs*node_size,%nargs)
     2531        __(cmpl $nargregs*node_size,%nargs)
    25582532        __(jbe 9f)
    2559         __(movzwl %nargs,%nargs_l)
    25602533        __(lea -nargregs*node_size(%rsp,%nargs_q),%imm0)
    25612534        __(xorl %imm1_l,%imm1_l)
     
    25802553
    25812554_spentry(tcallsymslide)
    2582         __(movzwl %nargs,%nargs_l)
    25832555        __(lea -nargregs*node_size(%rsp,%nargs_q),%imm0)
    25842556        __(xorl %imm1_l,%imm1_l)
     
    26042576
    26052577_spentry(tcallnfngen)
    2606         __(cmpw $nargregs*node_size,%nargs)
     2578        __(cmpl $nargregs*node_size,%nargs)
    26072579        __(jbe 9f)
    2608         __(movzwl %nargs,%nargs_l)
    26092580        __(lea -nargregs*node_size(%rsp,%nargs_q),%imm0)
    26102581        __(xorl %imm1_l,%imm1_l)
     
    26312602
    26322603_spentry(tcallnfnslide)
    2633         __(movzwl %nargs,%nargs_l)
    26342604        __(lea -nargregs*node_size(%rsp,%nargs_q),%imm0)
    26352605        __(xorl %imm1_l,%imm1_l)
     
    26652635        __(cmpq $tstack_alloc_limit,%imm0)
    26662636        __(jae 1f)
    2667         __(movq %rcontext:tcr.foreign_sp,%imm1)
    2668         __(subq %imm0,%rcontext:tcr.foreign_sp)
    2669         __(movq %rcontext:tcr.foreign_sp,%arg_z)
     2637        __(movq rcontext(tcr.foreign_sp),%imm1)
     2638        __(subq %imm0,rcontext(tcr.foreign_sp))
     2639        __(movq rcontext(tcr.foreign_sp),%arg_z)
    26702640        __(movq %imm1,(%arg_z))
    26712641        __(movq %rbp,csp_frame.save_rbp(%arg_z))
     
    26772647        __(movsd %fpzero,macptr.type(%arg_z))
    26782648        __(ret)
    2679 1:      __(movq %rcontext:tcr.foreign_sp,%imm1)
    2680         __(subq $dnode_size,%rcontext:tcr.foreign_sp)
    2681         __(movq %rcontext:tcr.foreign_sp,%imm0)
     26491:      __(movq rcontext(tcr.foreign_sp),%imm1)
     2650        __(subq $dnode_size,rcontext(tcr.foreign_sp))
     2651        __(movq rcontext(tcr.foreign_sp),%imm0)
    26822652        __(movq %imm1,(%imm0))
    26832653        __(movq %rbp,csp_frame.save_rbp(%imm0))
     
    26922662        __(cmpq $tstack_alloc_limit,%imm0)
    26932663        __(jae 9f)
    2694         __(movq %rcontext:tcr.foreign_sp,%imm1)
    2695         __(subq %imm0,%rcontext:tcr.foreign_sp)
    2696         __(movq %rcontext:tcr.foreign_sp,%arg_z)
     2664        __(movq rcontext(tcr.foreign_sp),%imm1)
     2665        __(subq %imm0,rcontext(tcr.foreign_sp))
     2666        __(movq rcontext(tcr.foreign_sp),%arg_z)
    26972667        __(movq %imm1,(%arg_z))
    26982668        __(movq %rbp,csp_frame.save_rbp(%arg_z))
     
    27092679        __(jne 1b)             
    27102680        __(repret)
    2711 9:      __(movq %rcontext:tcr.foreign_sp,%imm1)
    2712         __(subq $dnode_size,%rcontext:tcr.foreign_sp)
    2713         __(movq %rcontext:tcr.foreign_sp,%imm0)
     26819:      __(movq rcontext(tcr.foreign_sp),%imm1)
     2682        __(subq $dnode_size,rcontext(tcr.foreign_sp))
     2683        __(movq rcontext(tcr.foreign_sp),%imm0)
    27142684        __(movq %imm1,(%imm0))
    27152685        __(movq %rbp,csp_frame.save_rbp(%imm0))
     
    27532723/* node header subtag.) Nargs set to count of things vpushed.     */
    27542724_spentry(stkgvector)
    2755         __(movzwl %nargs,%nargs_l)
    27562725        __(lea -fixnum_one(%nargs_q),%imm0)
    27572726        __(lea (%rsp,%imm0),%arg_x)
     
    28402809        __(jne local_label(req_loop))
    28412810local_label(opt):       
    2842         __(movw %nargs,%imm0_w)
     2811        __(movw %nargs_w,%imm0_w)
    28432812        __(shrw $8,%imm0_w)
    28442813        __(je local_label(rest_keys))
    2845         __(btl $initopt_bit,%nargs_l)
     2814        __(btl $initopt_bit,%nargs)
    28462815        __(jc local_label(opt_supp))
    28472816        /* 'simple' &optionals:  no supplied-p, default to nil.   */
     
    28802849        __(jne local_label(default_hard_opt))   
    28812850local_label(rest_keys):
    2882         __(btl $restp_bit,%nargs_l)
     2851        __(btl $restp_bit,%nargs)
    28832852        __(jc local_label(have_rest))
    2884         __(btl $keyp_bit,%nargs_l)
     2853        __(btl $keyp_bit,%nargs)
    28852854        __(jc local_label(have_keys))
    28862855        __(compare_reg_to_nil(%arg_reg))
     
    28892858local_label(have_rest):
    28902859        __(pushq %arg_reg)
    2891         __(btl $keyp_bit,%nargs_l)
     2860        __(btl $keyp_bit,%nargs)
    28922861        __(jc local_label(have_keys))
    28932862        __(jmp *%ra0)           
     
    29162885        /* of NILs on the vstack.   */
    29172886       
    2918         __(movl %nargs_l,%imm1_l)
     2887        __(movl %nargs,%imm1_l)
    29192888        __(shrl $16,%imm1_l)
    29202889        __(movzbl %imm1_b,%imm0_l)
     
    29282897        __(jge local_label(push_pair_loop))
    29292898        /* Push the %saveN registers, so that we can use them in this loop   */
     2899        /* Also, borrow %arg_z */
    29302900        __(push %save0)
    29312901        __(push %save1)
    29322902        __(push %save2)
    2933         __(push %save3)
     2903        __(push %arg_z)
    29342904        /* save0 points to the 0th value/supplied-p pair   */
    29352905        __(movq %arg_y,%save0)
     
    29372907        __(vector_length(%arg_x,%save1))
    29382908        /* save2 is the current keyword   */
    2939         /* save3 is the value of the current keyword   */
     2909        /* arg_z is the value of the current keyword   */
    29402910        __(xorl %imm0_l,%imm0_l)        /* count unknown keywords seen   */
    29412911local_label(match_keys_loop):
     
    29442914        __(_car(%arg_reg,%save2))
    29452915        __(_cdr(%arg_reg,%arg_reg))
    2946         __(_car(%arg_reg,%save3))
     2916        __(_car(%arg_reg,%arg_z))
    29472917        __(_cdr(%arg_reg,%arg_reg))
    29482918        __(xorl %arg_y_l,%arg_y_l)
     
    29602930        __(jne local_label(match_keys_loop))
    29612931        __(subl $1,%imm0_l)
    2962         __(btsl $seen_aok_bit,%nargs_l)
     2932        __(btsl $seen_aok_bit,%nargs)
    29632933        __(jc local_label(match_keys_loop))
    29642934        /* First time we've seen :allow-other-keys.  Maybe set aok_bit.   */
    2965         __(compare_reg_to_nil(%save3))
     2935        __(compare_reg_to_nil(%arg_z))
    29662936        __(je local_label(match_keys_loop))
    2967         __(btsl $aok_bit,%nargs_l)
     2937        __(btsl $aok_bit,%nargs)
    29682938        __(jmp local_label(match_keys_loop))
    29692939        /* Got a match.  Worry about :allow-other-keys here, too.   */
     
    29722942        __(cmpb $fulltag_nil,-node_size*2(%save0,%arg_y,2))
    29732943        __(jne local_label(match_keys_loop))
    2974         __(movq %save3,-node_size(%save0,%arg_y,2))
     2944        __(movq %arg_z,-node_size(%save0,%arg_y,2))
    29752945        __(movl $t_value,-node_size*2(%save0,%arg_y,2))
    29762946        __(cmpq $nrs.kallowotherkeys,%save2)
    29772947        __(jne local_label(match_keys_loop))
    2978         __(btsl $seen_aok_bit,%nargs_l)
     2948        __(btsl $seen_aok_bit,%nargs)
    29792949        __(jnc local_label(match_keys_loop))
    2980         __(compare_reg_to_nil(%save3))
     2950        __(compare_reg_to_nil(%arg_z))
    29812951        __(je local_label(match_keys_loop))
    2982         __(btsl $aok_bit,%nargs_l)
     2952        __(btsl $aok_bit,%nargs)
    29832953        __(jmp local_label(match_keys_loop))
    29842954local_label(matched_keys):             
    2985         __(pop %save3)
     2955        __(pop %arg_z)
    29862956        __(pop %save2)
    29872957        __(pop %save1)
     
    29892959        __(testl %imm0_l,%imm0_l)
    29902960        __(je local_label(keys_ok))
    2991         __(btl $aok_bit,%nargs_l)
     2961        __(btl $aok_bit,%nargs)
    29922962        __(jnc local_label(badkeys))
    29932963local_label(keys_ok):   
     
    30643034/* the difference between the current RSP and the target.   */
    30653035_spentry(mvslide)
    3066         __(movzwl %nargs,%nargs_l)
    3067         __(movl %nargs_l,%imm1_l)
     3036        __(movl %nargs,%imm1_l)
    30683037        __(lea (%rsp,%nargs_q),%temp0)
    30693038        __(testq %imm1,%imm1)
     
    30823051
    30833052_spentry(save_values)
    3084         __(movq %rcontext:tcr.save_tsp,%imm1)
     3053        __(movq rcontext(tcr.save_tsp),%imm1)
    30853054/* common exit: nargs = values in this set, imm1 = ptr to tsp before call to save_values   */
    30863055local_label(save_values_to_tsp):
    3087         __(movzwl %nargs,%nargs_l)
    3088         __(movq %rcontext:tcr.save_tsp,%arg_x)
     3056        __(movq rcontext(tcr.save_tsp),%arg_x)
    30893057        __(dnode_align(%nargs_q,tsp_frame.fixed_overhead+(2*node_size),%imm0)) /* count, link   */
    30903058        __(TSP_Alloc_Var(%imm0,%arg_z))
    3091         __(movq %rcontext:tcr.save_tsp,%imm0)
     3059        __(movq rcontext(tcr.save_tsp),%imm0)
    30923060        __(movq %imm1,(%imm0))
    30933061        __(movq %nargs_q,(%arg_z))
     
    31153083/* values. This makes recover_values harder.   */
    31163084_spentry(add_values)
    3117         __(testw %nargs,%nargs)
    3118         __(movq %rcontext:tcr.save_tsp,%imm1)
     3085        __(testl %nargs,%nargs)
     3086        __(movq rcontext(tcr.save_tsp),%imm1)
    31193087        __(movq (%imm1),%imm1)
    31203088        __(jne local_label(save_values_to_tsp))
     
    31293097        /* segment pointers Can tell the end because that previous  */
    31303098        /* segment pointer is the prev tsp pointer   */
    3131         __(movq %rcontext:tcr.save_tsp,%temp1)
     3099        __(movq rcontext(tcr.save_tsp),%temp1)
    31323100        __(movq %temp1,%arg_x)  /* current segment   */
    31333101        __(movq %temp1,%arg_y)  /* last segment   */
     
    31413109        __(jne local_label(walkloop))
    31423110
    3143         __(movzwl %nargs,%nargs_l)
    31443111        /* the final segment pointer is now in %arg_y  */
    31453112        /* walk backwards, pushing values on the stack and incrementing %nargs   */
     
    31583125        __(jne local_label(pushloop))
    31593126        __(movq (%temp1),%temp1)
    3160         __(movq %temp1,%rcontext:tcr.save_tsp)
    3161         __(movq %temp1,%rcontext:tcr.next_tsp)       
     3127        __(movq %temp1,rcontext(tcr.save_tsp))
     3128        __(movq %temp1,rcontext(tcr.next_tsp))       
    31623129        __(jmp *%ra0)           
    31633130_endsubp(recover_values)
     
    31723139        /* segment pointers Can tell the end because that previous  */
    31733140        /* segment pointer is the prev tsp pointer   */
    3174         __(xorl %nargs_l,%nargs_l)
    3175         __(movq %rcontext:tcr.save_tsp,%temp1)
     3141        __(xorl %nargs,%nargs)
     3142        __(movq rcontext(tcr.save_tsp),%temp1)
    31763143        __(movq %temp1,%arg_x)  /* current segment   */
    31773144        __(movq %temp1,%arg_y)  /* last segment   */
     
    31863153        __(jne local_label(walkloop_mvcall))
    31873154
    3188         __(cmpw $nargregs*node_size,%nargs)
     3155        __(cmpl $nargregs*node_size,%nargs)
    31893156        __(jbe local_label(pushloop_mvcall))
    31903157        __(push $reserved_frame_marker)
     
    32063173        __(jne local_label(pushloop_mvcall))
    32073174        __(movq (%temp1),%temp1)
    3208         __(movq %temp1,%rcontext:tcr.save_tsp)
    3209         __(movq %temp1,%rcontext:tcr.next_tsp)       
     3175        __(movq %temp1,rcontext(tcr.save_tsp))
     3176        __(movq %temp1,rcontext(tcr.next_tsp))       
    32103177        __(jmp *%ra0)           
    32113178_endsubp(recover_values_for_mvcall)
     
    33393306_spentry(specref)
    33403307        __(movq symbol.binding_index(%arg_z),%imm0)
    3341         __(cmp %rcontext:tcr.tlb_limit,%imm0)
    3342         __(movq %rcontext:tcr.tlb_pointer,%imm1)
     3308        __(cmp rcontext(tcr.tlb_limit),%imm0)
     3309        __(movq rcontext(tcr.tlb_pointer),%imm1)
    33433310        __(movq %arg_z,%arg_y)
    33443311        __(jae 7f)
     
    33533320_spentry(specset)
    33543321        __(movq symbol.binding_index(%arg_y),%imm0)
    3355         __(cmp %rcontext:tcr.tlb_limit,%imm0)
    3356         __(movq %rcontext:tcr.tlb_pointer,%imm1)
     3322        __(cmp rcontext(tcr.tlb_limit),%imm0)
     3323        __(movq rcontext(tcr.tlb_pointer),%imm1)
    33573324        __(jae 1f)
    33583325        __(movq (%imm1,%imm0),%arg_x)
     
    33683335_spentry(specrefcheck)
    33693336        __(movq symbol.binding_index(%arg_z),%imm0)
    3370         __(cmp %rcontext:tcr.tlb_limit,%imm0)
    3371         __(movq %rcontext:tcr.tlb_pointer,%imm1)
     3337        __(cmp rcontext(tcr.tlb_limit),%imm0)
     3338        __(movq rcontext(tcr.tlb_pointer),%imm1)
    33723339        __(movq %arg_z,%arg_y)
    33733340        __(jae 7f)
     
    34103377
    34113378_spentry(unbind)
    3412         __(movq %rcontext:tcr.db_link,%imm1)
    3413         __(movq %rcontext:tcr.tlb_pointer,%arg_x)
     3379        __(movq rcontext(tcr.db_link),%imm1)
     3380        __(movq rcontext(tcr.tlb_pointer),%arg_x)
    34143381        __(movq binding.sym(%imm1),%temp1)
    34153382        __(movq binding.val(%imm1),%arg_y)
    34163383        __(movq binding.link(%imm1),%imm1)
    34173384        __(movq %arg_y,(%arg_x,%temp1))
    3418         __(movq %imm1,%rcontext:tcr.db_link)
     3385        __(movq %imm1,rcontext(tcr.db_link))
    34193386        __(ret)
    34203387_endsubp(unbind)
    34213388
    34223389_spentry(unbind_n)
    3423         __(movq %rcontext:tcr.db_link,%imm1)
    3424         __(movq %rcontext:tcr.tlb_pointer,%arg_x)
     3390        __(movq rcontext(tcr.db_link),%imm1)
     3391        __(movq rcontext(tcr.tlb_pointer),%arg_x)
    342533921:             
    34263393        __(movq binding.sym(%imm1),%temp1)
     
    34303397        __(subq $1,%imm0)
    34313398        __(jne 1b)
    3432         __(movq %imm1,%rcontext:tcr.db_link)
     3399        __(movq %imm1,rcontext(tcr.db_link))
    34333400        __(ret)
    34343401_endsubp(unbind_n)
    34353402
    34363403_spentry(unbind_to)
    3437         __(movq %rcontext:tcr.db_link,%imm1)
    3438         __(movq %rcontext:tcr.tlb_pointer,%arg_x)
     3404        __(movq rcontext(tcr.db_link),%imm1)
     3405        __(movq rcontext(tcr.tlb_pointer),%arg_x)
    343934061:             
    34403407        __(movq binding.sym(%imm1),%temp1)
     
    34443411        __(cmpq %imm1,%imm0)
    34453412        __(jne 1b)
    3446         __(movq %imm1,%rcontext:tcr.db_link)
     3413        __(movq %imm1,rcontext(tcr.db_link))
    34473414        __(ret)
    34483415_endsubp(unbind_to)
     
    34533420       
    34543421_spentry(bind_interrupt_level_0)
    3455         __(movq %rcontext:tcr.tlb_pointer,%temp1)
     3422        __(movq rcontext(tcr.tlb_pointer),%temp1)
    34563423        __(cmpq $0,INTERRUPT_LEVEL_BINDING_INDEX(%temp1))
    34573424        __(push INTERRUPT_LEVEL_BINDING_INDEX(%temp1))
    34583425        __(push $INTERRUPT_LEVEL_BINDING_INDEX)
    3459         __(push %rcontext:tcr.db_link)
    3460         __(movq %rsp,%rcontext:tcr.db_link)
     3426        __(push rcontext(tcr.db_link))
     3427        __(movq %rsp,rcontext(tcr.db_link))
    34613428        __(movq $0,INTERRUPT_LEVEL_BINDING_INDEX(%temp1))
    34623429        __(js,pn 1f)
     
    34723439
    34733440_spentry(bind_interrupt_level_m1)
    3474         __(movq %rcontext:tcr.tlb_pointer,%temp1)
     3441        __(movq rcontext(tcr.tlb_pointer),%temp1)
    34753442        __(push INTERRUPT_LEVEL_BINDING_INDEX(%temp1))
    34763443        __(push $INTERRUPT_LEVEL_BINDING_INDEX)
    3477         __(push %rcontext:tcr.db_link)
    3478         __(movq %rsp,%rcontext:tcr.db_link)
     3444        __(push rcontext(tcr.db_link))
     3445        __(movq %rsp,rcontext(tcr.db_link))
    34793446        __(movq $-1<<fixnumshift,INTERRUPT_LEVEL_BINDING_INDEX(%temp1))
    34803447        __(jmp *%ra0)
     
    34853452_spentry(bind_interrupt_level)
    34863453        __(testq %arg_z,%arg_z)
    3487         __(movq %rcontext:tcr.tlb_pointer,%temp1)
     3454        __(movq rcontext(tcr.tlb_pointer),%temp1)
    34883455        __(jz _SPbind_interrupt_level_0)
    34893456        __(push INTERRUPT_LEVEL_BINDING_INDEX(%temp1))
    34903457        __(push $INTERRUPT_LEVEL_BINDING_INDEX)
    3491         __(push %rcontext:tcr.db_link)
    3492         __(movq %rsp,%rcontext:tcr.db_link)
     3458        __(push rcontext(tcr.db_link))
     3459        __(movq %rsp,rcontext(tcr.db_link))
    34933460        __(movq %arg_z,INTERRUPT_LEVEL_BINDING_INDEX(%temp1))
    34943461        __(jmp *%ra0)
     
    34993466       
    35003467_spentry(unbind_interrupt_level)
    3501         __(btq $TCR_FLAG_BIT_PENDING_SUSPEND,%rcontext:tcr.flags)
    3502         __(movq %rcontext:tcr.db_link,%imm1)
    3503         __(movq %rcontext:tcr.tlb_pointer,%arg_x)
     3468        __(btq $TCR_FLAG_BIT_PENDING_SUSPEND,rcontext(tcr.flags))
     3469        __(movq rcontext(tcr.db_link),%imm1)
     3470        __(movq rcontext(tcr.tlb_pointer),%arg_x)
    35043471        __(movq INTERRUPT_LEVEL_BINDING_INDEX(%arg_x),%imm0)
    35053472        __(jc 5f)
     
    35083475        __(movq binding.link(%imm1),%imm1)
    35093476        __(movq %temp0,INTERRUPT_LEVEL_BINDING_INDEX(%arg_x))
    3510         __(movq %imm1,%rcontext:tcr.db_link)
     3477        __(movq %imm1,rcontext(tcr.db_link))
    35113478        __(js,pn 3f)
    351234792:      __(repret)
     
    35293496       
    35303497_spentry(progvrestore)
    3531         __(movq %rcontext:tcr.save_tsp,%imm0)
     3498        __(movq rcontext(tcr.save_tsp),%imm0)
    35323499        __(movq tsp_frame.backlink(%imm0),%imm0) /* ignore .SPnthrowXXX values frame   */
    35333500        __(movq tsp_frame.data_offset(%imm0),%imm0)
     
    39653932        __(push %save1)
    39663933        __(push %save2)
    3967         __(push %save3)         /* 10 registers pushed after %rbp */
    3968         __(movq %rsp,%rcontext:tcr.save_vsp)
    3969         __(movq %rbp,%rcontext:tcr.save_rbp)
    3970         __(movq $TCR_STATE_FOREIGN,%rcontext:tcr.valence)
    3971         __(movq %rcontext:tcr.foreign_sp,%rsp)
    3972         __(stmxcsr %rcontext:tcr.lisp_mxcsr)
     3934        __ifndef([WINDOWS])
     3935        __(push %save3)         /* 11 registers pushed after %rbp */
     3936        __endif
     3937        __(movq %rsp,rcontext(tcr.save_vsp))
     3938        __(movq %rbp,rcontext(tcr.save_rbp))
     3939        __(movq $TCR_STATE_FOREIGN,rcontext(tcr.valence))
     3940        __(movq rcontext(tcr.foreign_sp),%rsp)
     3941        __(stmxcsr rcontext(tcr.lisp_mxcsr))
    39733942        __(emms)
    3974         __(ldmxcsr %rcontext:tcr.foreign_mxcsr)
     3943        __(ldmxcsr rcontext(tcr.foreign_mxcsr))
    39753944        __(movq (%rsp),%rbp)
    39763945        __ifdef([DARWIN_GS_HACK])
     
    39933962         __(movq %save2,%imm0)
    39943963        __endif
     3964        __ifdef([WINDOWS])
     3965        /* Preserve TCR pointer */
     3966        __(movq %rcontext_reg, %save0)
     3967        __endif
    39953968LocalLabelPrefix[]ffcall_setup:
    39963969        __(addq $2*node_size,%rsp)
    39973970        __(movq %imm1,%r11)
    3998         __(pop %rdi)
    3999         __(pop %rsi)
    4000         __(pop %rdx)
    4001         __(pop %rcx)
    4002         __(pop %r8)
    4003         __(pop %r9)
     3971        __(pop %carg0)
     3972        __(pop %carg1)
     3973        __(pop %carg2)
     3974        __(pop %carg3)
     3975        __ifdef([WINDOWS])
     3976        __(sub $20, %rsp) /* Make room for arg register spill */
     3977        __else
     3978        __(pop %carg4)
     3979        __(pop %carg5)
     3980        __endif
    40043981LocalLabelPrefix[]ffcall_setup_end:
    40053982LocalLabelPrefix[]ffcall_call:
     
    40163993         __(movq %save2,%rdx)
    40173994        __endif
    4018         __(movq %rsp,%rcontext:tcr.foreign_sp)       
     3995        __ifdef([WINDOWS])
     3996        __(movq %save0, %rcontext_reg)
     3997        __endif
     3998        __(movq %rsp,rcontext(tcr.foreign_sp))
     3999        __ifndef([WINDOWS])
    40194000        __(clr %save3)
     4001        __endif
    40204002        __(clr %save2)
    40214003        __(clr %save1)
     
    40294011        __(clr %fn)
    40304012        __(pxor %fpzero,%fpzero)
    4031         /* Darwin's math library seems to be pretty casual
    4032            about causing spurious FP exceptions */
    4033         __ifdef([DARWIN])
    4034          __(movl %arg_x_l,%rcontext:tcr.ffi_exception)
    4035         __else
    4036          __(stmxcsr %rcontext:tcr.ffi_exception)
    4037         __endif
    4038         __(movq %rcontext:tcr.save_vsp,%rsp)
    4039         __(movq %rcontext:tcr.save_rbp,%rbp)
    4040         __(movq $TCR_STATE_LISP,%rcontext:tcr.valence)
     4013        __(cmpb $0,C(bogus_fp_exceptions)(%rip))
     4014        __(je 0f)
     4015        __(movl %arg_x_l,rcontext(tcr.ffi_exception))
     4016        __(jmp 1f)
     40170:      __(stmxcsr rcontext(tcr.ffi_exception))
     40181:      __(movq rcontext(tcr.save_vsp),%rsp)
     4019        __(movq rcontext(tcr.save_rbp),%rbp)
     4020        __(movq $TCR_STATE_LISP,rcontext(tcr.valence))
     4021        __ifndef([WINDOWS])
    40414022        __(pop %save3)
     4023        __endif
    40424024        __(pop %save2)
    40434025        __(pop %save1)
     
    40494031        __(pop %temp2)
    40504032        __(pop %temp1)
    4051         __(ldmxcsr %rcontext:tcr.lisp_mxcsr)
     4033        __(ldmxcsr rcontext(tcr.lisp_mxcsr))
    40524034        __(check_pending_interrupt(%temp0))
    40534035        __(pop %temp0)
    40544036        __(leave)
    40554037        __ifdef([DARWIN])
    4056         __(btrq $TCR_FLAG_BIT_FOREIGN_EXCEPTION,%rcontext:tcr.flags)
     4038        __(btrq $TCR_FLAG_BIT_FOREIGN_EXCEPTION,rcontext(tcr.flags))
    40574039        __(jc,pn 0f)
    40584040        __endif
     
    41614143        __(push %save1)
    41624144        __(push %save2)
     4145        __ifndef([WINDOWS])
    41634146        __(push %save3)
     4147        __endif
    41644148        __(movq macptr.address(%arg_y),%rbx)  /* %rbx non-volatile */
    41654149        __(push %fn)
    4166         __(movq %rsp,%rcontext:tcr.save_vsp)
    4167         __(movq %rbp,%rcontext:tcr.save_rbp)
    4168         __(movq $TCR_STATE_FOREIGN,%rcontext:tcr.valence)
    4169         __(movq %rcontext:tcr.foreign_sp,%rsp)
    4170         __(stmxcsr %rcontext:tcr.lisp_mxcsr)
     4150        __(movq %rsp,rcontext(tcr.save_vsp))
     4151        __(movq %rbp,rcontext(tcr.save_rbp))
     4152        __(movq $TCR_STATE_FOREIGN,rcontext(tcr.valence))
     4153        __(movq rcontext(tcr.foreign_sp),%rsp)
     4154        __(stmxcsr rcontext(tcr.lisp_mxcsr))
    41714155        __(emms)
    4172         __(ldmxcsr %rcontext:tcr.foreign_mxcsr)
     4156        __(ldmxcsr rcontext(tcr.foreign_mxcsr))
    41734157        __(movq (%rsp),%rbp)
    41744158        __ifdef([DARWIN_GS_HACK])
     
    41914175         __(movq %save2,%imm1)
    41924176        __endif
     4177        __ifdef([WINDOWS])
     4178        /* Preserve TCR pointer */
     4179        __(movq %rcontext_reg, %save0)
     4180        __endif
    41934181        __(movq %imm1,%r11)
    41944182LocalLabelPrefix[]ffcall_return_registers_setup:
    41954183        __(addq $2*node_size,%rsp)
    4196         __(pop %rdi)
    4197         __(pop %rsi)
    4198         __(pop %rdx)
    4199         __(pop %rcx)
    4200         __(pop %r8)
    4201         __(pop %r9)
     4184        __(pop %carg0)
     4185        __(pop %carg1)
     4186        __(pop %carg2)
     4187        __(pop %carg3)
     4188        __ifdef([WINDOWS])
     4189        __(sub $20, %rsp) /* Make room for arg register spill */
     4190        __else
     4191        __(pop %carg4)
     4192        __(pop %carg5)
     4193        __endif
    42024194LocalLabelPrefix[]ffcall_return_registers_setup_end:
    42034195LocalLabelPrefix[]ffcall_return_registers_call:
     
    42184210         __(movsd 24(%save2),%xmm1)
    42194211        __endif
    4220         __(movq %rsp,%rcontext:tcr.foreign_sp)       
     4212        __ifdef([WINDOWS])
     4213        __(movq %save0, %rcontext_reg)
     4214        __endif
     4215        __(movq %rsp,rcontext(tcr.foreign_sp))       
     4216        __ifndef([WINDOWS])
    42214217        __(clr %save3)
     4218        __endif
    42224219        __(clr %save2)
    42234220        __(clr %save1)
     
    42314228        __(clr %fn)
    42324229        __(pxor %fpzero,%fpzero)
    4233         /* Darwin's math library seems to be pretty casual
    4234            about causing spurious FP exceptions */
    4235         __ifdef([DARWIN])
    4236          __(movl %arg_x_l,%rcontext:tcr.ffi_exception)
    4237         __else
    4238          __(stmxcsr %rcontext:tcr.ffi_exception)
    4239         __endif
    4240         __(movq %rcontext:tcr.save_vsp,%rsp)
    4241         __(movq %rcontext:tcr.save_rbp,%rbp)
    4242         __(movq $TCR_STATE_LISP,%rcontext:tcr.valence)
     4230        __(cmpb $0,C(bogus_fp_exceptions)(%rip))
     4231        __(je 0f)
     4232        __(movl %arg_x_l,rcontext(tcr.ffi_exception))
     4233        __(jmp 1f)
     42340:      __(stmxcsr rcontext(tcr.ffi_exception))
     42351:      __(movq rcontext(tcr.save_vsp),%rsp)
     4236        __(movq rcontext(tcr.save_rbp),%rbp)
     4237        __(movq $TCR_STATE_LISP,rcontext(tcr.valence))
    42434238        __(pop %fn)
     4239        __ifndef([WINDOWS])
    42444240        __(pop %save3)
     4241        __endif
    42454242        __(pop %save2)
    42464243        __(pop %save1)
     
    42514248        __(pop %temp2)
    42524249        __(pop %temp1)
    4253         __(ldmxcsr %rcontext:tcr.lisp_mxcsr)
     4250        __(ldmxcsr rcontext(tcr.lisp_mxcsr))
    42544251        __(check_pending_interrupt(%temp0))
    42554252        __(pop %temp0)
    42564253        __(leave)
    42574254        __ifdef([DARWIN])
    4258         __(btrq $TCR_FLAG_BIT_FOREIGN_EXCEPTION,%rcontext:tcr.flags)
     4255        __(btrq $TCR_FLAG_BIT_FOREIGN_EXCEPTION,rcontext(tcr.flags))
    42594256        __(jc,pn 0f)
    42604257        __endif
     
    43574354        __(push %save3)
    43584355        __(push %fn)
    4359         __(movq %rsp,%rcontext:tcr.save_vsp)
    4360         __(movq %rbp,%rcontext:tcr.save_rbp)
    4361         __(movq $TCR_STATE_FOREIGN,%rcontext:tcr.valence)
    4362         __(movq %rcontext:tcr.foreign_sp,%rsp)
     4356        __(movq %rsp,rcontext(tcr.save_vsp))
     4357        __(movq %rbp,rcontext(tcr.save_rbp))
     4358        __(movq $TCR_STATE_FOREIGN,rcontext(tcr.valence))
     4359        __(movq rcontext(tcr.foreign_sp),%rsp)
    43634360        __(emms)
    43644361        __(movq (%rsp),%rbp)
     
    43784375        __endif       
    43794376        __(movq %rbp,%rsp)
    4380         __(movq %rsp,%rcontext:tcr.foreign_sp)       
     4377        __(movq %rsp,rcontext(tcr.foreign_sp))       
    43814378        __(clr %save3)
    43824379        __(clr %save2)
     
    43914388        __(clr %fn)
    43924389        __(pxor %fpzero,%fpzero)
    4393         __(movq %rcontext:tcr.save_vsp,%rsp)
    4394         __(movq %rcontext:tcr.save_rbp,%rbp)
    4395         __(movq $TCR_STATE_LISP,%rcontext:tcr.valence)
     4390        __(movq rcontext(tcr.save_vsp),%rsp)
     4391        __(movq rcontext(tcr.save_rbp),%rbp)
     4392        __(movq $TCR_STATE_LISP,rcontext(tcr.valence))
    43964393        __(pop %fn)
    43974394        __(pop %save3)
     
    44154412        new_local_labels()
    44164413        __(movq (%arg_z),%imm0)
    4417         __(testw %nargs,%nargs) /* anything pushed by caller ? */
     4414        __(testl %nargs,%nargs) /* anything pushed by caller ? */
    44184415        __(leaq node_size(%arg_z,%imm0),%imm1)
    44194416        __(jne 0f)              /* yes, caller has already created frame. */
     
    44224419        __(push $reserved_frame_marker)
    44234420        __(push $reserved_frame_marker)
    4424 0:      __(addw %imm0_w,%nargs)
     44210:      __(addw %imm0_w,%nargs_w)
    44254422        __(cmpw $(nargregs*node_size),%imm0_w)
    44264423        __(jae 9f)
     
    44314428        /* lexpr count was 0; vpop the args that */
    44324429        /* were pushed by the caller */
    4433         __(testw %nargs,%nargs)
     4430        __(testl %nargs,%nargs)
    44344431        __(je local_label(all_args_popped))
    44354432        __(pop %arg_z)
    44364433local_label(maybe_pop_yx):             
    4437         __(cmpw $(1*node_size),%nargs)
     4434        __(cmpl $(1*node_size),%nargs)
    44384435        __(je local_label(all_args_popped))
    44394436        __(pop %arg_y)
    4440         __(cmp $(2*node_size),%nargs)
     4437        __(cmpl $(2*node_size),%nargs)
    44414438        __(je local_label(all_args_popped))
    44424439local_label(pop_arg_x):         
     
    44464443        /* by the caller, discard the reserved frame that the caller */
    44474444        /* pushed.         */
    4448         __(cmpw %imm0_w,%nargs)
     4445        __(cmpw %imm0_w,%nargs_w)
    44494446        __(je local_label(go))
    4450         __(cmpw $(nargregs*node_size),%nargs)
     4447        __(cmpl $(nargregs*node_size),%nargs)
    44514448        __(ja local_label(go))
    44524449        __(addq $(2*node_size),%rsp)
     
    44684465        /* lexpr count is two: set arg_y, arg_z from the */
    44694466        /* lexpr, maybe vpop arg_x */
    4470 2:      __(cmpw $(2*node_size),%nargs)
     44672:      __(cmpl $(2*node_size),%nargs)
    44714468        __(movq -node_size*1(%imm1),%arg_y)
    44724469        __(movq -node_size*2(%imm1),%arg_z)
     
    45124509        __ifdef([HAVE_TLS])
    45134510         /* TCR initialized for lisp ?   */
     4511         __ifndef([WINDOWS]) /* FIXME */
    45144512         __(movq %fs:current_tcr@TPOFF+tcr.linear,%rax)
     4513         __endif
    45154514         __(testq %rax,%rax)
    45164515         __(jne 1f)
     
    45274526        __(movq %r12,%r11)
    452845271:      /* Align foreign stack for lisp   */
    4529         __(pushq %rcontext:tcr.save_rbp) /* mark cstack frame's "owner" */
    4530         __(pushq %rcontext:tcr.foreign_sp)
     4528        __(pushq rcontext(tcr.save_rbp)) /* mark cstack frame's "owner" */
     4529        __(pushq rcontext(tcr.foreign_sp))
    45314530        /* init lisp registers   */
    45324531        __(movq %r11,%rax)
    4533         __(movq %rsp,%rcontext:tcr.foreign_sp)
     4532        __(movq %rsp,rcontext(tcr.foreign_sp))
    45344533        __(clr %save3)
    45354534        __(clr %save2)
     
    45444543        __(clr %fn)
    45454544        __(pxor %fpzero,%fpzero)
    4546         __(movq %rcontext:tcr.save_vsp,%rsp)
     4545        __(movq rcontext(tcr.save_vsp),%rsp)
    45474546        __(box_fixnum(%rax,%arg_y))
    45484547        __(movq %rbp,%arg_z)
    4549         __(movq %rcontext:tcr.save_rbp,%rbp)
    4550         __(movq $TCR_STATE_LISP,%rcontext:tcr.valence)
     4548        __(movq rcontext(tcr.save_rbp),%rbp)
     4549        __(movq $TCR_STATE_LISP,rcontext(tcr.valence))
    45514550        __(movq (%rsp),%save3)
    45524551        __(movq 8(%rsp),%save2)
    45534552        __(movq 16(%rsp),%save1)
    45544553        __(movq 24(%rsp),%save0)
    4555         __(stmxcsr %rcontext:tcr.foreign_mxcsr)
    4556         __(andb $~mxcsr_all_exceptions,%rcontext:tcr.foreign_mxcsr)
    4557         __(ldmxcsr %rcontext:tcr.lisp_mxcsr)
     4554        __(stmxcsr rcontext(tcr.foreign_mxcsr))
     4555        __(andb $~mxcsr_all_exceptions,rcontext(tcr.foreign_mxcsr))
     4556        __(ldmxcsr rcontext(tcr.lisp_mxcsr))
    45584557        __(movq $nrs.callbacks,%fname)
    45594558        __(lea local_label(back_from_callback)(%rip),%ra0)
     
    45624561        __(jump_fname())
    45634562__(tra(local_label(back_from_callback)))
    4564         __(movq %rsp,%rcontext:tcr.save_vsp)
    4565         __(movq %rbp,%rcontext:tcr.save_rbp)
    4566         __(movq %rcontext:tcr.foreign_sp,%rsp)
    4567         __(stmxcsr %rcontext:tcr.lisp_mxcsr)
    4568         __(movq $TCR_STATE_FOREIGN,%rcontext:tcr.valence)
     4563        __(movq %rsp,rcontext(tcr.save_vsp))
     4564        __(movq %rbp,rcontext(tcr.save_rbp))
     4565        __(movq rcontext(tcr.foreign_sp),%rsp)
     4566        __(stmxcsr rcontext(tcr.lisp_mxcsr))
     4567        __(movq $TCR_STATE_FOREIGN,rcontext(tcr.valence))
    45694568        __(emms)
    4570         __(pop %rcontext:tcr.foreign_sp)
     4569        __(pop rcontext(tcr.foreign_sp))
    45714570        __(addq $node_size,%rsp)
    4572         __(ldmxcsr %rcontext:tcr.foreign_mxcsr)
     4571        __(ldmxcsr rcontext(tcr.foreign_mxcsr))
    45734572        __ifdef([DARWIN_GS_HACK])
    45744573         /* Lucky us; nothing is live here */
     
    47634762        __(subq $fulltag_function-fulltag_misc,%fn)
    47644763        __(vector_length(%fn,%imm0))
    4765         __(movzwl %nargs,%nargs_l)
    47664764       
    47674765        __(subq $6<<fixnumshift,%imm0)  /* imm0 = inherited arg count   */
    47684766        __(lea (%nargs_q,%imm0),%imm1)
    4769         __(cmpw $nargregs<<fixnumshift,%imm1_w)
     4767        __(cmpl $nargregs<<fixnumshift,%imm1_l)
    47704768        __(jna,pt local_label(regs_only))
    47714769        __(pop %ra0)
    4772         __(cmpw $nargregs<<fixnumshift,%nargs)
     4770        __(cmpl $nargregs<<fixnumshift,%nargs)
    47734771        __(jna,pt local_label(no_insert))
    47744772       
     
    48034801        __(movq misc_data_offset(%fn,%imm1),%arg_z)
    48044802        __(addq $node_size,%imm1)
    4805         __(addw $fixnum_one,%nargs)
     4803        __(addl $fixnum_one,%nargs)
    48064804        __(subq $node_size,%arg_x)
    48074805        __(movq %arg_z,(%arg_x))
     
    48304828        /* nargregs or fewer args were already vpushed.   */
    48314829        /* if exactly nargregs, vpush remaining inherited vars.   */
    4832         __(cmpw $nargregs<<fixnumshift,%nargs)
     4830        __(cmpl $nargregs<<fixnumshift,%nargs)
    48334831        __(movl $5<<fixnumshift,%imm1_l) /* skip code, new fn   */
    48344832        __(leaq 5<<fixnumshift(%imm0),%temp1)
     
    48374835        __(push misc_data_offset(%fn,%imm1))
    48384836        __(addq $node_size,%imm1)
    4839         __(addw $fixnumone,%nargs)
     4837        __(addl $fixnumone,%nargs)
    48404838        __(subq $node_size,%imm0)
    48414839        __(jnz local_label(vpush_remaining))
     
    48444842        /* if nargs was > 1 (and we know that it was < 3), it must have   */
    48454843        /* been 2.  Set arg_x, then vpush the remaining args.   */
    4846         __(cmpw $fixnumone,%nargs)
     4844        __(cmpl $fixnumone,%nargs)
    48474845        __(jle local_label(set_y_z))
    48484846local_label(set_arg_x):
    48494847        __(subq $node_size,%temp1)
    48504848        __(movq misc_data_offset(%fn,%temp1),%arg_x)
    4851         __(addw $fixnumone,%nargs)
     4849        __(addl $fixnumone,%nargs)
    48524850        __(subq $fixnumone,%imm0)
    48534851        __(jne local_label(vpush_remaining))
     
    48604858        __(subq $node_size,%temp1)
    48614859        __(movq misc_data_offset(%fn,%temp1),%arg_y)
    4862         __(addw $fixnumone,%nargs)
     4860        __(addl $fixnumone,%nargs)
    48634861        __(subq $fixnum_one,%imm0)
    48644862        __(jnz local_label(set_arg_x))
     
    48674865        __(subq $node_size,%temp1)
    48684866        __(movq misc_data_offset(%fn,%temp1),%arg_z)
    4869         __(addw $fixnumone,%nargs)
     4867        __(addl $fixnumone,%nargs)
    48704868        __(subq $fixnum_one,%imm0)
    48714869        __(jne local_label(set_arg_y))
     
    48764874local_label(regs_only):
    48774875        __(leaq 5<<fixnumshift(%imm0),%temp1)
    4878         __(testw %nargs,%nargs)
     4876        __(testl %nargs,%nargs)
    48794877        __(jne local_label(some_args))
    48804878        __(cmpw $node_size,%imm0)
     
    48864884        __(movq misc_data_offset-(node_size*3)(%fn,%temp1),%arg_x)
    48874885local_label(rgo):
    4888         __(addw %imm0_w,%nargs)
     4886        __(addw %imm0_w,%nargs_w)
    48894887        __(jmp *misc_data_offset+(4*node_size)(%fn))
    48904888local_label(some_args):         
    4891         __(cmpw $2*node_size,%nargs)
     4889        __(cmpl $2*node_size,%nargs)
    48924890        __(jz local_label(rtwo))
    48934891        /* One arg was passed, could be one or two inherited args */
Note: See TracChangeset for help on using the changeset viewer.