Changeset 8257


Ignore:
Timestamp:
Jan 24, 2008, 7:58:29 AM (12 years ago)
Author:
gb
Message:

Use in m4 macroexpansions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/ppc-macros.s

    r7624 r8257  
    4141
    4242ifdef([PPC64],[
    43         define([clrrri],[
    44         clrrdi $@
    45         ])       
    46         define([clrlri],[
    47         clrldi $@
    48         ])
    49         define([clrlri_],[
    50         clrldi. $@
    51         ])
    52         define([ldr],[
    53         ld $@
    54         ])
    55         define([ldrx],[
    56         ldx $@
    57         ])
    58         define([ldru],[
    59         ldu $@
    60         ])
    61         define([str],[
    62         std $@
    63         ])
    64         define([strx],[
    65         stdx $@
    66         ])
    67         define([stru],[
    68         stdu $@
    69         ])
    70         define([strux],[
    71         stdux $@
    72         ])     
    73         define([cmpr],[
    74         cmpd $@
    75         ])
    76         define([cmpri],[
    77         cmpdi $@
    78         ])
    79         define([cmplr],[
    80         cmpld $@
    81         ])
    82         define([cmplri],[
    83         cmpldi $@
    84         ])
    85         define([trlge],[
    86         tdlge $@
    87         ])
    88         define([trllt],[
    89         tdllt $@
    90         ])
    91         define([trlt],[
    92         tdlt $@
    93         ])
    94         define([trlle],[
    95         tdlle $@
    96         ])
    97         define([treqi],[
    98         tdeqi $@
    99         ])
    100         define([trnei],[
    101         tdnei $@
    102         ])
    103         define([trgti],[
    104         tdgti $@
    105         ])
    106         define([srari],[
    107         sradi $@
    108         ])
    109         define([srri],[
    110         srdi $@
    111         ])
    112         define([srr],[
    113         srd $@
    114         ])
    115         define([slri],[
    116         sldi $@
    117         ])
    118         define([lrarx],[
    119         ldarx $@
    120         ])
    121         define([strcx],[
    122         stdcx. $@
    123         ])
     43        define([clrrri],[clrrdi $@])       
     44        define([clrlri],[clrldi $@])
     45        define([clrlri_],[clrldi. $@])
     46        define([ldr],[ld $@])
     47        define([ldrx],[ldx $@])
     48        define([ldru],[ldu $@])
     49        define([str],[std $@])
     50        define([strx],[stdx $@])
     51        define([stru],[stdu $@])
     52        define([strux],[stdux $@])     
     53        define([cmpr],[cmpd $@])
     54        define([cmpri],[cmpdi $@])
     55        define([cmplr],[cmpld $@])
     56        define([cmplri],[cmpldi $@])
     57        define([trlge],[tdlge $@])
     58        define([trllt],[tdllt $@])
     59        define([trlt],[tdlt $@])
     60        define([trlle],[tdlle $@])
     61        define([treqi],[tdeqi $@])
     62        define([trnei],[tdnei $@])
     63        define([trgti],[tdgti $@])
     64        define([srari],[sradi $@])
     65        define([srri],[srdi $@])
     66        define([srr],[srd $@])
     67        define([slri],[sldi $@])
     68        define([lrarx],[ldarx $@])
     69        define([strcx],[stdcx. $@])
    12470        define([load_highbit],[
    125         lis $1,0x8000
    126         sldi $1,$1,32
     71        __(lis $1,0x8000)
     72        __(sldi $1,$1,32)
    12773        ])
    12874        define([extract_bit_shift_count],[
    129         clrldi $1,$2,64-bitmap_shift
     75        __(clrldi $1,$2,64-bitmap_shift)
    13076        ])
    13177        define([alloc_trap],[
    132         tdlt allocptr,allocbase
    133         ])
    134         define([mullr],[
    135         mulld $@
    136         ])
     78        __(tdlt allocptr,allocbase)
     79        ])
     80        define([mullr],[mulld $@])
    13781],[
    138         define([clrrri],[
    139         clrrwi $@
    140         ])
    141         define([clrlri],[
    142         clrlwi $@
    143         ])
    144         define([clrlri_],[
    145         clrlwi. $@
    146         ])
    147         define([ldr],[
    148         lwz $@
    149         ])
    150         define([ldrx],[
    151         lwzx $@
    152         ])
    153         define([ldru],[
    154         lwzu $@
    155         ])
    156         define([str],[
    157         stw $@
    158         ])
    159         define([strx],[
    160         stwx $@
    161         ])
    162         define([stru],[
    163         stwu $@
    164         ])
    165         define([strux],[
    166         stwux $@
    167         ])
    168         define([cmpr],[
    169         cmpw $@
    170         ])
    171         define([cmpri],[
    172         cmpwi $@
    173         ])
    174         define([cmplr],[
    175         cmplw $@
    176         ])
    177         define([cmplri],[
    178         cmplwi $@
    179         ])
    180         define([trlge],[
    181         twlge $@
    182         ])
    183         define([trllt],[
    184         twllt $@
    185         ])
    186         define([trlt],[
    187         twlt $@
    188         ])
    189         define([trlle],[
    190         twlle $@
    191         ])       
    192         define([treqi],[
    193         tweqi $@
    194         ])
    195         define([trnei],[
    196         twnei $@
    197         ])
    198         define([trgti],[
    199         twgti $@
    200         ])
    201         define([srari],[
    202         srawi $@
    203         ])
    204         define([srri],[
    205         srwi $@
    206         ])
    207         define([srr],[
    208         srw $@
    209         ])
    210         define([slri],[
    211         slwi $@
    212         ])
    213         define([lrarx],[
    214         lwarx $@
    215         ])
    216         define([strcx],[
    217         stwcx. $@
    218         ])
     82        define([clrrri],[clrrwi $@])
     83        define([clrlri],[clrlwi $@])
     84        define([clrlri_],[clrlwi. $@])
     85        define([ldr],[lwz $@])
     86        define([ldrx],[lwzx $@])
     87        define([ldru],[lwzu $@])
     88        define([str],[stw $@])
     89        define([strx],[stwx $@])
     90        define([stru],[stwu $@])
     91        define([strux],[stwux $@])
     92        define([cmpr],[cmpw $@])
     93        define([cmpri],[cmpwi $@])
     94        define([cmplr],[cmplw $@])
     95        define([cmplri],[cmplwi $@])
     96        define([trlge],[twlge $@])
     97        define([trllt],[twllt $@])
     98        define([trlt],[twlt $@])
     99        define([trlle],[twlle $@])       
     100        define([treqi],[tweqi $@])
     101        define([trnei],[twnei $@])
     102        define([trgti],[twgti $@])
     103        define([srari],[srawi $@])
     104        define([srri],[srwi $@])
     105        define([srr],[srw $@])
     106        define([slri],[slwi $@])
     107        define([lrarx],[lwarx $@])
     108        define([strcx],[stwcx. $@])
    219109        define([load_highbit],[
    220         lis $1,0x8000
     110        __(lis $1,0x8000)
    221111        ])
    222112        define([extract_bit_shift_count],[
    223         clrlwi $1,$2,32-bitmap_shift
     113        __(clrlwi $1,$2,32-bitmap_shift)
    224114        ])
    225115        define([alloc_trap],[
    226         twllt allocptr,allocbase
    227         ])
    228         define([mullr],[
    229         mullw $@
    230         ])
     116        __(twllt allocptr,allocbase)
     117        ])
     118        define([mullr],[mullw $@])
    231119])
    232120
    233121/* dnode_align(dest,src,delta) */
    234122        define([dnode_align],[
    235         la $1,($3+(dnode_size-1))($2)
    236         clrrri($1,$1,dnode_align_bits)
     123        __(la $1,($3+(dnode_size-1))($2))
     124        __(clrrri($1,$1,dnode_align_bits))
    237125])
    238126
    239127define([extract_fulltag],[
    240         clrlri($1,$2,nbits_in_word-ntagbits)
     128        __(clrlri($1,$2,nbits_in_word-ntagbits))
    241129        ])
    242130
    243131define([extract_lisptag],[
    244         clrlri($1,$2,nbits_in_word-nlisptagbits)
     132        __(clrlri($1,$2,nbits_in_word-nlisptagbits))
    245133        ])
    246134
    247135define([extract_lisptag_],[
    248         clrlri_($1,$2,nbits_in_word-nlisptagbits)
     136        __(clrlri_($1,$2,nbits_in_word-nlisptagbits))
    249137        ])
    250138
    251139define([extract_subtag],[
    252         lbz $1,misc_subtag_offset($2)])
     140        __(lbz $1,misc_subtag_offset($2))
     141        ])
    253142
    254143ifdef([PPC64],[
    255144define([extract_lowtag],[
    256         clrldi $1,$2,nbits_in_word-nlowtagbits
     145        __(clrldi $1,$2,nbits_in_word-nlowtagbits)
    257146])
    258147define([trap_unless_lowtag_equal],[
    259         clrldi $3,$1,nbits_in_word-nlowtagbits
    260         tdnei $3,$2
     148        __(clrldi $3,$1,nbits_in_word-nlowtagbits)
     149        __(tdnei $3,$2)
    261150])               
    262151        ])
    263152                               
    264153define([extract_lowbyte],[
    265         clrlri($1,$2,nbits_in_word-num_subtag_bits)
     154        __(clrlri($1,$2,nbits_in_word-num_subtag_bits))
    266155        ])
    267156
    268157define([extract_header],[
    269         ldr($1,misc_header_offset($2))])
     158        __(ldr($1,misc_header_offset($2)))
     159        ])
    270160
    271161
     
    273163define([extract_typecode],[
    274164        new_macro_labels()
    275         extract_fulltag($1,$2)
    276         cmpdi cr0,$1,fulltag_misc
    277         extract_lisptag($1,$1)
    278         bne cr0,macro_label(not_misc)
    279         extract_subtag($1,$2)
     165        __(extract_fulltag($1,$2))
     166        __(cmpdi cr0,$1,fulltag_misc)
     167        __(extract_lisptag($1,$1))
     168        __(bne cr0,macro_label(not_misc))
     169        __(extract_subtag($1,$2))
    280170macro_label(not_misc):
    281171])],[   
    282172define([extract_typecode],[
    283173        new_macro_labels()
    284         extract_lisptag($1,$2)
    285         cmpwi cr0,$1,tag_misc
    286         bne cr0,macro_label(not_misc)
    287         extract_subtag($1,$2)
     174        __(extract_lisptag($1,$2))
     175        __(cmpwi cr0,$1,tag_misc)
     176        __(bne cr0,macro_label(not_misc))
     177        __(extract_subtag($1,$2))
    288178macro_label(not_misc):
    289179])])
    290180
    291181define([box_fixnum],[
    292         slri($1,$2,fixnumshift)])
     182        __(slri($1,$2,fixnumshift))
     183        ])
    293184
    294185define([unbox_fixnum],[
    295         srari($1,$2,fixnumshift)])
     186        __(srari($1,$2,fixnumshift))
     187        ])
    296188
    297189define([loaddf],[
    298         lfd $1,dfloat.value($2)])
     190        __(lfd $1,dfloat.value($2))])
    299191       
    300192define([storedf],[
    301         stfd $1,dfloat.value($2)])
     193        __(stfd $1,dfloat.value($2))
     194        ])
    302195
    303196define([push],[
    304         stru($1,-node_size($2))])
     197        __(stru($1,-node_size($2)))
     198        ])
    305199       
    306200        /* Generally not a great idea. */
    307201define([pop],[
    308         ldr($1,0($2))
    309         la $2,node_size($2)])
     202        __(ldr($1,0($2)))
     203        __(la $2,node_size($2))
     204        ])
    310205       
    311206define([vpush],[
    312         push($1,vsp)])
     207        __(push($1,vsp))
     208        ])
    313209       
    314210define([vpop],[
    315         pop($1,vsp)])
     211        __(pop($1,vsp))
     212        ])
    316213       
    317214               
    318215define([unlink],[
    319         ldr($1,0($1))
     216        __(ldr($1,0($1)))
    320217 ])
    321218
    322219       
    323220define([set_nargs],[
    324         lwi(nargs,($1)<<fixnumshift)])
     221        __(lwi(nargs,($1)<<fixnumshift))
     222        ])
    325223       
    326224define([bitclr],[
    327         rlwinm $1,$2,0,0x1f&((31-($3))+1),0x1f&((31-($3))-1)])
     225        __(rlwinm $1,$2,0,0x1f&((31-($3))+1),0x1f&((31-($3))-1))
     226        ])
    328227       
    329228
    330229define([vref32],[
    331         lwz $1,misc_data_offset+(($3)<<2)($2)])
     230        __(lwz $1,misc_data_offset+(($3)<<2)($2))
     231        ])
    332232       
    333233define([vref16],[/* dest,src,n*/
    334         lhz $1,misc_data_offset+(($3)<<1)($2)])
     234        __(lhz $1,misc_data_offset+(($3)<<1)($2))
     235        ])
    335236       
    336237ifdef([PPC64],[
    337238        define([vref64],[
    338         ld $1,misc_data_offset+(($3)<<3)($2)])
     239        __(ld $1,misc_data_offset+(($3)<<3)($2))
     240        ])
    339241
    340242        define([vrefr],[
    341         vref64($1,$2,$3)])
     243        __(vref64($1,$2,$3))
     244        ])
    342245],[
    343246        define([vrefr],[
    344         vref32($1,$2,$3)])
     247        __(vref32($1,$2,$3))
     248        ])
    345249])
    346250       
    347251                       
    348252define([getvheader],[
    349         ldr($1,vector.header($2))])
     253        __(ldr($1,vector.header($2)))
     254        ])
    350255       
    351256        /* Size is unboxed element count */
    352257define([header_size],[
    353         srri($1,$2,num_subtag_bits)])
     258        __(srri($1,$2,num_subtag_bits))
     259        ])
    354260       
    355261        /* "Length" is fixnum element count */
    356262define([header_length],[
    357263ifdef([PPC64],[
    358         rldicr $1,$2,nbits_in_word-(num_subtag_bits-nfixnumtagbits),63-nfixnumtagbits
    359         clrldi $1,$1,(num_subtag_bits-nfixnumtagbits)
     264        __(rldicr $1,$2,nbits_in_word-(num_subtag_bits-nfixnumtagbits),63-nfixnumtagbits)
     265        __(clrldi $1,$1,(num_subtag_bits-nfixnumtagbits))
    360266        ],[               
    361         rlwinm $1,$2,nbits_in_word-(num_subtag_bits-nfixnumtagbits),(num_subtag_bits-nfixnumtagbits),31-nfixnumtagbits
     267        __(rlwinm $1,$2,nbits_in_word-(num_subtag_bits-nfixnumtagbits),(num_subtag_bits-nfixnumtagbits),31-nfixnumtagbits)
    362268        ])
    363269])       
     
    365271
    366272define([vector_size],[
    367         getvheader(ifelse($3.[],$1,$3),$2)
    368         header_size($1,ifelse($3.[],$1,$3))])
     273        __(getvheader(ifelse($3.[],$1,$3),$2))
     274        __(header_size($1,ifelse($3.[],$1,$3)))
     275        ])
    369276       
    370277define([vector_length],[
    371         getvheader($3,$2)
    372         header_length($1,$3)])
     278        __(getvheader($3,$2))
     279        __(header_length($1,$3))
     280        ])
    373281
    374282       
    375283define([ref_global],[
    376         ldr($1,lisp_globals.$2(0))
     284        __(ldr($1,lisp_globals.$2(0)))
    377285])
    378286
    379287define([set_global],[
    380         str($1,lisp_globals.$2(0))
     288        __(str($1,lisp_globals.$2(0)))
    381289])
    382290
    383291define([ref_nrs_value],[
    384         ldr($1,((nrs.$2)+(symbol.vcell))(0))
     292        __(ldr($1,((nrs.$2)+(symbol.vcell))(0)))
    385293])
    386294       
    387295define([set_nrs_value],[
    388         str($1,((nrs.$2)+(symbol.vcell))(0))
     296        __(str($1,((nrs.$2)+(symbol.vcell))(0)))
    389297])
    390298
    391299define([extract_unsigned_byte_bits],[
    392300ifdef([PPC64],[
    393         rldicr $1,$2,64-fixnumshift,63-$3
     301        __(rldicr $1,$2,64-fixnumshift,63-$3)
    394302],[               
    395         rlwinm $1,$2,0,32-fixnumshift,31-($3+fixnumshift)
     303        __(rlwinm $1,$2,0,32-fixnumshift,31-($3+fixnumshift))
    396304])       
    397305])
     
    399307define([extract_unsigned_byte_bits_],[
    400308ifdef([PPC64],[
    401         rldicr. $1,$2,64-fixnumshift,63-$3
     309        __(rldicr. $1,$2,64-fixnumshift,63-$3)
    402310],[               
    403         rlwinm. $1,$2,0,32-fixnumshift,31-($3+fixnumshift)
     311        __(rlwinm. $1,$2,0,32-fixnumshift,31-($3+fixnumshift))
    404312])       
    405313])
     
    408316define([vpop_argregs_nz],[
    409317        new_macro_labels()
    410         cmplri(cr1,nargs,node_size*2)
    411         vpop(arg_z)
    412         blt cr1,macro_label(l0)
    413         vpop(arg_y)
    414         bne cr1,macro_label(l0)
    415         vpop(arg_x)
     318        __(cmplri(cr1,nargs,node_size*2))
     319        __(vpop(arg_z))
     320        __(blt cr1,macro_label(l0))
     321        __(vpop(arg_y))
     322        __(bne cr1,macro_label(l0))
     323        __(vpop(arg_x))
    416324macro_label(l0):])
    417325
     
    420328define([vpush_argregs],[
    421329        new_macro_labels()
    422         cmplri(cr0,nargs,0)
    423         cmplri(cr1,nargs,node_size*2)
    424         beq cr0,macro_label(done)
    425         blt cr1,macro_label(z)
    426         beq cr1,macro_label(yz)
    427         vpush(arg_x)
     330        __(cmplri(cr0,nargs,0))
     331        __(cmplri(cr1,nargs,node_size*2))
     332        __(beq cr0,macro_label(done))
     333        __(blt cr1,macro_label(z))
     334        __(beq cr1,macro_label(yz))
     335        __(vpush(arg_x))
    428336macro_label(yz):
    429         vpush(arg_y)
     337        __(vpush(arg_y))
    430338macro_label(z):
    431         vpush(arg_z)
     339        __(vpush(arg_z))
    432340macro_label(done):
    433341])
    434342
    435343define([create_lisp_frame],[
    436         stru(sp,-lisp_frame.size(sp))
     344        __(stru(sp,-lisp_frame.size(sp)))
    437345])
    438346
     
    440348define([build_lisp_frame],[
    441349        create_lisp_frame()
    442         str(ifelse($1,[],fn,$1),lisp_frame.savefn(sp))
    443         str(ifelse($2,[],loc_pc,$2),lisp_frame.savelr(sp))
    444         str(ifelse($3,[],vsp,$3),lisp_frame.savevsp(sp))
     350        __(str(ifelse($1,[],fn,$1),lisp_frame.savefn(sp)))
     351        __(str(ifelse($2,[],loc_pc,$2),lisp_frame.savelr(sp)))
     352        __(str(ifelse($3,[],vsp,$3),lisp_frame.savevsp(sp)))
    445353])
    446354
    447355               
    448356define([discard_lisp_frame],[
    449         la sp,lisp_frame.size(sp)])
     357        __(la sp,lisp_frame.size(sp))
     358        ])
    450359       
    451360       
    452361define([_car],[
    453         ldr($1,cons.car($2))
     362        __(ldr($1,cons.car($2)))
    454363])
    455364       
    456365define([_cdr],[
    457         ldr($1,cons.cdr($2))])
     366        __(ldr($1,cons.cdr($2)))
     367        ])
    458368       
    459369define([_rplaca],[
    460         str($2,cons.car($1))])
     370        __(str($2,cons.car($1)))
     371        ])
    461372       
    462373define([_rplacd],[
    463         str($2,cons.cdr($1))])
     374        __(str($2,cons.cdr($1)))
     375        ])
    464376
    465377define([vpush_saveregs],[
    466         vpush(save7)
    467         vpush(save6)
    468         vpush(save5)
    469         vpush(save4)
    470         vpush(save3)
    471         vpush(save2)
    472         vpush(save1)
    473         vpush(save0)])
     378        __(vpush(save7))
     379        __(vpush(save6))
     380        __(vpush(save5))
     381        __(vpush(save4))
     382        __(vpush(save3))
     383        __(vpush(save2))
     384        __(vpush(save1))
     385        __(vpush(save0))
     386        ])
    474387       
    475388define([restore_saveregs],[
    476         ldr(save0,node_size*0($1))
    477         ldr(save1,node_size*1($1))
    478         ldr(save2,node_size*2($1))
    479         ldr(save3,node_size*3($1))
    480         ldr(save4,node_size*4($1))
    481         ldr(save5,node_size*5($1))
    482         ldr(save6,node_size*6($1))
    483         ldr(save7,node_size*7($1))
     389        __(ldr(save0,node_size*0($1)))
     390        __(ldr(save1,node_size*1($1)))
     391        __(ldr(save2,node_size*2($1)))
     392        __(ldr(save3,node_size*3($1)))
     393        __(ldr(save4,node_size*4($1)))
     394        __(ldr(save5,node_size*5($1)))
     395        __(ldr(save6,node_size*6($1)))
     396        __(ldr(save7,node_size*7($1)))
    484397])
    485398
    486399define([vpop_saveregs],[
    487         restore_saveregs(vsp)
    488         la vsp,node_size*8(vsp)
     400        __(restore_saveregs(vsp))
     401        __(la vsp,node_size*8(vsp))
    489402])
    490403
    491404define([trap_unless_lisptag_equal],[
    492         extract_lisptag($3,$1)
    493         trnei($3,$2)
     405        __(extract_lisptag($3,$1))
     406        __(trnei($3,$2))
    494407])
    495408
     
    497410define([trap_unless_list],[
    498411        new_macro_labels()
    499         cmpdi ifelse($3,$3,cr0),$1,nil_value
    500         extract_fulltag($2,$1)
    501         beq ifelse($3,$3,cr0),macro_label(is_list)
    502         tdnei $2,fulltag_cons
     412        __(cmpdi ifelse($3,$3,cr0),$1,nil_value)
     413        __(extract_fulltag($2,$1))
     414        __(beq ifelse($3,$3,cr0),macro_label(is_list))
     415        __(tdnei $2,fulltag_cons)
    503416macro_label(is_list):   
    504417
    505418])],[   
    506419define([trap_unless_list],[
    507         trap_unless_lisptag_equal($1,tag_list,$2)
     420        __(trap_unless_lisptag_equal($1,tag_list,$2))
    508421])
    509422])
    510423
    511424define([trap_unless_fulltag_equal],[
    512         extract_fulltag($3,$1)
    513         trnei($3,$2)
     425        __(extract_fulltag($3,$1))
     426        __(trnei($3,$2))
    514427])
    515428       
    516429define([trap_unless_typecode_equal],[
    517         extract_typecode($3,$1)
    518         trnei($3,$2)
     430        __(extract_typecode($3,$1))
     431        __(trnei($3,$2))
    519432])
    520433       
    521434/* "jump" to the code-vector of the function in nfn. */
    522435define([jump_nfn],[
    523         ldr(temp0,_function.codevector(nfn))
    524         mtctr temp0
    525         bctr
     436        __(ldr(temp0,_function.codevector(nfn)))
     437        __(mtctr temp0)
     438        __(bctr)
    526439])
    527440
    528441/* "call the code-vector of the function in nfn. */
    529442define([call_nfn],[
    530         ldr(temp0,_function.codevector(nfn))
    531         mtctr temp0
    532         bctrl
     443        __(ldr(temp0,_function.codevector(nfn)))
     444        __(mtctr temp0)
     445        __(bctrl)
    533446])
    534447       
     
    536449/* "jump" to the function in fnames function cell. */
    537450define([jump_fname],[
    538         ldr(nfn,symbol.fcell(fname))
    539         jump_nfn()
     451        __(ldr(nfn,symbol.fcell(fname)))
     452        __(jump_nfn())
    540453])
    541454
    542455/* call the function in fnames function cell. */
    543456define([call_fname],[
    544         ldr(nfn,symbol.fcell(fname))
    545         call_nfn()
     457        __(ldr(nfn,symbol.fcell(fname)))
     458        __(call_nfn())
    546459])
    547460
    548461define([do_funcall],[
    549462        new_macro_labels()
    550         extract_fulltag(imm0,temp0)
    551         cmpri(imm0,fulltag_misc)
    552         mr nfn,temp0
    553         bne- macro_label(bad)
    554         extract_subtag(imm0,temp0)
    555         cmpri(imm0,subtag_function)
    556         cmpri(cr1,imm0,subtag_symbol)
    557         bne cr0,macro_label(_sym)
    558         jump_nfn()
     463        __(extract_fulltag(imm0,temp0))
     464        __(cmpri(imm0,fulltag_misc))
     465        __(mr nfn,temp0)
     466        __(bne- macro_label(bad))
     467        __(extract_subtag(imm0,temp0))
     468        __(cmpri(imm0,subtag_function))
     469        __(cmpri(cr1,imm0,subtag_symbol))
     470        __(bne cr0,macro_label(_sym))
     471        __(jump_nfn())
    559472macro_label(_sym):             
    560         mr fname,temp0
    561         bne cr1,macro_label(bad)
    562         jump_fname()
     473        __(mr fname,temp0)
     474        __(bne cr1,macro_label(bad))
     475        __(jump_fname())
    563476macro_label(bad):
    564         uuo_interr(error_cant_call,temp0)
     477        __(uuo_interr(error_cant_call,temp0))
    565478])     
    566479
    567480define([mkcatch],[
    568         mflr loc_pc
    569         ldr(imm0,tcr.catch_top(rcontext))
    570         lwz imm1,0(loc_pc) /* a forward branch to the catch/unwind cleanup */
    571         rlwinm imm1,imm1,0,6,29 /* extract LI */
    572         add loc_pc,loc_pc,imm1
    573         build_lisp_frame(fn,loc_pc,vsp)
    574         sub loc_pc,loc_pc,imm1
    575         la loc_pc,4(loc_pc)     /* skip over the forward branch */
    576         mtlr loc_pc
    577         lwi(imm4,(catch_frame.element_count<<num_subtag_bits)|subtag_catch_frame)
    578         ldr(imm3,tcr.xframe(rcontext))
    579         ldr(imm1,tcr.db_link(rcontext))
    580         TSP_Alloc_Fixed_Unboxed(catch_frame.size)
    581         la nargs,tsp_frame.data_offset+fulltag_misc(tsp)
    582         str(imm4,catch_frame.header(nargs))
    583         str(arg_z,catch_frame.catch_tag(nargs))
    584         str(imm0,catch_frame.link(nargs))
    585         str(imm2,catch_frame.mvflag(nargs))
    586         str(sp,catch_frame.csp(nargs))
    587         str(imm1,catch_frame.db_link(nargs))
    588         str(first_nvr,catch_frame.regs+0*node_size(nargs))
    589         str(second_nvr,catch_frame.regs+1*node_size(nargs))
    590         str(third_nvr,catch_frame.regs+2*node_size(nargs))
    591         str(fourth_nvr,catch_frame.regs+3*node_size(nargs))
    592         str(fifth_nvr,catch_frame.regs+4*node_size(nargs))
    593         str(sixth_nvr,catch_frame.regs+5*node_size(nargs))
    594         str(seventh_nvr,catch_frame.regs+6*node_size(nargs))
    595         str(eighth_nvr,catch_frame.regs+7*node_size(nargs))
    596         str(imm3,catch_frame.xframe(nargs))
    597         str(rzero,catch_frame.tsp_segment(nargs))
    598         Set_TSP_Frame_Boxed()
    599         str(nargs,tcr.catch_top(rcontext))
    600         li nargs,0
     481        __(mflr loc_pc)
     482        __(ldr(imm0,tcr.catch_top(rcontext)))
     483        __(lwz imm1,0(loc_pc)) /* a forward branch to the catch/unwind cleanup */
     484        __(rlwinm imm1,imm1,0,6,29)     /* extract LI */
     485        __(add loc_pc,loc_pc,imm1)
     486        __(build_lisp_frame(fn,loc_pc,vsp))
     487        __(sub loc_pc,loc_pc,imm1)
     488        __(la loc_pc,4(loc_pc)) /* skip over the forward branch */
     489        __(mtlr loc_pc)
     490        __(lwi(imm4,(catch_frame.element_count<<num_subtag_bits)|subtag_catch_frame))
     491        __(ldr(imm3,tcr.xframe(rcontext)))
     492        __(ldr(imm1,tcr.db_link(rcontext)))
     493        __(TSP_Alloc_Fixed_Unboxed(catch_frame.size))
     494        __(la nargs,tsp_frame.data_offset+fulltag_misc(tsp))
     495        __(str(imm4,catch_frame.header(nargs)))
     496        __(str(arg_z,catch_frame.catch_tag(nargs)))
     497        __(str(imm0,catch_frame.link(nargs)))
     498        __(str(imm2,catch_frame.mvflag(nargs)))
     499        __(str(sp,catch_frame.csp(nargs)))
     500        __(str(imm1,catch_frame.db_link(nargs)))
     501        __(str(first_nvr,catch_frame.regs+0*node_size(nargs)))
     502        __(str(second_nvr,catch_frame.regs+1*node_size(nargs)))
     503        __(str(third_nvr,catch_frame.regs+2*node_size(nargs)))
     504        __(str(fourth_nvr,catch_frame.regs+3*node_size(nargs)))
     505        __(str(fifth_nvr,catch_frame.regs+4*node_size(nargs)))
     506        __(str(sixth_nvr,catch_frame.regs+5*node_size(nargs)))
     507        __(str(seventh_nvr,catch_frame.regs+6*node_size(nargs)))
     508        __(str(eighth_nvr,catch_frame.regs+7*node_size(nargs)))
     509        __(str(imm3,catch_frame.xframe(nargs)))
     510        __(str(rzero,catch_frame.tsp_segment(nargs)))
     511        __(Set_TSP_Frame_Boxed())
     512        __(str(nargs,tcr.catch_top(rcontext)))
     513        __(li nargs,0)
    601514
    602515])     
    603516
    604517define([restore_catch_nvrs],[
    605         ldr(first_nvr,catch_frame.regs+(node_size*0)($1))
    606         ldr(second_nvr,catch_frame.regs+(node_size*1)($1))
    607         ldr(third_nvr,catch_frame.regs+(node_size*2)($1))
    608         ldr(fourth_nvr,catch_frame.regs+(node_size*3)($1))
    609         ldr(fifth_nvr,catch_frame.regs+(node_size*4)($1))
    610         ldr(sixth_nvr,catch_frame.regs+(node_size*5)($1))
    611         ldr(seventh_nvr,catch_frame.regs+(node_size*6)($1))
    612         ldr(eighth_nvr,catch_frame.regs+(node_size*7)($1))
     518        __(ldr(first_nvr,catch_frame.regs+(node_size*0)($1)))
     519        __(ldr(second_nvr,catch_frame.regs+(node_size*1)($1)))
     520        __(ldr(third_nvr,catch_frame.regs+(node_size*2)($1)))
     521        __(ldr(fourth_nvr,catch_frame.regs+(node_size*3)($1)))
     522        __(ldr(fifth_nvr,catch_frame.regs+(node_size*4)($1)))
     523        __(ldr(sixth_nvr,catch_frame.regs+(node_size*5)($1)))
     524        __(ldr(seventh_nvr,catch_frame.regs+(node_size*6)($1)))
     525        __(ldr(eighth_nvr,catch_frame.regs+(node_size*7)($1)))
    613526])               
    614527
    615528define([DCBZL],[
    616         .long (31<<26)+(1<<21)+($1<<16)+($2<<11)+(1014<<1)
     529        __(.long (31<<26)+(1<<21)+($1<<16)+($2<<11)+(1014<<1))
    617530])
    618531       
    619532define([check_stack_alignment],[
    620533        new_macro_labels()
    621         andi. $1,sp,STACK_ALIGN_MASK
    622         beq+ macro_label(stack_ok)
    623         .long 0
     534        __(andi. $1,sp,STACK_ALIGN_MASK)
     535        __(beq+ macro_label(stack_ok))
     536        __(.long 0)
    624537macro_label(stack_ok):
    625538])
     
    628541
    629542define([clear_alloc_tag],[
    630         clrrri(allocptr,allocptr,ntagbits)
     543        __(clrrri(allocptr,allocptr,ntagbits))
    631544])
    632545
     
    650563       
    651564define([Cons],[
    652         la allocptr,(-cons.size+fulltag_cons)(allocptr)
    653         alloc_trap()
    654         str($3,cons.cdr(allocptr))
    655         str($2,cons.car(allocptr))
    656         mr $1,allocptr
    657         clear_alloc_tag()
     565        __(la allocptr,(-cons.size+fulltag_cons)(allocptr))
     566        __(alloc_trap())
     567        __(str($3,cons.cdr(allocptr)))
     568        __(str($2,cons.car(allocptr)))
     569        __(mr $1,allocptr)
     570        __(clear_alloc_tag())
    658571])
    659572
     
    685598
    686599define([Misc_Alloc],[
    687         la $3,-fulltag_misc($3)
    688         sub allocptr,allocptr,$3
    689         alloc_trap()
    690         str($2,misc_header_offset(allocptr))
    691         mr $1,allocptr
    692         clear_alloc_tag()
     600        __(la $3,-fulltag_misc($3))
     601        __(sub allocptr,allocptr,$3)
     602        __(alloc_trap())
     603        __(str($2,misc_header_offset(allocptr)))
     604        __(mr $1,allocptr)
     605        __(clear_alloc_tag())
    693606])
    694607
    695608/*  Parameters $1, $2 as above; $3 = physical size constant. */
    696609define([Misc_Alloc_Fixed],[
    697         la allocptr,(-$3)+fulltag_misc(allocptr)
    698         alloc_trap()
    699         str($2,misc_header_offset(allocptr))
    700         mr $1,allocptr
    701         clear_alloc_tag()
     610        __(la allocptr,(-$3)+fulltag_misc(allocptr))
     611        __(alloc_trap())
     612        __(str($2,misc_header_offset(allocptr)))
     613        __(mr $1,allocptr)
     614        __(clear_alloc_tag())
    702615])
    703616
     
    726639
    727640define([Set_TSP_Frame_Unboxed],[
    728         str(tsp,tsp_frame.type(tsp))
     641        __(str(tsp,tsp_frame.type(tsp)))
    729642])
    730643
    731644define([Set_TSP_Frame_Boxed],[
    732         str(rzero,tsp_frame.type(tsp))
     645        __(str(rzero,tsp_frame.type(tsp)))
    733646])
    734647               
     
    737650
    738651define([TSP_Alloc_Fixed_Unboxed],[
    739         stru(tsp,-($1+tsp_frame.data_offset)(tsp))
    740         Set_TSP_Frame_Unboxed()
     652        __(stru(tsp,-($1+tsp_frame.data_offset)(tsp)))
     653        __(Set_TSP_Frame_Unboxed())
    741654])
    742655
    743656define([TSP_Alloc_Fixed_Unboxed_Zeroed],[
    744         TSP_Alloc_Fixed_Unboxed($1)
    745         zero_doublewords tsp,tsp_frame.fixed_overhead,$1
     657        __(TSP_Alloc_Fixed_Unboxed($1))
     658        __(zero_doublewords tsp,tsp_frame.fixed_overhead,$1)
    746659])
    747660
    748661define([TSP_Alloc_Fixed_Boxed],[
    749         TSP_Alloc_Fixed_Unboxed_Zeroed($1)
    750         Set_TSP_Frame_Boxed()
     662        __(TSP_Alloc_Fixed_Unboxed_Zeroed($1))
     663        __(Set_TSP_Frame_Boxed())
    751664])
    752665
     
    765678/* Handle the general case, where the frame might be empty */
    766679define([Zero_TSP_Frame],[
    767         new_macro_labels()
    768         la $1,tsp_frame.size-8(tsp)
    769         ldr($2,tsp_frame.backlink(tsp))
    770         la $2,-8($2)
    771         b macro_label(zero_tsp_test)
     680        __(new_macro_labels())
     681        __(la $1,tsp_frame.size-8(tsp))
     682        __(ldr($2,tsp_frame.backlink(tsp)))
     683        __(la $2,-8($2))
     684        __(b macro_label(zero_tsp_test))
    772685macro_label(zero_tsp_loop):
    773         stfdu fp_zero,8($1)
     686        __(stfdu fp_zero,8($1))
    774687macro_label(zero_tsp_test):     
    775         cmpr(ifelse($3,[],[cr0],$3),$1,$2)
    776         bne ifelse($3,[],[cr0],$3),macro_label(zero_tsp_loop)
     688        __(cmpr(ifelse($3,[],[cr0],$3),$1,$2))
     689        __(bne ifelse($3,[],[cr0],$3),macro_label(zero_tsp_loop))
    777690])
    778691
     
    780693define([Zero_TSP_Frame_nz],[
    781694        new_macro_labels()
    782         la $1,tsp_frame.size-8(tsp)
    783         ldr($2,tsp_frame.backlink(tsp))
    784         la $2,-8($2)
     695        __(la $1,tsp_frame.size-8(tsp))
     696        __(ldr($2,tsp_frame.backlink(tsp)))
     697        __(la $2,-8($2))
    785698macro_label(zero_tsp_loop):
    786         stfdu fp_zero,8($1)
    787         cmpr(ifelse($3,[],[cr0],$3),$1,$2)
    788         bne ifelse($3,[],[cr0],$3),macro_label(zero_tsp_loop)
     699        __(stfdu fp_zero,8($1))
     700        __(cmpr(ifelse($3,[],[cr0],$3),$1,$2))
     701        __(bne ifelse($3,[],[cr0],$3),macro_label(zero_tsp_loop))
    789702])
    790703       
     
    792705/* to negated size. */
    793706define([TSP_Alloc_Var_Unboxed],[
    794         neg ifelse($2,[],$1,$2),$1
    795         strux(tsp,tsp,ifelse($2,[],$1,$2))
    796         Set_TSP_Frame_Unboxed()
     707        __(neg ifelse($2,[],$1,$2),$1)
     708        __(strux(tsp,tsp,ifelse($2,[],$1,$2)))
     709        __(Set_TSP_Frame_Unboxed())
    797710])
    798711
    799712define([TSP_Alloc_Var_Boxed],[
    800         TSP_Alloc_Var_Unboxed($1)
    801         Zero_TSP_Frame($1,$2)
    802         Set_TSP_Frame_Boxed()
     713        __(TSP_Alloc_Var_Unboxed($1))
     714        __(Zero_TSP_Frame($1,$2))
     715        __(Set_TSP_Frame_Boxed())
    803716])             
    804717
    805718
    806719define([TSP_Alloc_Var_Boxed_nz],[
    807         TSP_Alloc_Var_Unboxed($1)
    808         Zero_TSP_Frame_nz($1,$2)
    809         Set_TSP_Frame_Boxed()
     720        __(TSP_Alloc_Var_Unboxed($1))
     721        __(Zero_TSP_Frame_nz($1,$2))
     722        __(Set_TSP_Frame_Boxed())
    810723])             
    811724
    812725define([check_pending_interrupt],[
    813726        new_macro_labels()
    814         ldr(nargs,tcr.tlb_pointer(rcontext))
    815         ldr(nargs,INTERRUPT_LEVEL_BINDING_INDEX(nargs))
    816         cmpri(ifelse($1,[],[cr0],$1),nargs,0)
    817         blt ifelse($1,[],[cr0],$1),macro_label(done)
    818         bgt ifelse($1,[],[cr0],$1),macro_label(trap)
    819         ldr(nargs,tcr.interrupt_pending(rcontext))
     727        __(ldr(nargs,tcr.tlb_pointer(rcontext)))
     728        __(ldr(nargs,INTERRUPT_LEVEL_BINDING_INDEX(nargs)))
     729        __(cmpri(ifelse($1,[],[cr0],$1),nargs,0))
     730        __(blt ifelse($1,[],[cr0],$1),macro_label(done))
     731        __(bgt ifelse($1,[],[cr0],$1),macro_label(trap))
     732        __(ldr(nargs,tcr.interrupt_pending(rcontext)))
    820733macro_label(trap):
    821         trgti(nargs,0)
     734        __(trgti(nargs,0))
    822735macro_label(done):
    823736])
     
    827740
    828741define([suspend_now],[
    829         uuo_interr(error_propagate_suspend,rzero)
    830 ])
     742        __(uuo_interr(error_propagate_suspend,rzero))
     743])
Note: See TracChangeset for help on using the changeset viewer.