Changeset 13337


Ignore:
Timestamp:
Dec 27, 2009, 4:41:14 AM (10 years ago)
Author:
plkrueger
Message:

Don't change the m4 quoting characters from their defaults (`').
(On the ARM, square brackets are used to denote memory operands, curly
braces surround register lists, and multicharacter quoting delimeters
look funny ...)

Some versions (at least) of m4 are confused by quoting characters in
comments, so try to refrain from using contractions ...

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

Legend:

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

    r13067 r13337  
    3636error_type_error = 128
    3737
    38 define([__type_error_counter__],128)
    39 define([def_type_error],[
     38define(`__type_error_counter__',128)
     39define(`def_type_error',`
    4040error_object_not_$1 = __type_error_counter__
    41         define([__type_error_counter__],eval(__type_error_counter__+1))])
     41        define(`__type_error_counter__',eval(__type_error_counter__+1))')
    4242
    4343        def_type_error(array)
     
    170170/* These are the "old" error constants that %ERR-DISP understands */
    171171
    172 define([deferr],[
    173 $1 = $2<<fixnumshift])
     172define(`deferr',`
     173$1 = $2<<fixnumshift')
    174174
    175175
  • trunk/source/lisp-kernel/imports.s

    r13067 r13337  
    1515
    1616        include(m4macros.m4)
    17 define([PTR],[
    18         __ifdef([PPC64])
     17define(`PTR',`
     18        __ifdef(`PPC64')
    1919        .quad $1
    2020        __else
    21          __ifdef([X8664])
     21         __ifdef(`X8664')
    2222         .quad $1
    2323         __else
     
    2525         __endif
    2626        __endif
    27 ])
     27')
    2828        _beginfile
    2929
    3030               
    3131        .globl C(import_ptrs_base)
    32 define([defimport],[
     32define(`defimport',`
    3333        .globl C($1)
    3434        PTR(C($1))
    3535               
    3636# __line__
    37 ])
     37')
    3838        .data
    3939import_ptrs_start:
     
    106106        PTR(import_ptrs_start)
    107107
    108         __ifdef([PPC])
    109         __ifdef([LINUX])
    110         __ifndef([PPC64])
     108        __ifdef(`PPC')
     109        __ifdef(`LINUX')
     110        __ifndef(`PPC64')
    111111        .globl __trampoline_setup
    112112        .long  __trampoline_setup
  • trunk/source/lisp-kernel/lisp.s

    r13067 r13337  
    1414/*   http://opensource.franz.com/preamble.html */
    1515
    16         include(m4macros.m4)
    17         ifdef([LOWMEM_BIAS],[
    18 [LOWMEM_BIAS] = LOWMEM_BIAS
    19 ],[
    20 [LOWMEM_BIAS] = 0
    21 ])
    22         undefine([LOWMEM_BIAS])
     16        include(m4macros.m4)       
     17        ifdef(`LOWMEM_BIAS',`
     18`LOWMEM_BIAS' = LOWMEM_BIAS
     19',`
     20`LOWMEM_BIAS' = 0
     21')
     22        undefine(`LOWMEM_BIAS')
    2323        /* DWARF2 exception fsm */
    2424        DW_CFA_advance_loc = 0x40   
     
    5656        DW_CFA_GNU_negative_offset_extended = 0x2f
    5757
    58         ifdef([PPC],[
     58        ifdef(`PPC',`
    5959         include(ppc-constants.s)
    6060         include(ppc-macros.s)
    6161         include(ppc-uuo.s)
    62         ])
    63         ifdef([X86],[
     62        ')
     63        ifdef(`X86',`
    6464         include(x86-constants.s)
    6565         include(x86-macros.s)
    6666         include(x86-uuo.s)
    67         ])
     67        ')
    6868
  • trunk/source/lisp-kernel/m4macros.m4

    r13066 r13337  
    1 changequote([,])
    2 changecom([/* ],[*/])
     1changecom(`/*',`*/')
    32
    43
     
    2625
    2726
    28 define([BSDstabs],[1])
    29 define([ELFstabs],[2])
    30 define([COFFstabs],[3])
    31 undefine([EABI])
    32 undefine([POWEROPENABI])
    33 undefine([rTOC])
    34 
    35 
    36 ifdef([DARWIN],[define([SYSstabs],[BSDstabs])
    37                 define([DarwinAssembler],[])
    38                 define([CNamesNeedUnderscores],[])
    39                 define([LocalLabelPrefix],[L])
    40                 define([StartTextLabel],[Ltext0])
    41                 define([EndTextLabel],[Letext])
    42                 ifdef([PPC],[
    43                 define([POWEROPENABI],[])])
    44                 ifdef([X86],[
    45                 define([SYSCALL_SETS_CARRY_ON_ERROR],[])
    46                 define([SSE2_MATH_LIB],[])])
    47 ])
    48 
    49 ifdef([LINUX],[define([SYSstabs],[ELFstabs])
    50                define([HaveWeakSymbols],[])
    51                define([LocalLabelPrefix],[.L])
    52                define([StartTextLabel],[.Ltext0])
    53                define([EndTextLabel],[.Letext])
    54                ifdef([PPC64],[
    55                define([POWEROPENABI],[])
    56                define([rTOC],[r2])], [
    57                define([EABI],[])])])
    58 
    59 ifdef([FREEBSD],[define([SYSstabs],[ELFstabs])
    60                define([HaveWeakSymbols],[])
    61                define([LocalLabelPrefix],[.L])
    62                define([StartTextLabel],[.Ltext0])
    63                define([EndTextLabel],[.Letext])]
    64                 ifdef([X86],[
    65                 define([SYSCALL_SETS_CARRY_ON_ERROR],[])])
     27define(`BSDstabs',`1')
     28define(`ELFstabs',`2')
     29define(`COFFstabs',`3')
     30undefine(`EABI')
     31undefine(`POWEROPENABI')
     32undefine(`rTOC')
     33
     34
     35ifdef(`DARWIN',`define(`SYSstabs',`BSDstabs')
     36                define(`DarwinAssembler',`')
     37                define(`CNamesNeedUnderscores',`')
     38                define(`LocalLabelPrefix',`L')
     39                define(`StartTextLabel',`Ltext0')
     40                define(`EndTextLabel',`Letext')
     41                ifdef(`PPC',`
     42                define(`POWEROPENABI',`')')
     43                ifdef(`X86',`
     44                define(`SYSCALL_SETS_CARRY_ON_ERROR',`')
     45                define(`SSE2_MATH_LIB',`')')
     46')
     47
     48ifdef(`LINUX',`define(`SYSstabs',`ELFstabs')
     49               define(`HaveWeakSymbols',`')
     50               define(`LocalLabelPrefix',`.L')
     51               define(`StartTextLabel',`.Ltext0')
     52               define(`EndTextLabel',`.Letext')
     53               ifdef(`PPC64',`
     54               define(`POWEROPENABI',`')
     55               define(`rTOC',`r2')', `
     56               define(`EABI',`')')')
     57
     58ifdef(`FREEBSD',`define(`SYSstabs',`ELFstabs')
     59               define(`HaveWeakSymbols',`')
     60               define(`LocalLabelPrefix',`.L')
     61               define(`StartTextLabel',`.Ltext0')
     62               define(`EndTextLabel',`.Letext')'
     63                ifdef(`X86',`
     64                define(`SYSCALL_SETS_CARRY_ON_ERROR',`')')
    6665)
    6766
    68 ifdef([SOLARIS],[define([SYSstabs],[ELFstabs])
    69                define([HaveWeakSymbols],[])
    70                define([LocalLabelPrefix],[.L])
    71                define([StartTextLabel],[.Ltext0])
    72                define([EndTextLabel],[.Letext])])
    73 
    74 ifdef([WINDOWS],[define([SYSstabs],[COFFstabs])
    75                define([CNamesNeedUnderscores],[])
    76                define([LocalLabelPrefix],[L])
    77                define([StartTextLabel],[Ltext0])
    78                define([EndTextLabel],[Letext])])
     67ifdef(`SOLARIS',`define(`SYSstabs',`ELFstabs')
     68               define(`HaveWeakSymbols',`')
     69               define(`LocalLabelPrefix',`.L')
     70               define(`StartTextLabel',`.Ltext0')
     71               define(`EndTextLabel',`.Letext')')
     72
     73ifdef(`WINDOWS',`define(`SYSstabs',`COFFstabs')
     74               define(`CNamesNeedUnderscores',`')
     75               define(`LocalLabelPrefix',`L')
     76               define(`StartTextLabel',`Ltext0')
     77               define(`EndTextLabel',`Letext')')
    7978
    8079
     
    8281/*  Still.  After all these years.  Why ?  */
    8382
    84 define([C],[ifdef([CNamesNeedUnderscores],[[_]$1],[$1])])
    85 
    86 define([_linecounter_],0)
    87 
    88 define([_emit_BSD_source_line_stab],[
    89 ifdef([X86],[
    90 # __line__ "__file__" 1],[
     83define(`C',`ifdef(`CNamesNeedUnderscores',``_'$1',`$1')')
     84
     85define(`_linecounter_',0)
     86
     87define(`_emit_BSD_source_line_stab',`
     88ifdef(`X86',`
     89# __line__ "__file__" 1',`
    9190        .stabd 68,0,$1
    92 ])])
     91')')
    9392
    9493
     
    9796/*  here's how to say that we want it ...  */
    9897
    99 define([WEAK],[ifdef([HaveWeakSymbols],[
     98define(`WEAK',`ifdef(`HaveWeakSymbols',`
    10099        .weak $1
    101 ],[
     100',`
    102101        .globl $1
    103 ])])
    104 
    105 define([_emit_ELF_source_line_stab],[
    106   define([_linecounter_],incr(_linecounter_))
    107         .stabn 68,0,$1,[.LM]_linecounter_[-]__func_name
    108 [.LM]_linecounter_:
    109 ])
    110 
    111 define([_emit_COFF_source_line_stab],[
     102')')
     103
     104define(`_emit_ELF_source_line_stab',`
     105  define(`_linecounter_',incr(_linecounter_))
     106        .stabn 68,0,$1,`.LM'_linecounter_`-'__func_name
     107`.LM'_linecounter_:
     108')
     109
     110define(`_emit_COFF_source_line_stab',`
    112111        _emit_ELF_source_line_stab($1)
    113 ])
    114 
    115 
    116 define([emit_source_line_stab],[
     112')
     113
     114
     115define(`emit_source_line_stab',`
    117116        ifelse(eval(SYSstabs),
    118117             eval(BSDstabs),
    119               [_emit_BSD_source_line_stab($1)],
     118              `_emit_BSD_source_line_stab($1)',
    120119              eval(SYSstabs),
    121120              eval(ELFstabs),
    122               [_emit_ELF_source_line_stab($1)],
    123               [_emit_COFF_source_line_stab($1)])])
     121              `_emit_ELF_source_line_stab($1)',
     122              `_emit_COFF_source_line_stab($1)')')
    124123
    125124
     
    132131
    133132
    134 define([HA],[ifdef([DARWIN],[ha16($1)],[$1@ha])])
     133define(`HA',`ifdef(`DARWIN',`ha16($1)',`$1@ha')')
    135134
    136135 
     
    138137/*  concern for sign-extension of the low half.  */
    139138
    140 define([LO],[ifdef([DARWIN],[lo16($1)],[$1@l])])
    141 define([HI],[ifdef([DARWIN],[hi16($1)],[$1@hi])])
     139define(`LO',`ifdef(`DARWIN',`lo16($1)',`$1@l')')
     140define(`HI',`ifdef(`DARWIN',`hi16($1)',`$1@hi')')
    142141
    143142/*  Note that m4 macros that could be expanded in the .text segment  */
     
    147146
    148147
    149 define([N_FUN],36)
    150 define([N_SO],100)
     148define(`N_FUN',36)
     149define(`N_SO',100)
    151150
    152151/*    I wish that there was a less-dumb way of doing this.  */
    153152
    154 define([pwd0],esyscmd([/bin/pwd]))
    155 define([__pwd__],substr(pwd0,0,decr(len(pwd0)))[/])
     153define(`pwd0',esyscmd(`/bin/pwd'))
     154define(`__pwd__',substr(pwd0,0,decr(len(pwd0)))`/')
    156155
    157156/*   _beginfile() -- gets line/file in synch, generates N_SO for file,  */
     
    159158
    160159
    161 define([_beginfile],[
     160define(`_beginfile',`
    162161        .stabs "__pwd__",N_SO,0,0,StartTextLabel()
    163162        .stabs "__file__",N_SO,0,0,StartTextLabel()
    164 ifdef([PPC64],[
    165 ifdef([DARWIN],[
     163ifdef(`PPC64',`
     164ifdef(`DARWIN',`
    166165        .machine ppc64
    167 ])])
     166')')
    168167        .text
    169168StartTextLabel():
    170169# __line__ "__file__"
    171 ])
    172 
    173 define([_endfile],[
     170')
     171
     172define(`_endfile',`
    174173        .stabs "",N_SO,0,0,EndTextLabel()
    175174EndTextLabel():
    176175# __line__
    177 ])
    178 
    179 define([_startfn],[define([__func_name],$1)
     176')
     177
     178define(`_startfn',`define(`__func_name',$1)
    180179# __line__
    181         ifelse(eval(SYSstabs),eval(ELFstabs),[
     180        ifelse(eval(SYSstabs),eval(ELFstabs),`
    182181        .type $1,@function
    183 ])
     182')
    184183
    185184$1:
    186 ifdef([WINDOWS],[
     185ifdef(`WINDOWS',`
    187186        .def    $1;     .scl    2;      .type   32;     .endef
    188 ],[
     187',`
    189188        .stabd 68,0,__line__
    190 ])
     189')
    191190        .stabs "$1:F1",36,0,__line__,$1
    192191        .set func_start,$1
    193 # __line__ "__file__" 1 ])
    194 
    195 
    196 
    197 define([_exportfn],[
     192# __line__ "__file__" 1 ')
     193
     194
     195
     196define(`_exportfn',`
    198197        .globl $1
    199198        _startfn($1)
    200 ifdef([PPC64],[
    201 ifdef([LINUX],[
    202         .global [.]$1
    203 [.]$1:
    204 ])])
     199ifdef(`PPC64',`
     200ifdef(`LINUX',`
     201        .global `.'$1
     202`.'$1:
     203')')
    205204# __line__
    206 ])
    207 
    208 
    209 define([_endfn],[
    210 LocalLabelPrefix[]__func_name[999]:
    211 ifdef([WINDOWS],[
    212 ],[
    213         .stabs "",36,0,0,LocalLabelPrefix[]__func_name[999]-__func_name
     205')
     206
     207
     208define(`_endfn',`
     209LocalLabelPrefix`'__func_name`999':
     210ifdef(`WINDOWS',`
     211',`
     212        .stabs "",36,0,0,LocalLabelPrefix`'__func_name`999'-__func_name
    214213        .line __line__
    215         ifelse(eval(SYSstabs),eval(ELFstabs),[
    216         .size __func_name,LocalLabelPrefix[]__func_name[999]-__func_name
    217 ])
    218 ])
    219         undefine([__func_name])
    220 ])
     214        ifelse(eval(SYSstabs),eval(ELFstabs),`
     215        .size __func_name,LocalLabelPrefix`'__func_name`999'-__func_name
     216')
     217')
     218        undefine(`__func_name')
     219')
    221220
    222221
     
    225224/*   doesn't remember much of it ..  */
    226225
    227 define([_struct], [define([__struct_name],$1)
    228  define([_struct_org_name], _$1_org)
    229  define([_struct_base_name], _$1_base)
     226define(`_struct', `define(`__struct_name',$1)
     227 define(`_struct_org_name', _$1_org)
     228 define(`_struct_base_name', _$1_base)
    230229        .set _struct_org_name,$2
    231230        .set _struct_base_name,_struct_org_name
    232  ifelse($3,[],[
    233   undefine([_struct_fixed_size_name])
    234   ],[
    235   define([_struct_fixed_size_name], _$1_fixed_size)
     231 ifelse($3,`',`
     232  undefine(`_struct_fixed_size_name')
     233  ',`
     234  define(`_struct_fixed_size_name', _$1_fixed_size)
    236235        .set _struct_fixed_size_name,$3
    237   ])
    238 ])
    239 
    240 define([_struct_pad],[
     236  ')
     237')
     238
     239define(`_struct_pad',`
    241240        .set _struct_org_name,_struct_org_name + $1
    242 ])
     241')
    243242 
    244 define([_struct_label],[
    245         .set __struct_name[.]$1, _struct_org_name
    246 ])
     243define(`_struct_label',`
     244        .set __struct_name`.'$1, _struct_org_name
     245')
    247246
    248247/*  _field(name,size)   */
    249 define([_field],[_struct_label($1) _struct_pad($2)])
    250 
    251 define([_halfword], [_field($1, 2)])
    252 define([_word], [_field($1, 4)])
    253 define([_dword],[_field($1, 8)])
    254 define([_node], [_field($1, node_size)])
    255 
    256 define([_ends],[ifdef([_struct_fixed_size_name],[
    257         .set  __struct_name[.size],_struct_fixed_size_name
    258         ],[
    259         .set  __struct_name[.size], _struct_org_name-_struct_base_name
    260         ])
    261 ])
     248define(`_field',`_struct_label($1) _struct_pad($2)')
     249
     250define(`_halfword', `_field($1, 2)')
     251define(`_word', `_field($1, 4)')
     252define(`_dword',`_field($1, 8)')
     253define(`_node', `_field($1, node_size)')
     254
     255define(`_ends',`ifdef(`_struct_fixed_size_name',`
     256        .set  __struct_name`.size',_struct_fixed_size_name
     257        ',`
     258        .set  __struct_name`.size', _struct_org_name-_struct_base_name
     259        ')
     260')
    262261
    263262
     
    268267
    269268
    270 define([_structf],[
    271         _struct($1,ifelse($2,[],-misc_bias,$2))
     269define(`_structf',`
     270        _struct($1,ifelse($2,`',-misc_bias,$2))
    272271        _node(header)
    273 ])
    274 
    275 define([_endstructf],[
    276         .set __struct_name.[element_count],((_struct_org_name-node_size)-_struct_base_name)/node_size
     272')
     273
     274define(`_endstructf',`
     275        .set __struct_name.`element_count',((_struct_org_name-node_size)-_struct_base_name)/node_size
    277276        _ends
    278 ])
    279 
    280 
    281 define([__],[emit_source_line_stab(__line__)
     277')
     278
     279
     280define(`__',`emit_source_line_stab(__line__)
    282281        $@
    283         ])
    284 
    285 define([__local_label_counter__],0)
    286 define([__macro_label_counter__],0)
    287 
    288 define([new_local_labels],
    289   [define([__local_label_counter__],incr(__local_label_counter__))])
    290 
    291 define([new_macro_labels],
    292   [define([__macro_label_counter__],incr(__macro_label_counter__))])
    293 
    294 define([_local_label],[LocalLabelPrefix()[]$1])
    295 
    296 define([local_label],[_local_label($1[]__local_label_counter__)])
    297 
    298 define([macro_label],[_local_label($1[]__macro_label_counter__)])
     282        ')
     283
     284define(`__local_label_counter__',0)
     285define(`__macro_label_counter__',0)
     286
     287define(`new_local_labels',
     288  `define(`__local_label_counter__',incr(__local_label_counter__))')
     289
     290define(`new_macro_labels',
     291  `define(`__macro_label_counter__',incr(__macro_label_counter__))')
     292
     293define(`_local_label',`LocalLabelPrefix()`'$1')
     294
     295define(`local_label',`_local_label($1`'__local_label_counter__)')
     296
     297define(`macro_label',`_local_label($1`'__macro_label_counter__)')
    299298
    300299
     
    305304
    306305 
    307 define([__ifdef],[ifdef([$1],[.if 1],[.if 0])])
    308 define([__ifndef],[ifdef([$1],[.if 0],[.if 1])])
    309 define([__else],[.else])
    310 define([__endif],[.endif])
    311 define([__if],[.if $1])
    312 
    313 define([equate_if_defined],[ifdef($1,[
    314 [$1] = 1
    315 ],[
    316 [$1] = 0
    317 ])])
    318 
    319 equate_if_defined([DARWIN])
    320 equate_if_defined([LINUX])
    321 equate_if_defined([FREEBSD])
    322 equate_if_defined([SOLARIS])
    323 equate_if_defined([WIN_64])
    324 equate_if_defined([PPC64])
    325 equate_if_defined([X8664])
    326 equate_if_defined([WIN_32])
    327 equate_if_defined([WINDOWS])
    328 
    329 equate_if_defined([HAVE_TLS])
     306define(`__ifdef',`ifdef(`$1',`.if 1',`.if 0')')
     307define(`__ifndef',`ifdef(`$1',`.if 0',`.if 1')')
     308define(`__else',`.else')
     309define(`__endif',`.endif')
     310define(`__if',`.if $1')
     311
     312define(`equate_if_defined',`ifdef($1,`
     313`$1' = 1
     314',`
     315`$1' = 0
     316')')
     317
     318equate_if_defined(`DARWIN')
     319equate_if_defined(`LINUX')
     320equate_if_defined(`FREEBSD')
     321equate_if_defined(`SOLARIS')
     322equate_if_defined(`WIN_64')
     323equate_if_defined(`PPC64')
     324equate_if_defined(`X8664')
     325equate_if_defined(`WIN_32')
     326equate_if_defined(`WINDOWS')
     327
     328equate_if_defined(`HAVE_TLS')
    330329/* DARWIN_GS_HACK is hopefully short-lived */
    331 equate_if_defined([DARWIN_GS_HACK])
    332 
    333 equate_if_defined([TCR_IN_GPR])
     330equate_if_defined(`DARWIN_GS_HACK')
     331
     332equate_if_defined(`TCR_IN_GPR')
    334333
    335334/* Well, so much for that. Maybe this will go away soon ? */
    336 equate_if_defined([WIN32_ES_HACK])
    337 equate_if_defined([SYSCALL_SETS_CARRY_ON_ERROR])
     335equate_if_defined(`WIN32_ES_HACK')
     336equate_if_defined(`SYSCALL_SETS_CARRY_ON_ERROR')
    338337
    339338
     
    341340/* We use (more-or-less) a PowerOpen C frame, except on LinuxPPC32  */
    342341
    343 define([USE_POWEROPEN_C_FRAME],[])
    344 undefine([USE_EABI_C_FRAME])
    345 
    346 ifdef([LINUX],[
    347 ifdef([PPC64],[],[
    348 define([USE_EABI_C_FRAME],[])
    349 undefine([USE_POWEROPEN_C_FRAME])
    350 ])])
    351 
    352 
    353 
    354 
     342define(`USE_POWEROPEN_C_FRAME',`')
     343undefine(`USE_EABI_C_FRAME')
     344
     345ifdef(`LINUX',`
     346ifdef(`PPC64',`',`
     347define(`USE_EABI_C_FRAME',`')
     348undefine(`USE_POWEROPEN_C_FRAME')
     349')')
     350
     351
     352
     353
  • trunk/source/lisp-kernel/pad.s

    r3299 r13337  
    1         .globl openmcl_low_address
     1!!      .globl openmcl_low_address
    22openmcl_low_address:
    33        nop
  • trunk/source/lisp-kernel/ppc-asmutils.s

    r13067 r13337  
    5858/* of libm is contained in libsystem, along with libc & everything else. */
    5959
    60         __ifndef([DARWIN])
     60        __ifndef(`DARWIN')
    6161        .data
    62         __ifdef([PPC64])
     62        __ifdef(`PPC64')
    6363        .quad exp
    6464        __else
     
    8585       
    8686_exportfn(C(count_leading_zeros))
    87         __ifdef([PPC64])
     87        __ifdef(`PPC64')
    8888        __(cntlzd r3,r3)
    8989        __else
     
    118118
    119119/* The Linux kernel is constantly enabling and disabling the FPU and enabling */
    120 /* FPU exceptions.  We can't touch the FPU without turning off the FPSCR[FEX] */
    121 /* bit and we can't turn off the FPSCR[FEX] bit without touching the FPU. */
     120/* FPU exceptions.  We can't touch the FPU without turning off the FPSCR`FEX' */
     121/* bit and we can't turn off the FPSCR`FEX' bit without touching the FPU. */
    122122/* Force a distinguished exception, and let the handler for that exception */
    123123/* zero the fpscr in its exception context. */
     
    270270               
    271271       
    272         __ifdef([DARWIN])
     272        __ifdef(`DARWIN')
    273273_exportfn(C(enable_fp_exceptions))
    274274        __(.long 0)
     
    446446/* to fool those versions of glibc. */
    447447
    448         __ifdef([LINUX])
     448        __ifdef(`LINUX')
    449449        .globl set_errno
    450450_exportfn(C(madvise))
  • trunk/source/lisp-kernel/ppc-constants.s

    r13330 r13337  
    1717
    1818
    19 define([rzero],[r0])   
    20 define([sp],[r1])
    21 
    22 define([imm0],[r3])
    23 define([imm1],[r4])
    24 define([imm2],[r5])
    25 define([imm3],[r6])
    26 define([imm4],[r7])
    27 define([imm5],[r8])
    28 define([allocptr],[r9])
    29 define([allocbase],[r10])
    30 define([nargs],[r11])
    31 define([tsp],[r12])      /* temp-consing stack. */
    32 
    33 define([loc_pc],[r14])   /* code vector locative */
    34 define([vsp],[r15])
    35 define([fn],[r16])
    36 define([temp3],[r17])
    37 define([temp2],[r18])
    38 define([temp1],[r19])
    39 define([temp0],[r20])
    40 define([arg_x],[r21])
    41 define([arg_y],[r22])
    42 define([arg_z],[r23])
    43 define([save7],[r24])
    44 define([save6],[r25])
    45 define([save5],[r26])
    46 define([save4],[r27])
    47 define([save3],[r28])
    48 define([save2],[r29])
    49 define([save1],[r30])
    50 define([save0],[r31])
    51 
    52 define([fname],[temp3])
    53 define([nfn],[temp2])
    54 define([next_method_context],[temp1])
    55 define([first_nvr],[save7])
    56 define([second_nvr],[save6])       
    57 define([third_nvr],[save5])
    58 define([fourth_nvr],[save4])       
    59 define([fifth_nvr],[save3])
    60 define([sixth_nvr],[save2])       
    61 define([seventh_nvr],[save1])
    62 define([eighth_nvr],[save0])       
    63 define([nargregs],[3])
     19define(`rzero',`r0')   
     20define(`sp',`r1')
     21
     22define(`imm0',`r3')
     23define(`imm1',`r4')
     24define(`imm2',`r5')
     25define(`imm3',`r6')
     26define(`imm4',`r7')
     27define(`imm5',`r8')
     28define(`allocptr',`r9')
     29define(`allocbase',`r10')
     30define(`nargs',`r11')
     31define(`tsp',`r12')      /* temp-consing stack. */
     32
     33define(`loc_pc',`r14')   /* code vector locative */
     34define(`vsp',`r15')
     35define(`fn',`r16')
     36define(`temp3',`r17')
     37define(`temp2',`r18')
     38define(`temp1',`r19')
     39define(`temp0',`r20')
     40define(`arg_x',`r21')
     41define(`arg_y',`r22')
     42define(`arg_z',`r23')
     43define(`save7',`r24')
     44define(`save6',`r25')
     45define(`save5',`r26')
     46define(`save4',`r27')
     47define(`save3',`r28')
     48define(`save2',`r29')
     49define(`save1',`r30')
     50define(`save0',`r31')
     51
     52define(`fname',`temp3')
     53define(`nfn',`temp2')
     54define(`next_method_context',`temp1')
     55define(`first_nvr',`save7')
     56define(`second_nvr',`save6')       
     57define(`third_nvr',`save5')
     58define(`fourth_nvr',`save4')       
     59define(`fifth_nvr',`save3')
     60define(`sixth_nvr',`save2')       
     61define(`seventh_nvr',`save1')
     62define(`eighth_nvr',`save0')       
     63define(`nargregs',`3')
    6464       
    6565r0 = 0
     
    9797
    9898/* Lisp code keeps 0.0 in fp_zero */
    99 define([fp_zero],[f31])   /* a non-volatile reg as far as FFI is concerned. */
    100 define([fp_s32conv],[f30])   /* for s32->fp conversion */
     99define(`fp_zero',`f31')   /* a non-volatile reg as far as FFI is concerned. */
     100define(`fp_s32conv',`f30')   /* for s32->fp conversion */
    101101       
    102102/* registers, as used in destrucuring-bind/macro-bind */
    103103
    104 define([whole_reg],[temp1])
    105 define([arg_reg],[temp3])
    106 define([keyvect_reg],[temp2])
    107 define([mask_req_start],[24])
    108 define([mask_req_width],[8])
    109 define([mask_opt_start],[16])
    110 define([mask_opt_width],[8])
    111 define([mask_key_start],[8])
    112 define([mask_key_width],[8])
    113 define([mask_initopt],[7])
    114 define([mask_keyp],[6]) /*  note that keyp can be true even when 0 keys. */
    115 define([mask_aok],[5])
    116 define([mask_restp],[4])
    117 
    118 ifdef([DARWIN],[
    119         define([STACK_ALIGN],16)
    120         define([STACK_ALIGN_MASK],15)
    121 ],[
    122         define([STACK_ALIGN],8)
    123         define([STACK_ALIGN_MASK],7)
    124 ])
     104define(`whole_reg',`temp1')
     105define(`arg_reg',`temp3')
     106define(`keyvect_reg',`temp2')
     107define(`mask_req_start',`24')
     108define(`mask_req_width',`8')
     109define(`mask_opt_start',`16')
     110define(`mask_opt_width',`8')
     111define(`mask_key_start',`8')
     112define(`mask_key_width',`8')
     113define(`mask_initopt',`7')
     114define(`mask_keyp',`6') /*  note that keyp can be true even when 0 keys. */
     115define(`mask_aok',`5')
     116define(`mask_restp',`4')
     117
     118ifdef(`DARWIN',`
     119        define(`STACK_ALIGN',16)
     120        define(`STACK_ALIGN_MASK',15)
     121',`
     122        define(`STACK_ALIGN',8)
     123        define(`STACK_ALIGN_MASK',7)
     124')
    125125
    126126/* Indices in %builtin-functions% */
     
    170170tstack_alloc_limit = 0xffff
    171171       
    172 define([TCR_STATE_FOREIGN],1)
    173 define([TCR_STATE_LISP],0)
    174 define([TCR_STATE_EXCEPTION_WAIT],2)
    175 define([TCR_STATE_EXCEPTION_RETURN],4)
     172define(`TCR_STATE_FOREIGN',1)
     173define(`TCR_STATE_LISP',0)
     174define(`TCR_STATE_EXCEPTION_WAIT',2)
     175define(`TCR_STATE_EXCEPTION_RETURN',4)
    176176
    177177       
    178178
    179179               
    180 ifdef([PPC64],[
     180ifdef(`PPC64',`
    181181        include(ppc-constants64.s)
    182 ],[
     182',`
    183183        include(ppc-constants32.s)
    184 ])
     184')
    185185
    186186num_lisp_globals = 49            /* MUST UPDATE THIS !!! */
     
    194194         _node(batch_flag)              /* -b */
    195195         _node(host_platform)           /* for runtime platform-specific stuff */
    196          _node(argv)                    /* address of argv[0] */
     196         _node(argv)                    /* address of argv`0' */
    197197         _node(ref_base)                        /* start of oldest pointer-bearing area */
    198198         _node(tenured_area)            /* the tenured_area */
     
    229229         _node(ret1val_addr)            /* address of "dynamic" subprims magic values return addr */
    230230         _node(subprims_base)           /* address of dynamic subprims jump table */
    231          _node(saveR13)                 /* probably don]t really need this */
     231         _node(saveR13)                 /* probably don't really need this */
    232232         _node(saveTOC)                 /* where the 68K emulator stores the  emulated regs */
    233233         _node(objc_2_personality)      /* exception "personality routine" address for ObjC 2.0 */
  • trunk/source/lisp-kernel/ppc-constants32.s

    r13067 r13337  
    1515
    1616
    17 define([rcontext],[r13])
     17define(`rcontext',`r13')
    1818       
    1919nbits_in_word = 32
     
    7373fulltag_imm = 3 /* a "real" immediate object.  Shares TAG with fulltag_immheader. */
    7474fulltag_odd_fixnum = 4  /* */
    75 fulltag_nil = 5 /* NIL and nothing but.  (Note that there]s still a hidden NILSYM.) */
     75fulltag_nil = 5 /* NIL and nothing but.  (Note that there's still a hidden NILSYM.) */
    7676fulltag_misc = 6        /* Pointer "real" tag_misc object.  Shares TAG with fulltag_nodeheader. */
    7777fulltag_immheader = 7   /* Header of heap-allocated object that contains unboxed data. */
     
    9494        _ends
    9595
    96 /* Order of CAR and CDR doesn]t seem to matter much - there aren]t */
     96/* Order of CAR and CDR doesn't seem to matter much - there aren't */
    9797/* too many tricks to be played with predecrement/preincrement addressing. */
    9898/* Keep them in the confusing MCL 3.0 order, to avoid confusion. */
     
    123123/* The order in which various header values are defined is significant in several ways: */
    124124/* 1) Numeric subtags precede non-numeric ones; there are further orderings among numeric subtags. */
    125 /* 2) All subtags which denote CL arrays are preceded by those that don]t, */
     125/* 2) All subtags which denote CL arrays are preceded by those that don't, */
    126126/*    with a further ordering which requires that (< header-arrayH header-vectorH ,@all-other-CL-vector-types) */
    127127/* 3) The element-size of ivectors is determined by the ordering of ivector subtags. */
    128128/* 4) All subtags are >= fulltag-immheader . */
    129129
    130 define([define_subtag],[
    131 subtag_$1 = $2|($3<<ntagbits)])
    132        
    133 define([define_imm_subtag],[
    134         define_subtag($1,fulltag_immheader,$2)])
    135 
    136        
    137 define([define_node_subtag],[
    138         define_subtag($1,fulltag_nodeheader,$2)])
     130define(`define_subtag',`
     131subtag_$1 = $2|($3<<ntagbits)')
     132       
     133define(`define_imm_subtag',`
     134        define_subtag($1,fulltag_immheader,$2)')
     135
     136       
     137define(`define_node_subtag',`
     138        define_subtag($1,fulltag_nodeheader,$2)')
    139139
    140140               
     
    171171/* CL array types.  There are more immediate types than node types; all CL array subtags must be > than */
    172172/* all non-CL-array subtags.  So we start by defining the immediate subtags in decreasing order, starting */
    173 /* with that subtag whose element size isn]t an integral number of bits and ending with those whose */
     173/* with that subtag whose element size isn't an integral number of bits and ending with those whose */
    174174/* element size - like all non-CL-array fulltag-immheader types - is 32 bits. */
    175175
     
    501501        _ends
    502502
    503 define([def_header],[
    504 $1 = ($2<<num_subtag_bits)|$3])
     503define(`def_header',`
     504$1 = ($2<<num_subtag_bits)|$3')
    505505
    506506        def_header(single_float_header,single_float.element_count,subtag_single_float)
     
    649649
    650650/* Lisp code keeps 0.0 in fp_zero */
    651 define([fp_zero],[f31])   /* a non-volatile reg as far as FFI is concerned. */
    652 define([fp_s32conv],[f30])   /* for s32->fp conversion */
     651define(`fp_zero',`f31')   /* a non-volatile reg as far as FFI is concerned. */
     652define(`fp_s32conv',`f30')   /* for s32->fp conversion */
    653653       
    654654/* registers, as used in destrucuring-bind/macro-bind */
    655655
    656 define([whole_reg],[temp1])
    657 define([arg_reg],[temp3])
    658 define([keyvect_reg],[temp2])
    659 define([mask_req_start],[24])
    660 define([mask_req_width],[8])
    661 define([mask_opt_start],[16])
    662 define([mask_opt_width],[8])
    663 define([mask_key_start],[8])
    664 define([mask_key_width],[8])
    665 define([mask_initopt],[7])
    666 define([mask_keyp],[6]) /*  note that keyp can be true even when 0 keys. */
    667 define([mask_aok],[5])
    668 define([mask_restp],[4])
    669 
    670 ifdef([DARWIN],[
    671         define([STACK_ALIGN],16)
    672         define([STACK_ALIGN_MASK],15)
    673 ],[
    674         define([STACK_ALIGN],8)
    675         define([STACK_ALIGN_MASK],7)
    676 ])
    677 
    678 define([TCR_STATE_FOREIGN],1)
    679 define([TCR_STATE_LISP],0)
    680 define([TCR_STATE_EXCEPTION_WAIT],2)
    681 define([TCR_STATE_EXCEPTION_RETURN],4)
    682 
    683 define([RESERVATION_DISCHARGE],0x2004)
     656define(`whole_reg',`temp1')
     657define(`arg_reg',`temp3')
     658define(`keyvect_reg',`temp2')
     659define(`mask_req_start',`24')
     660define(`mask_req_width',`8')
     661define(`mask_opt_start',`16')
     662define(`mask_opt_width',`8')
     663define(`mask_key_start',`8')
     664define(`mask_key_width',`8')
     665define(`mask_initopt',`7')
     666define(`mask_keyp',`6') /*  note that keyp can be true even when 0 keys. */
     667define(`mask_aok',`5')
     668define(`mask_restp',`4')
     669
     670ifdef(`DARWIN',`
     671        define(`STACK_ALIGN',16)
     672        define(`STACK_ALIGN_MASK',15)
     673',`
     674        define(`STACK_ALIGN',8)
     675        define(`STACK_ALIGN_MASK',7)
     676')
     677
     678define(`TCR_STATE_FOREIGN',1)
     679define(`TCR_STATE_LISP',0)
     680define(`TCR_STATE_EXCEPTION_WAIT',2)
     681define(`TCR_STATE_EXCEPTION_RETURN',4)
     682
     683define(`RESERVATION_DISCHARGE',0x2004)
    684684
    685685lisp_globals_limit = (0x3010+(LOWMEM_BIAS))
  • trunk/source/lisp-kernel/ppc-constants64.s

    r13067 r13337  
    1515
    1616
    17 define([rcontext],[r2])
     17define(`rcontext',`r2')
    1818       
    1919nbits_in_word = 64
     
    7070fulltag_nodeheader_3 = 15
    7171
    72 define([define_subtag],[
     72define(`define_subtag',`
    7373subtag_$1 = ($2 | ($3 << ntagbits))
    74 ])
     74')
    7575                       
    7676cl_array_subtag_mask = 0x80
    77 define([define_cl_array_subtag],[
     77define(`define_cl_array_subtag',`
    7878define_subtag($1,(cl_array_subtag_mask|$2),$3)
    79 ])
     79')
    8080
    8181define_cl_array_subtag(arrayH,fulltag_nodeheader_1,0)
     
    145145misc_bias = fulltag_misc
    146146cons_bias = fulltag_cons
    147 define([t_offset],-symbol.size)
     147define(`t_offset',-symbol.size)
    148148       
    149149misc_header_offset = -fulltag_misc
     
    180180/* The objects themselves look something like this: */
    181181       
    182 /* Order of CAR and CDR doesn]t seem to matter much - there aren't */
     182/* Order of CAR and CDR doesn't seem to matter much - there aren't */
    183183/* too many tricks to be played with predecrement/preincrement addressing. */
    184184/* Keep them in the confusing MCL 3.0 order, to avoid confusion. */
     
    470470        _ends
    471471
    472 define([def_header],[
    473 $1 = ($2<<num_subtag_bits)|$3])
     472define(`def_header',`
     473$1 = ($2<<num_subtag_bits)|$3')
    474474
    475475        def_header(double_float_header,2,subtag_double_float)
     
    588588nil_value = (0x3000+symbol.size+fulltag_misc+(LOWMEM_BIAS))
    589589               
    590 define([RESERVATION_DISCHARGE],(0x2008+(LOWMEM_BIAS)))
     590define(`RESERVATION_DISCHARGE',(0x2008+(LOWMEM_BIAS)))
    591591
    592592lisp_globals_limit = (0x3000+(LOWMEM_BIAS))
  • trunk/source/lisp-kernel/ppc-macros.s

    r13067 r13337  
    1616/* The assembler has to do the arithmetic here:  the expression */
    1717/*   may not be evaluable by m4. */
    18 define([lwi],[ifdef([DARWIN],[
     18define(`lwi',`ifdef(`DARWIN',`
    1919        .if ((($2) & 0xffff8000) == 0xffff8000)
    2020         li $1,($2)
     
    2626          ori $1,$1,(($2) & 0xffff)
    2727         .endif
    28         .endif],[
     28        .endif',`
    2929        .ifeq (($2) & 0xffff8000)-0xffff8000
    3030         li $1,$2
     
    3939         .endif
    4040        .endif
    41 ])])
    42 
    43 ifdef([PPC64],[
    44         define([clrrri],[clrrdi $@])       
    45         define([clrlri],[clrldi $@])
    46         define([clrlri_],[clrldi. $@])
    47         define([ldr],[ld $@])
    48         define([ldrx],[ldx $@])
    49         define([ldru],[ldu $@])
    50         define([str],[std $@])
    51         define([strx],[stdx $@])
    52         define([stru],[stdu $@])
    53         define([strux],[stdux $@])     
    54         define([cmpr],[cmpd $@])
    55         define([cmpri],[cmpdi $@])
    56         define([cmplr],[cmpld $@])
    57         define([cmplri],[cmpldi $@])
    58         define([trlge],[tdlge $@])
    59         define([trllt],[tdllt $@])
    60         define([trlt],[tdlt $@])
    61         define([trlle],[tdlle $@])
    62         define([treqi],[tdeqi $@])
    63         define([trnei],[tdnei $@])
    64         define([trgti],[tdgti $@])
    65         define([srari],[sradi $@])
    66         define([srri],[srdi $@])
    67         define([srr],[srd $@])
    68         define([slri],[sldi $@])
    69         define([lrarx],[ldarx $@])
    70         define([strcx],[stdcx. $@])
    71         define([load_highbit],[
     41')')
     42
     43ifdef(`PPC64',`
     44        define(`clrrri',`clrrdi $@')       
     45        define(`clrlri',`clrldi $@')
     46        define(`clrlri_',`clrldi. $@')
     47        define(`ldr',`ld $@')
     48        define(`ldrx',`ldx $@')
     49        define(`ldru',`ldu $@')
     50        define(`str',`std $@')
     51        define(`strx',`stdx $@')
     52        define(`stru',`stdu $@')
     53        define(`strux',`stdux $@')     
     54        define(`cmpr',`cmpd $@')
     55        define(`cmpri',`cmpdi $@')
     56        define(`cmplr',`cmpld $@')
     57        define(`cmplri',`cmpldi $@')
     58        define(`trlge',`tdlge $@')
     59        define(`trllt',`tdllt $@')
     60        define(`trlt',`tdlt $@')
     61        define(`trlle',`tdlle $@')
     62        define(`treqi',`tdeqi $@')
     63        define(`trnei',`tdnei $@')
     64        define(`trgti',`tdgti $@')
     65        define(`srari',`sradi $@')
     66        define(`srri',`srdi $@')
     67        define(`srr',`srd $@')
     68        define(`slri',`sldi $@')
     69        define(`lrarx',`ldarx $@')
     70        define(`strcx',`stdcx. $@')
     71        define(`load_highbit',`
    7272        __(lis $1,0x8000)
    7373        __(sldi $1,$1,32)
    74         ])
    75         define([extract_bit_shift_count],[
     74        ')
     75        define(`extract_bit_shift_count',`
    7676        __(clrldi $1,$2,64-bitmap_shift)
    77         ])
    78         define([alloc_trap],[
     77        ')
     78        define(`alloc_trap',`
    7979        __(tdlt allocptr,allocbase)
    80         ])
    81         define([mullr],[mulld $@])
    82 ],[
    83         define([clrrri],[clrrwi $@])
    84         define([clrlri],[clrlwi $@])
    85         define([clrlri_],[clrlwi. $@])
    86         define([ldr],[lwz $@])
    87         define([ldrx],[lwzx $@])
    88         define([ldru],[lwzu $@])
    89         define([str],[stw $@])
    90         define([strx],[stwx $@])
    91         define([stru],[stwu $@])
    92         define([strux],[stwux $@])
    93         define([cmpr],[cmpw $@])
    94         define([cmpri],[cmpwi $@])
    95         define([cmplr],[cmplw $@])
    96         define([cmplri],[cmplwi $@])
    97         define([trlge],[twlge $@])
    98         define([trllt],[twllt $@])
    99         define([trlt],[twlt $@])
    100         define([trlle],[twlle $@])       
    101         define([treqi],[tweqi $@])
    102         define([trnei],[twnei $@])
    103         define([trgti],[twgti $@])
    104         define([srari],[srawi $@])
    105         define([srri],[srwi $@])
    106         define([srr],[srw $@])
    107         define([slri],[slwi $@])
    108         define([lrarx],[lwarx $@])
    109         define([strcx],[stwcx. $@])
    110         define([load_highbit],[
     80        ')
     81        define(`mullr',`mulld $@')
     82',`
     83        define(`clrrri',`clrrwi $@')
     84        define(`clrlri',`clrlwi $@')
     85        define(`clrlri_',`clrlwi. $@')
     86        define(`ldr',`lwz $@')
     87        define(`ldrx',`lwzx $@')
     88        define(`ldru',`lwzu $@')
     89        define(`str',`stw $@')
     90        define(`strx',`stwx $@')
     91        define(`stru',`stwu $@')
     92        define(`strux',`stwux $@')
     93        define(`cmpr',`cmpw $@')
     94        define(`cmpri',`cmpwi $@')
     95        define(`cmplr',`cmplw $@')
     96        define(`cmplri',`cmplwi $@')
     97        define(`trlge',`twlge $@')
     98        define(`trllt',`twllt $@')
     99        define(`trlt',`twlt $@')
     100        define(`trlle',`twlle $@')       
     101        define(`treqi',`tweqi $@')
     102        define(`trnei',`twnei $@')
     103        define(`trgti',`twgti $@')
     104        define(`srari',`srawi $@')
     105        define(`srri',`srwi $@')
     106        define(`srr',`srw $@')
     107        define(`slri',`slwi $@')
     108        define(`lrarx',`lwarx $@')
     109        define(`strcx',`stwcx. $@')
     110        define(`load_highbit',`
    111111        __(lis $1,0x8000)
    112         ])
    113         define([extract_bit_shift_count],[
     112        ')
     113        define(`extract_bit_shift_count',`
    114114        __(clrlwi $1,$2,32-bitmap_shift)
    115         ])
    116         define([alloc_trap],[
     115        ')
     116        define(`alloc_trap',`
    117117        __(twllt allocptr,allocbase)
    118         ])
    119         define([mullr],[mullw $@])
    120 ])
     118        ')
     119        define(`mullr',`mullw $@')
     120')
    121121
    122122/* dnode_align(dest,src,delta) */
    123         define([dnode_align],[
     123        define(`dnode_align',`
    124124        __(la $1,($3+(dnode_size-1))($2))
    125125        __(clrrri($1,$1,dnode_align_bits))
    126 ])
    127 
    128 define([extract_fulltag],[
     126')
     127
     128define(`extract_fulltag',`
    129129        __(clrlri($1,$2,nbits_in_word-ntagbits))
    130         ])
    131 
    132 define([extract_lisptag],[
     130        ')
     131
     132define(`extract_lisptag',`
    133133        __(clrlri($1,$2,nbits_in_word-nlisptagbits))
    134         ])
    135 
    136 define([extract_lisptag_],[
     134        ')
     135
     136define(`extract_lisptag_',`
    137137        __(clrlri_($1,$2,nbits_in_word-nlisptagbits))
    138         ])
    139 
    140 define([extract_subtag],[
     138        ')
     139
     140define(`extract_subtag',`
    141141        __(lbz $1,misc_subtag_offset($2))
    142         ])
    143 
    144 ifdef([PPC64],[
    145 define([extract_lowtag],[
     142        ')
     143
     144ifdef(`PPC64',`
     145define(`extract_lowtag',`
    146146        __(clrldi $1,$2,nbits_in_word-nlowtagbits)
    147 ])
    148 define([trap_unless_lowtag_equal],[
     147')
     148define(`trap_unless_lowtag_equal',`
    149149        __(clrldi $3,$1,nbits_in_word-nlowtagbits)
    150150        __(tdnei $3,$2)
    151 ])               
    152         ])
     151')               
     152        ')
    153153                               
    154 define([extract_lowbyte],[
     154define(`extract_lowbyte',`
    155155        __(clrlri($1,$2,nbits_in_word-num_subtag_bits))
    156         ])
    157 
    158 define([extract_header],[
     156        ')
     157
     158define(`extract_header',`
    159159        __(ldr($1,misc_header_offset($2)))
    160         ])
    161 
    162 
    163 ifdef([PPC64],[
    164 define([extract_typecode],[
     160        ')
     161
     162
     163ifdef(`PPC64',`
     164define(`extract_typecode',`
    165165        new_macro_labels()
    166166        __(extract_fulltag($1,$2))
     
    170170        __(extract_subtag($1,$2))
    171171macro_label(not_misc):
    172 ])],[   
    173 define([extract_typecode],[
     172')',`   
     173define(`extract_typecode',`
    174174        new_macro_labels()
    175175        __(extract_lisptag($1,$2))
     
    178178        __(extract_subtag($1,$2))
    179179macro_label(not_misc):
    180 ])])
    181 
    182 define([box_fixnum],[
     180')')
     181
     182define(`box_fixnum',`
    183183        __(slri($1,$2,fixnumshift))
    184         ])
    185 
    186 define([unbox_fixnum],[
     184        ')
     185
     186define(`unbox_fixnum',`
    187187        __(srari($1,$2,fixnumshift))
    188         ])
    189 
    190 define([loaddf],[
    191         __(lfd $1,dfloat.value($2))])
    192        
    193 define([storedf],[
     188        ')
     189
     190define(`loaddf',`
     191        __(lfd $1,dfloat.value($2))')
     192       
     193define(`storedf',`
    194194        __(stfd $1,dfloat.value($2))
    195         ])
    196 
    197 define([push],[
     195        ')
     196
     197define(`push',`
    198198        __(stru($1,-node_size($2)))
    199         ])
     199        ')
    200200       
    201201        /* Generally not a great idea. */
    202 define([pop],[
     202define(`pop',`
    203203        __(ldr($1,0($2)))
    204204        __(la $2,node_size($2))
    205         ])
    206        
    207 define([vpush],[
     205        ')
     206       
     207define(`vpush',`
    208208        __(push($1,vsp))
    209         ])
    210        
    211 define([vpop],[
     209        ')
     210       
     211define(`vpop',`
    212212        __(pop($1,vsp))
    213         ])
     213        ')
    214214       
    215215               
    216 define([unlink],[
     216define(`unlink',`
    217217        __(ldr($1,0($1)))
    218  ])
    219 
    220        
    221 define([set_nargs],[
     218 ')
     219
     220       
     221define(`set_nargs',`
    222222        __(lwi(nargs,($1)<<fixnumshift))
    223         ])
    224        
    225 define([bitclr],[
     223        ')
     224       
     225define(`bitclr',`
    226226        __(rlwinm $1,$2,0,0x1f&((31-($3))+1),0x1f&((31-($3))-1))
    227         ])
    228        
    229 
    230 define([vref32],[
     227        ')
     228       
     229
     230define(`vref32',`
    231231        __(lwz $1,misc_data_offset+(($3)<<2)($2))
    232         ])
     232        ')
    233233       
    234 define([vref16],[/* dest,src,n*/
     234define(`vref16',`/* dest,src,n*/
    235235        __(lhz $1,misc_data_offset+(($3)<<1)($2))
    236         ])
    237        
    238 ifdef([PPC64],[
    239         define([vref64],[
     236        ')
     237       
     238ifdef(`PPC64',`
     239        define(`vref64',`
    240240        __(ld $1,misc_data_offset+(($3)<<3)($2))
    241         ])
    242 
    243         define([vrefr],[
     241        ')
     242
     243        define(`vrefr',`
    244244        __(vref64($1,$2,$3))
    245         ])
    246 ],[
    247         define([vrefr],[
     245        ')
     246',`
     247        define(`vrefr',`
    248248        __(vref32($1,$2,$3))
    249         ])
    250 ])
     249        ')
     250')
    251251       
    252252                       
    253 define([getvheader],[
     253define(`getvheader',`
    254254        __(ldr($1,vector.header($2)))
    255         ])
     255        ')
    256256       
    257257        /* Size is unboxed element count */
    258 define([header_size],[
     258define(`header_size',`
    259259        __(srri($1,$2,num_subtag_bits))
    260         ])
     260        ')
    261261       
    262262        /* "Length" is fixnum element count */
    263 define([header_length],[
    264 ifdef([PPC64],[
     263define(`header_length',`
     264ifdef(`PPC64',`
    265265        __(rldicr $1,$2,nbits_in_word-(num_subtag_bits-nfixnumtagbits),63-nfixnumtagbits)
    266266        __(clrldi $1,$1,(num_subtag_bits-nfixnumtagbits))
    267         ],[               
     267        ',`               
    268268        __(rlwinm $1,$2,nbits_in_word-(num_subtag_bits-nfixnumtagbits),(num_subtag_bits-nfixnumtagbits),31-nfixnumtagbits)
    269         ])
    270 ])       
    271 
    272 
    273 define([vector_size],[
    274         __(getvheader(ifelse($3.[],$1,$3),$2))
    275         __(header_size($1,ifelse($3.[],$1,$3)))
    276         ])
    277        
    278 define([vector_length],[
     269        ')
     270')       
     271
     272
     273define(`vector_size',`
     274        __(getvheader(ifelse($3.`',$1,$3),$2))
     275        __(header_size($1,ifelse($3.`',$1,$3)))
     276        ')
     277       
     278define(`vector_length',`
    279279        __(getvheader($3,$2))
    280280        __(header_length($1,$3))
    281         ])
    282 
    283        
    284 define([ref_global],[
     281        ')
     282
     283       
     284define(`ref_global',`
    285285        __(ldr($1,lisp_globals.$2(0)))
    286 ])
    287 
    288 define([set_global],[
     286')
     287
     288define(`set_global',`
    289289        __(str($1,lisp_globals.$2(0)))
    290 ])
    291 
    292 define([ref_nrs_value],[
     290')
     291
     292define(`ref_nrs_value',`
    293293        __(ldr($1,((nrs.$2)+(symbol.vcell))(0)))
    294 ])
    295        
    296 define([set_nrs_value],[
     294')
     295       
     296define(`set_nrs_value',`
    297297        __(str($1,((nrs.$2)+(symbol.vcell))(0)))
    298 ])
    299 
    300 define([extract_unsigned_byte_bits],[
    301 ifdef([PPC64],[
     298')
     299
     300define(`extract_unsigned_byte_bits',`
     301ifdef(`PPC64',`
    302302        __(rldicr $1,$2,64-fixnumshift,63-$3)
    303 ],[               
     303',`               
    304304        __(rlwinm $1,$2,0,32-fixnumshift,31-($3+fixnumshift))
    305 ])       
    306 ])
    307 
    308 define([extract_unsigned_byte_bits_],[
    309 ifdef([PPC64],[
     305')       
     306')
     307
     308define(`extract_unsigned_byte_bits_',`
     309ifdef(`PPC64',`
    310310        __(rldicr. $1,$2,64-fixnumshift,63-$3)
    311 ],[               
     311',`               
    312312        __(rlwinm. $1,$2,0,32-fixnumshift,31-($3+fixnumshift))
    313 ])       
    314 ])
     313')       
     314')
    315315
    316316        /* vpop argregs - nargs is known to be non-zero */
    317 define([vpop_argregs_nz],[
     317define(`vpop_argregs_nz',`
    318318        new_macro_labels()
    319319        __(cmplri(cr1,nargs,node_size*2))
     
    323323        __(bne cr1,macro_label(l0))
    324324        __(vpop(arg_x))
    325 macro_label(l0):])
     325macro_label(l0):')
    326326
    327327               
    328328        /* vpush argregs */
    329 define([vpush_argregs],[
     329define(`vpush_argregs',`
    330330        new_macro_labels()
    331331        __(cmplri(cr0,nargs,0))
     
    340340        __(vpush(arg_z))
    341341macro_label(done):
    342 ])
    343 
    344 define([create_lisp_frame],[
     342')
     343
     344define(`create_lisp_frame',`
    345345        __(stru(sp,-lisp_frame.size(sp)))
    346 ])
     346')
    347347
    348348               
    349 define([build_lisp_frame],[
     349define(`build_lisp_frame',`
    350350        create_lisp_frame()
    351         __(str(ifelse($1,[],fn,$1),lisp_frame.savefn(sp)))
    352         __(str(ifelse($2,[],loc_pc,$2),lisp_frame.savelr(sp)))
    353         __(str(ifelse($3,[],vsp,$3),lisp_frame.savevsp(sp)))
    354 ])
     351        __(str(ifelse($1,`',fn,$1),lisp_frame.savefn(sp)))
     352        __(str(ifelse($2,`',loc_pc,$2),lisp_frame.savelr(sp)))
     353        __(str(ifelse($3,`',vsp,$3),lisp_frame.savevsp(sp)))
     354')
    355355
    356356               
    357 define([discard_lisp_frame],[
     357define(`discard_lisp_frame',`
    358358        __(la sp,lisp_frame.size(sp))
    359         ])
    360        
    361        
    362 define([_car],[
     359        ')
     360       
     361       
     362define(`_car',`
    363363        __(ldr($1,cons.car($2)))
    364 ])
    365        
    366 define([_cdr],[
     364')
     365       
     366define(`_cdr',`
    367367        __(ldr($1,cons.cdr($2)))
    368         ])
    369        
    370 define([_rplaca],[
     368        ')
     369       
     370define(`_rplaca',`
    371371        __(str($2,cons.car($1)))
    372         ])
    373        
    374 define([_rplacd],[
     372        ')
     373       
     374define(`_rplacd',`
    375375        __(str($2,cons.cdr($1)))
    376         ])
    377 
    378 define([vpush_saveregs],[
     376        ')
     377
     378define(`vpush_saveregs',`
    379379        __(vpush(save7))
    380380        __(vpush(save6))
     
    385385        __(vpush(save1))
    386386        __(vpush(save0))
    387         ])
    388        
    389 define([restore_saveregs],[
     387        ')
     388       
     389define(`restore_saveregs',`
    390390        __(ldr(save0,node_size*0($1)))
    391391        __(ldr(save1,node_size*1($1)))
     
    396396        __(ldr(save6,node_size*6($1)))
    397397        __(ldr(save7,node_size*7($1)))
    398 ])
    399 
    400 define([vpop_saveregs],[
     398')
     399
     400define(`vpop_saveregs',`
    401401        __(restore_saveregs(vsp))
    402402        __(la vsp,node_size*8(vsp))
    403 ])
    404 
    405 define([trap_unless_lisptag_equal],[
     403')
     404
     405define(`trap_unless_lisptag_equal',`
    406406        __(extract_lisptag($3,$1))
    407407        __(trnei($3,$2))
    408 ])
    409 
    410 ifdef([PPC64],[
    411 define([trap_unless_list],[
     408')
     409
     410ifdef(`PPC64',`
     411define(`trap_unless_list',`
    412412        new_macro_labels()
    413413        __(cmpdi ifelse($3,$3,cr0),$1,nil_value)
     
    417417macro_label(is_list):   
    418418
    419 ])],[   
    420 define([trap_unless_list],[
     419')',`   
     420define(`trap_unless_list',`
    421421        __(trap_unless_lisptag_equal($1,tag_list,$2))
    422 ])
    423 ])
    424 
    425 define([trap_unless_fulltag_equal],[
     422')
     423')
     424
     425define(`trap_unless_fulltag_equal',`
    426426        __(extract_fulltag($3,$1))
    427427        __(trnei($3,$2))
    428 ])
    429        
    430 define([trap_unless_typecode_equal],[
     428')
     429       
     430define(`trap_unless_typecode_equal',`
    431431        __(extract_typecode($3,$1))
    432432        __(trnei($3,$2))
    433 ])
     433')
    434434       
    435435/* "jump" to the code-vector of the function in nfn. */
    436 define([jump_nfn],[
     436define(`jump_nfn',`
    437437        __(ldr(temp0,_function.codevector(nfn)))
    438438        __(mtctr temp0)
    439439        __(bctr)
    440 ])
     440')
    441441
    442442/* "call the code-vector of the function in nfn. */
    443 define([call_nfn],[
     443define(`call_nfn',`
    444444        __(ldr(temp0,_function.codevector(nfn)))
    445445        __(mtctr temp0)
    446446        __(bctrl)
    447 ])
     447')
    448448       
    449449
    450450/* "jump" to the function in fnames function cell. */
    451 define([jump_fname],[
     451define(`jump_fname',`
    452452        __(ldr(nfn,symbol.fcell(fname)))
    453453        __(jump_nfn())
    454 ])
     454')
    455455
    456456/* call the function in fnames function cell. */
    457 define([call_fname],[
     457define(`call_fname',`
    458458        __(ldr(nfn,symbol.fcell(fname)))
    459459        __(call_nfn())
    460 ])
    461 
    462 define([do_funcall],[
     460')
     461
     462define(`do_funcall',`
    463463        new_macro_labels()
    464464        __(extract_fulltag(imm0,temp0))
     
    477477macro_label(bad):
    478478        __(uuo_interr(error_cant_call,temp0))
    479 ])     
    480 
    481 define([mkcatch],[
     479')     
     480
     481define(`mkcatch',`
    482482        __(mflr loc_pc)
    483483        __(ldr(imm0,tcr.catch_top(rcontext)))
     
    514514        __(li nargs,0)
    515515
    516 ])     
    517 
    518 define([restore_catch_nvrs],[
     516')     
     517
     518define(`restore_catch_nvrs',`
    519519        __(ldr(first_nvr,catch_frame.regs+(node_size*0)($1)))
    520520        __(ldr(second_nvr,catch_frame.regs+(node_size*1)($1)))
     
    525525        __(ldr(seventh_nvr,catch_frame.regs+(node_size*6)($1)))
    526526        __(ldr(eighth_nvr,catch_frame.regs+(node_size*7)($1)))
    527 ])               
    528 
    529 define([DCBZL],[
     527')               
     528
     529define(`DCBZL',`
    530530        __(.long (31<<26)+(1<<21)+($1<<16)+($2<<11)+(1014<<1))
    531 ])
    532        
    533 define([check_stack_alignment],[
     531')
     532       
     533define(`check_stack_alignment',`
    534534        new_macro_labels()
    535535        __(andi. $1,sp,STACK_ALIGN_MASK)
     
    537537        __(.long 0)
    538538macro_label(stack_ok):
    539 ])
    540 
    541 define([stack_align],[((($1)+STACK_ALIGN_MASK)&~STACK_ALIGN_MASK)])
    542 
    543 define([clear_alloc_tag],[
     539')
     540
     541define(`stack_align',`((($1)+STACK_ALIGN_MASK)&~STACK_ALIGN_MASK)')
     542
     543define(`clear_alloc_tag',`
    544544        __(clrrri(allocptr,allocptr,ntagbits))
    545 ])
     545')
    546546
    547547/* If the GC interrupts the current thread (after the trap), it needs */
     
    563563/*       invoke the segment allocator. */
    564564       
    565 define([Cons],[
     565define(`Cons',`
    566566        __(la allocptr,(-cons.size+fulltag_cons)(allocptr))
    567567        __(alloc_trap())
     
    570570        __(mr $1,allocptr)
    571571        __(clear_alloc_tag())
    572 ])
     572')
    573573
    574574
     
    598598
    599599
    600 define([Misc_Alloc],[
     600define(`Misc_Alloc',`
    601601        __(la $3,-fulltag_misc($3))
    602602        __(sub allocptr,allocptr,$3)
     
    605605        __(mr $1,allocptr)
    606606        __(clear_alloc_tag())
    607 ])
     607')
    608608
    609609/*  Parameters $1, $2 as above; $3 = physical size constant. */
    610 define([Misc_Alloc_Fixed],[
     610define(`Misc_Alloc_Fixed',`
    611611        __(la allocptr,(-$3)+fulltag_misc(allocptr))
    612612        __(alloc_trap())
     
    614614        __(mr $1,allocptr)
    615615        __(clear_alloc_tag())
    616 ])
     616')
    617617
    618618
     
    621621
    622622
    623 ifdef([DARWIN],[
     623ifdef(`DARWIN',`
    624624        .macro zero_doublewords
    625625        .if $2
     
    628628        .endif
    629629        .endmacro
    630 ])
    631 
    632 ifdef([LINUX],[
     630')
     631
     632ifdef(`LINUX',`
    633633        .macro zero_doublewords base,disp,nbytes
    634634        .if \nbytes
     
    637637        .endif
    638638        .endm
    639 ])     
    640 
    641 define([Set_TSP_Frame_Unboxed],[
     639')     
     640
     641define(`Set_TSP_Frame_Unboxed',`
    642642        __(str(tsp,tsp_frame.type(tsp)))
    643 ])
    644 
    645 define([Set_TSP_Frame_Boxed],[
     643')
     644
     645define(`Set_TSP_Frame_Boxed',`
    646646        __(str(rzero,tsp_frame.type(tsp)))
    647 ])
     647')
    648648               
    649649/* A newly allocated TSP frame is always "raw" (has non-zero type, indicating */
    650650/* that it doesn't contain tagged data. */
    651651
    652 define([TSP_Alloc_Fixed_Unboxed],[
     652define(`TSP_Alloc_Fixed_Unboxed',`
    653653        __(stru(tsp,-($1+tsp_frame.data_offset)(tsp)))
    654654        __(Set_TSP_Frame_Unboxed())
    655 ])
    656 
    657 define([TSP_Alloc_Fixed_Unboxed_Zeroed],[
     655')
     656
     657define(`TSP_Alloc_Fixed_Unboxed_Zeroed',`
    658658        __(TSP_Alloc_Fixed_Unboxed($1))
    659659        __(zero_doublewords tsp,tsp_frame.fixed_overhead,$1)
    660 ])
    661 
    662 define([TSP_Alloc_Fixed_Boxed],[
     660')
     661
     662define(`TSP_Alloc_Fixed_Boxed',`
    663663        __(TSP_Alloc_Fixed_Unboxed_Zeroed($1))
    664664        __(Set_TSP_Frame_Boxed())
    665 ])
     665')
    666666
    667667
     
    678678
    679679/* Handle the general case, where the frame might be empty */
    680 define([Zero_TSP_Frame],[
     680define(`Zero_TSP_Frame',`
    681681        __(new_macro_labels())
    682682        __(la $1,tsp_frame.size-8(tsp))
     
    687687        __(stfdu fp_zero,8($1))
    688688macro_label(zero_tsp_test):     
    689         __(cmpr(ifelse($3,[],[cr0],$3),$1,$2))
    690         __(bne ifelse($3,[],[cr0],$3),macro_label(zero_tsp_loop))
    691 ])
     689        __(cmpr(ifelse($3,`',`cr0',$3),$1,$2))
     690        __(bne ifelse($3,`',`cr0',$3),macro_label(zero_tsp_loop))
     691')
    692692
    693693/* Save some branching when we know that the frame can't be empty.*/
    694 define([Zero_TSP_Frame_nz],[
     694define(`Zero_TSP_Frame_nz',`
    695695        new_macro_labels()
    696696        __(la $1,tsp_frame.size-8(tsp))
     
    699699macro_label(zero_tsp_loop):
    700700        __(stfdu fp_zero,8($1))
    701         __(cmpr(ifelse($3,[],[cr0],$3),$1,$2))
    702         __(bne ifelse($3,[],[cr0],$3),macro_label(zero_tsp_loop))
    703 ])
     701        __(cmpr(ifelse($3,`',`cr0',$3),$1,$2))
     702        __(bne ifelse($3,`',`cr0',$3),macro_label(zero_tsp_loop))
     703')
    704704       
    705705/* $1 = 8-byte-aligned size, positive.  $2 (optiional) set */
    706706/* to negated size. */
    707 define([TSP_Alloc_Var_Unboxed],[
    708         __(neg ifelse($2,[],$1,$2),$1)
    709         __(strux(tsp,tsp,ifelse($2,[],$1,$2)))
     707define(`TSP_Alloc_Var_Unboxed',`
     708        __(neg ifelse($2,`',$1,$2),$1)
     709        __(strux(tsp,tsp,ifelse($2,`',$1,$2)))
    710710        __(Set_TSP_Frame_Unboxed())
    711 ])
    712 
    713 define([TSP_Alloc_Var_Boxed],[
     711')
     712
     713define(`TSP_Alloc_Var_Boxed',`
    714714        __(TSP_Alloc_Var_Unboxed($1))
    715715        __(Zero_TSP_Frame($1,$2))
    716716        __(Set_TSP_Frame_Boxed())
    717 ])             
    718 
    719 
    720 define([TSP_Alloc_Var_Boxed_nz],[
     717')             
     718
     719
     720define(`TSP_Alloc_Var_Boxed_nz',`
    721721        __(TSP_Alloc_Var_Unboxed($1))
    722722        __(Zero_TSP_Frame_nz($1,$2))
    723723        __(Set_TSP_Frame_Boxed())
    724 ])             
    725 
    726 define([check_pending_interrupt],[
     724')             
     725
     726define(`check_pending_interrupt',`
    727727        new_macro_labels()
    728728        __(ldr(nargs,tcr.tlb_pointer(rcontext)))
    729729        __(ldr(nargs,INTERRUPT_LEVEL_BINDING_INDEX(nargs)))
    730         __(cmpri(ifelse($1,[],[cr0],$1),nargs,0))
    731         __(blt ifelse($1,[],[cr0],$1),macro_label(done))
    732         __(bgt ifelse($1,[],[cr0],$1),macro_label(trap))
     730        __(cmpri(ifelse($1,`',`cr0',$1),nargs,0))
     731        __(blt ifelse($1,`',`cr0',$1),macro_label(done))
     732        __(bgt ifelse($1,`',`cr0',$1),macro_label(trap))
    733733        __(ldr(nargs,tcr.interrupt_pending(rcontext)))
    734734macro_label(trap):
    735735        __(trgti(nargs,0))
    736736macro_label(done):
    737 ])
     737')
    738738
    739739/* $1 = ndigits.  Assumes 4-byte digits */       
    740 define([aligned_bignum_size],[((~(dnode_size-1)&(node_size+(dnode_size-1)+(4*$1))))])
    741 
    742 define([suspend_now],[
     740define(`aligned_bignum_size',`((~(dnode_size-1)&(node_size+(dnode_size-1)+(4*$1))))')
     741
     742define(`suspend_now',`
    743743        __(uuo_interr(error_propagate_suspend,rzero))
    744 ])
     744')
  • trunk/source/lisp-kernel/ppc-spentry.s

    r13279 r13337  
    2121       
    2222local_label(start):     
    23 define([_spentry],[ifdef([__func_name],[_endfn],[])
     23define(`_spentry',`ifdef(`__func_name',`_endfn',`')
    2424        _exportfn(_SP$1)
    2525        .line  __line__
    26 ])
     26')
    2727
    2828             
    29 define([_endsubp],[
     29define(`_endsubp',`
    3030        _endfn(_SP$1)
    3131# __line__
    32 ])
     32')
    3333
    3434
    3535                       
    3636               
    37 define([jump_builtin],[
     37define(`jump_builtin',`
    3838        ref_nrs_value(fname,builtin_functions)
    3939        set_nargs($2)
    4040        vrefr(fname,fname,$1)
    4141        jump_fname()
    42 ])
     42')
    4343       
    4444_spentry(jmpsym)
     
    611611   If we are in this function and before the test which follows the
    612612   conditional (at egc_store_node_conditional), or at that test
    613    and cr0[eq] is clear, pc_luser_xp() should just let this continue
     613   and cr0`eq' is clear, pc_luser_xp() should just let this continue
    614614   (we either haven't done the store conditional yet, or got a
    615615   possibly transient failure.)  If we're at that test and the
    616    cr0[EQ] bit is set, then the conditional store succeeded and
     616   cr0`EQ' bit is set, then the conditional store succeeded and
    617617   we have to atomically memoize the possible intergenerational
    618618   reference.  Note that the local labels 4 and 5 are in the
     
    620620
    621621   N.B: it's not possible to really understand what's going on just
    622    by the state of the cr0[eq] bit.  A transient failure in the
    623    conditional stores that handle memoization might clear cr0[eq]
     622   by the state of the cr0`eq' bit.  A transient failure in the
     623   conditional stores that handle memoization might clear cr0`eq'
    624624   without having completed the memoization.
    625625*/
     
    661661
    662662/* arg_z = new value, arg_y = expected old value, arg_x = hash-vector,
    663    vsp[0] = (boxed) byte-offset
     663   vsp`0' = (boxed) byte-offset
    664664   Interrupt-related issues are as in store_node_conditional, but
    665665   we have to do more work to actually do the memoization.*/
     
    909909/* heap-cons the object if there's no room on the tstack.)  */
    910910_spentry(stack_misc_alloc)
    911         __ifdef([PPC64])
     911        __ifdef(`PPC64')
    912912         __(extract_unsigned_byte_bits_(imm2,arg_y,56))
    913913         __(unbox_fixnum(imm0,arg_z))
     
    10131013        __(ldrx(arg_z,vsp,nargs))
    10141014        __(unbox_fixnum(imm0,arg_z))
    1015         __ifdef([PPC64])
     1015        __ifdef(`PPC64')
    10161016         __(sldi imm1,nargs,num_subtag_bits-fixnum_shift)
    10171017         __(or imm0,imm0,imm1)
     
    118711871:
    11881188        /* (vpush (< imm1 nargs))  */
    1189         __ifdef([PPC64])
     1189        __ifdef(`PPC64')
    11901190         __(xor imm2,imm1,nargs)
    11911191         __(sradi imm2,imm2,63)
     
    12981298/* (temp1) may still have "live" values in them, as does nfn (temp2).  */
    12991299
    1300 define([keyword_flags],[imm2])
    1301 define([keyword_vector],[temp3])
    1302 define([keyword_count],[imm3])
    1303 
    1304 
    1305 
    1306 define([varptr],[save0])
    1307 define([valptr],[save1])
    1308 define([limit],[save2])
     1300define(`keyword_flags',`imm2')
     1301define(`keyword_vector',`temp3')
     1302define(`keyword_count',`imm3')
     1303
     1304
     1305
     1306define(`varptr',`save0')
     1307define(`valptr',`save1')
     1308define(`limit',`save2')
    13091309
    13101310_spentry(keyword_bind)
     
    14801480       
    14811481_spentry(poweropen_ffcall)
    1482 LocalLabelPrefix[]ffcall:               
     1482LocalLabelPrefix`'ffcall:               
    14831483        __(mflr loc_pc)
    14841484        __(vpush_saveregs())            /* Now we can use save0-save7 to point to stacks  */
     
    15101510        __(li r4,TCR_STATE_FOREIGN)
    15111511        __(str(r4,tcr.valence(rcontext)))
    1512         __ifdef([rTOC])
     1512        __ifdef(`rTOC')
    15131513         __(ld rTOC,8(nargs))
    15141514         __(ld nargs,0(nargs))
     
    15161516         __(li rcontext,0)
    15171517        __endif
    1518 LocalLabelPrefix[]ffcall_setup:
     1518LocalLabelPrefix`'ffcall_setup:
    15191519        __(mtctr nargs)
    15201520        __(ldr(r3,c_frame.param0(sp)))
     
    15291529        /* to the function on entry.  */
    15301530        __(mr r12,nargs)
    1531 LocalLabelPrefix[]ffcall_setup_end:
    1532 LocalLabelPrefix[]ffcall_call:
     1531LocalLabelPrefix`'ffcall_setup_end:
     1532LocalLabelPrefix`'ffcall_call:
    15331533        __(bctrl)
    1534 LocalLabelPrefix[]ffcall_call_end:
     1534LocalLabelPrefix`'ffcall_call_end:
    15351535        /* C should have preserved save0 (= rcontext) for us.  */
    15361536        __(ldr(sp,0(sp)))
     
    15751575        __(lfd f0,tcr.lisp_fpscr(rcontext))
    15761576        __(mtfsf 0xff,f0)
    1577         __(check_pending_interrupt([cr1]))
     1577        __(check_pending_interrupt(`cr1'))
    15781578        __(mtxer rzero)
    15791579        __(mtctr rzero)
    1580         __ifdef([PPC64])
    1581          __ifdef([DARWIN])
     1580        __ifdef(`PPC64')
     1581         __ifdef(`DARWIN')
    15821582          __(li imm3,1<<TCR_FLAG_BIT_FOREIGN_EXCEPTION)
    15831583          __(ld imm4,tcr.flags(rcontext))
     
    15871587        __endif
    15881588        __(blr)
    1589         __ifdef([PPC64])
    1590          __ifdef([DARWIN])
     1589        __ifdef(`PPC64')
     1590         __ifdef(`DARWIN')
    159115910:        /* Got here because TCR_FLAG_BIT_FOREIGN_EXCEPTION */
    15921592          /* was set in tcr.flags.  Clear that bit. */
     
    16021602          __(b _SPksignalerr)
    16031603        /* Handle exceptions, for ObjC 2.0 */
    1604 LocalLabelPrefix[]ffcallLandingPad:     
     1604LocalLabelPrefix`'ffcallLandingPad:     
    16051605          __(mr save1,r3)
    16061606          __(cmpdi r4,1)
    16071607          __(beq 1f)
    1608 LocalLabelPrefix[]ffcallUnwindResume:
     1608LocalLabelPrefix`'ffcallUnwindResume:
    16091609          __(ref_global(r12,unwind_resume))
    16101610          __(mtctr r12)
    16111611          __(bctrl)
    1612 LocalLabelPrefix[]ffcallUnwindResume_end:         
     1612LocalLabelPrefix`'ffcallUnwindResume_end:         
    161316131:        __(mr r3,save1)
    1614 LocalLabelPrefix[]ffcallBeginCatch:
     1614LocalLabelPrefix`'ffcallBeginCatch:
    16151615          __(ref_global(r12,objc2_begin_catch))
    16161616          __(mtctr r12)
    16171617          __(bctrl)
    1618 LocalLabelPrefix[]ffcallBeginCatch_end:         
     1618LocalLabelPrefix`'ffcallBeginCatch_end:         
    16191619          __(ld save1,0(r3)) /* indirection is necessary because we don't provide type info in lsda */
    1620 LocalLabelPrefix[]ffcallEndCatch: 
     1620LocalLabelPrefix`'ffcallEndCatch: 
    16211621          __(ref_global(r12,objc2_end_catch))
    16221622          __(mtctr r12)
    16231623          __(bctrl)             
    1624 LocalLabelPrefix[]ffcallEndCatch_end:     
     1624LocalLabelPrefix`'ffcallEndCatch_end:     
    16251625          __(ref_global(r12,get_tcr))
    16261626          __(mtctr r12)
     
    16311631          __(std imm2,tcr.flags(imm0))
    16321632          __(mr imm0,save1)
    1633           __(b LocalLabelPrefix[]ffcall_call_end)
    1634 LocalLabelPrefix[]ffcall_end:   
     1633          __(b LocalLabelPrefix`'ffcall_call_end)
     1634LocalLabelPrefix`'ffcall_end:   
    16351635
    16361636                .section __DATA,__gcc_except_tab
     
    16811681   r9 and r10 - at least - are overloaded as dedicated lisp registers */
    16821682_spentry(poweropen_ffcall_return_registers)
    1683 LocalLabelPrefix[]ffcall_return_registers:               
     1683LocalLabelPrefix`'ffcall_return_registers:               
    16841684        __(mflr loc_pc)
    16851685        __(vpush_saveregs())            /* Now we can use save0-save7 to point to stacks  */
     
    17121712        __(li r4,TCR_STATE_FOREIGN)
    17131713        __(str(r4,tcr.valence(rcontext)))
    1714         __ifdef([rTOC])
     1714        __ifdef(`rTOC')
    17151715         __(ld rTOC,8(nargs))
    17161716         __(ld nargs,0(nargs))
     
    17181718         __(li rcontext,0)
    17191719        __endif
    1720 LocalLabelPrefix[]ffcall_return_registers_setup:
     1720LocalLabelPrefix`'ffcall_return_registers_setup:
    17211721        __(mtctr nargs)
    17221722        __(ldr(r3,c_frame.param0(sp)))
     
    17311731        /* to the function on entry.  */
    17321732        __(mr r12,nargs)
    1733 LocalLabelPrefix[]ffcall_return_registers_setup_end:
    1734 LocalLabelPrefix[]ffcall_return_registers_call:
     1733LocalLabelPrefix`'ffcall_return_registers_setup_end:
     1734LocalLabelPrefix`'ffcall_return_registers_call:
    17351735        __(bctrl)
    1736 LocalLabelPrefix[]ffcall_return_registers_call_end:
     1736LocalLabelPrefix`'ffcall_return_registers_call_end:
    17371737        __(str(r3,0*node_size(save7)))       
    17381738        __(str(r4,1*node_size(save7)))       
     
    17981798        __(lfd f0,tcr.lisp_fpscr(rcontext))
    17991799        __(mtfsf 0xff,f0)
    1800         __(check_pending_interrupt([cr1]))
     1800        __(check_pending_interrupt(`cr1'))
    18011801        __(mtxer rzero)
    18021802        __(mtctr rzero)
    1803         __ifdef([DARWIN])
    1804          __ifdef([PPC64])
     1803        __ifdef(`DARWIN')
     1804         __ifdef(`PPC64')
    18051805          __(li imm3,1<<TCR_FLAG_BIT_FOREIGN_EXCEPTION)
    18061806          __(ld imm4,tcr.flags(rcontext))
     
    18111811        __(blr)
    18121812
    1813         __ifdef([DARWIN])
    1814          __ifdef([PPC64])
     1813        __ifdef(`DARWIN')
     1814         __ifdef(`PPC64')
    181518150:        /* Got here because TCR_FLAG_BIT_FOREIGN_EXCEPTION */
    18161816          /* was set in tcr.flags.  Clear that bit. */
     
    18261826          __(b _SPksignalerr)
    18271827        /* Handle exceptions, for ObjC 2.0 */
    1828 LocalLabelPrefix[]ffcall_return_registersLandingPad:     
     1828LocalLabelPrefix`'ffcall_return_registersLandingPad:     
    18291829          __(mr save1,r3)
    18301830          __(cmpdi r4,1)
    18311831          __(beq 1f)
    1832 LocalLabelPrefix[]ffcall_return_registersUnwindResume:
     1832LocalLabelPrefix`'ffcall_return_registersUnwindResume:
    18331833          __(ref_global(r12,unwind_resume))
    18341834          __(mtctr r12)
    18351835          __(bctrl)
    1836 LocalLabelPrefix[]ffcall_return_registersUnwindResume_end:         
     1836LocalLabelPrefix`'ffcall_return_registersUnwindResume_end:         
    183718371:        __(mr r3,save1)
    1838 LocalLabelPrefix[]ffcall_return_registersBeginCatch:
     1838LocalLabelPrefix`'ffcall_return_registersBeginCatch:
    18391839          __(ref_global(r12,objc2_begin_catch))
    18401840          __(mtctr r12)
    18411841          __(bctrl)
    1842 LocalLabelPrefix[]ffcall_return_registersBeginCatch_end:         
     1842LocalLabelPrefix`'ffcall_return_registersBeginCatch_end:         
    18431843          __(ld save1,0(r3)) /* indirection is necessary because we don't provide type info in lsda */
    1844 LocalLabelPrefix[]ffcall_return_registersEndCatch: 
     1844LocalLabelPrefix`'ffcall_return_registersEndCatch: 
    18451845          __(ref_global(r12,objc2_end_catch))
    18461846          __(mtctr r12)
    18471847          __(bctrl)             
    1848 LocalLabelPrefix[]ffcall_return_registersEndCatch_end:     
     1848LocalLabelPrefix`'ffcall_return_registersEndCatch_end:     
    18491849          __(ref_global(r12,get_tcr))
    18501850          __(mtctr r12)
     
    18551855          __(std imm2,tcr.flags(imm0))
    18561856          __(mr imm0,save1)
    1857           __(b LocalLabelPrefix[]ffcall_return_registers_call_end)
    1858 LocalLabelPrefix[]ffcall_return_registers_end:
     1857          __(b LocalLabelPrefix`'ffcall_return_registers_call_end)
     1858LocalLabelPrefix`'ffcall_return_registers_end:
    18591859          .section __DATA,__gcc_except_tab
    18601860          .align 3
     
    20582058/* Argument in arg_z, result in imm0.  May use temp0.  */
    20592059_spentry(getxlong)
    2060         __ifdef([PPC64])
     2060        __ifdef(`PPC64')
    20612061        __else
    20622062        __(extract_typecode(imm0,arg_z))
     
    20942094/* ppc2-invoke-fn assumes that temp1 is preserved here.  */
    20952095_spentry(spreadargz)
    2096         __ifdef([PPC64])
     2096        __ifdef(`PPC64')
    20972097         __(extract_fulltag(imm1,arg_z))
    20982098         __(cmpri(cr1,imm1,fulltag_cons))
     
    21102110        __(_cdr(arg_z,arg_z))
    21112111        __(cmpri(cr0,arg_z,nil_value))
    2112         __ifdef([PPC64])
     2112        __ifdef(`PPC64')
    21132113         __(extract_fulltag(imm1,arg_z))
    21142114         __(cmpri(cr1,imm1,fulltag_cons))
     
    22972297       
    22982298local_label(misc_ref_common):   
    2299         __ifdef([PPC64])
     2299        __ifdef(`PPC64')
    23002300         __(slwi imm1,imm1,3)
    23012301         __(li imm0,LO(local_label(misc_ref_jmp)))
     
    31453145        __(la arg_z,tsp_frame.data_offset+fulltag_misc(tsp))
    31463146        __(str(imm1,macptr.address(arg_z)))
    3147         __ifdef([PPC64])
     3147        __ifdef(`PPC64')
    31483148         __(std rzero,macptr.domain(arg_z))
    31493149         __(std rzero,macptr.type(arg_z))
     
    32363236        __(ldru(temp0,-node_size(imm1)))
    32373237        __(slri(imm2,imm0,num_subtag_bits-fixnumshift))
    3238         __ifdef([PPC64])
     3238        __ifdef(`PPC64')
    32393239         __(unbox_fixnum(imm3,temp0))
    32403240         __(or imm2,imm3,imm2)
     
    32763276
    32773277_spentry(misc_alloc)
    3278         __ifdef([PPC64])
     3278        __ifdef(`PPC64')
    32793279         __(extract_unsigned_byte_bits_(imm2,arg_y,56))
    32803280         __(unbox_fixnum(imm0,arg_z))
     
    33703370
    33713371_spentry(macro_bind)
    3372         __ifdef([PPC64])
     3372        __ifdef(`PPC64')
    33733373         __(mr whole_reg,arg_reg)
    33743374         __(extract_fulltag(imm0,arg_reg))
     
    34043404        /* Extract required arg count.  */
    34053405        /* A bug in gas: can't handle shift count of "32" (= 0  */
    3406         ifelse(eval(mask_req_width+mask_req_start),eval(32),[
     3406        ifelse(eval(mask_req_width+mask_req_start),eval(32),`
    34073407        __(clrlwi. imm0,nargs,mask_req_start)
    3408         ],[
     3408        ',`
    34093409        __(extrwi. imm0,nargs,mask_req_width,mask_req_start)
    3410         ])
     3410        ')
    34113411        __(extrwi imm1,nargs,mask_opt_width,mask_opt_start)
    34123412        __(rlwinm imm2,nargs,0,mask_initopt,mask_initopt)
     
    342234221:
    34233423        __(cmpri(cr7,arg_reg,nil_value))
    3424         __ifdef([PPC64])
     3424        __ifdef(`PPC64')
    34253425         __(extract_fulltag(imm3,arg_reg))
    34263426         __(cmpri(cr3,imm3,fulltag_cons))
     
    34433443simple_opt_loop:
    34443444        __(cmpri(cr0,arg_reg,nil_value))
    3445         __ifdef([PPC64])
     3445        __ifdef(`PPC64')
    34463446         __(extract_fulltag(imm3,arg_reg))
    34473447         __(cmpri(cr3,imm3,fulltag_cons))
     
    34723472opt_supp_loop:
    34733473        __(cmpri(cr0,arg_reg,nil_value))
    3474         __ifdef([PPC64])
     3474        __ifdef(`PPC64')
    34753475         __(extract_fulltag(imm3,arg_reg))
    34763476         __(cmpri(cr3,imm3,fulltag_cons))
     
    35113511        __(mr arg_x,arg_reg)
    35123512count_keys_loop:
    3513         __ifdef([PPC64])
     3513        __ifdef(`PPC64')
    35143514         __(extract_fulltag(imm3,arg_x))
    35153515         __(cmpri(cr3,imm3,fulltag_cons))
     
    35243524        __(bne cr3,badlist)
    35253525        __(ldr(arg_x,cons.cdr(arg_x)))
    3526         __ifdef([PPC64])
     3526        __ifdef(`PPC64')
    35273527         __(extract_fulltag(imm3,arg_x))
    35283528         __(cmpri(cr3,imm3,fulltag_cons))
     
    37143714        __(bne- cr0,1f)
    37153715        __(getvheader(imm0,arg_z))
    3716         __ifdef([PPC64])
     3716        __ifdef(`PPC64')
    37173717         __(header_size(imm0,imm0))
    37183718         __(sldi imm0,imm0,2)
     
    37383738        __(unbox_fixnum(imm1,temp0))
    37393739local_label(misc_set_common):
    3740         __ifdef([PPC64])
     3740        __ifdef(`PPC64')
    37413741         __(slwi imm1,imm1,3)
    37423742         __(li imm0,LO(local_label(misc_set_jmp)))
     
    48114811/* two args: callback-index, args-ptr (a macptr pointing to the args on the stack)  */
    48124812_spentry(poweropen_callback)
    4813         __ifdef([rTOC])
     4813        __ifdef(`rTOC')
    48144814         __(mr r11,rTOC)
    48154815        __endif
     
    48954895        /* Recover lisp thread context. Have to call C code to do so.  */
    48964896        __(ref_global(r12,get_tcr))
    4897         __ifdef([rTOC])
     4897        __ifdef(`rTOC')
    48984898         __(ld rTOC,8(r12))
    48994899         __(ld r12,0(r12))
     
    52135213        __(unbox_fixnum(r0,arg_z))
    52145214        __(sc)
    5215         __ifdef([LINUX])
     5215        __ifdef(`LINUX')
    52165216         __(bns+ 9f)
    52175217        __else
     
    52205220        __endif
    522152211:
    5222         __ifdef([PPC64])
     5222        __ifdef(`PPC64')
    52235223         __(neg r3,r3)
    52245224        __else
     
    52675267        __(discard_lisp_frame)
    52685268        __(mtxer rzero)
    5269         __(check_pending_interrupt([cr1]))
     5269        __(check_pending_interrupt(`cr1'))
    52705270        __(blr)
    52715271       
     
    52825282        __(mtxer rzero)
    52835283        __(unbox_fixnum(imm1,arg_z))
    5284         __ifdef([PPC64])
     5284        __ifdef(`PPC64')
    52855285         __(li imm0,two_digit_bignum_header)
    52865286         __(rotldi imm1,imm1,32)
     
    53085308        __(mtxer rzero)
    53095309        __(unbox_fixnum(imm1,arg_z))
    5310         __ifdef([PPC64])
     5310        __ifdef(`PPC64')
    53115311         __(li imm0,two_digit_bignum_header)
    53125312         __(rotldi imm1,imm1,32)
     
    53315331        __(bne cr0,1f)
    53325332        __(bne cr1,1f)
    5333         __ifdef([PPC64])
     5333        __ifdef(`PPC64')
    53345334         __(mulldo. imm3,arg_z,imm2)
    53355335         __(bso 2f)
     
    54755475        __(cmpri(cr0,imm0,min_vector_subtag))
    54765476        __(beq cr1,1f)
    5477         __ifdef([PPC64])
     5477        __ifdef(`PPC64')
    54785478         __(cmpdi cr2,imm0,fulltag_cons)
    54795479        __else
     
    54945494        __(mr temp0,arg_z)      /* fast pointer  */
    54955495        __(mr temp1,arg_z)      /* slow pointer  */
    5496         __ifdef([PPC64])
     5496        __ifdef(`PPC64')
    549754974:       __(extract_fulltag(imm0,temp0))
    54985498         __(cmpdi cr7,temp0,nil_value)
     
    55345534       
    55355535_spentry(builtin_seqtype)
    5536         __ifdef([PPC64])
     5536        __ifdef(`PPC64')
    55375537         __(cmpdi cr2,arg_z,nil_value)
    55385538         __(extract_typecode(imm0,arg_z))
     
    55845584        __(blr)
    55855585
    5586         __ifdef([PPC64])
     5586        __ifdef(`PPC64')
    55875587logbitp_max_bit = 61
    55885588        __else
     
    55995599        __(unbox_fixnum(imm0,arg_y))
    56005600        __(subfic imm0,imm0,logbitp_max_bit)
    5601         __ifdef([PPC64])
     5601        __ifdef(`PPC64')
    56025602         __(rldcl imm0,arg_z,imm0,63)
    56035603         __(mulli imm0,imm0,t_offset)
     
    56395639       
    56405640_spentry(builtin_ash)
    5641         __ifdef([PPC64])
     5641        __ifdef(`PPC64')
    56425642         __(cmpdi cr1,arg_z,0)
    56435643         __(extract_lisptag(imm0,arg_y))
     
    566656662:             
    56675667         __(cntlzd. imm2,imm1)
    5668          __(bne 3f)             /* cr0[eq] set if negative  */
     5668         __(bne 3f)             /* cr0`eq' set if negative  */
    56695669         __(not imm2,imm1)
    56705670         __(cntlzd imm2,imm2)
     
    572457242:             
    57255725         __(cntlzw. imm2,imm1)
    5726          __(bne 3f)             /* cr0[eq] set if negative  */
     5726         __(bne 3f)             /* cr0`eq' set if negative  */
    57275727         __(not imm2,imm1)
    57285728         __(cntlzw imm2,imm2)
     
    57665766        __(mtxer rzero)
    57675767        __(unbox_fixnum(imm1,arg_z))
    5768         __ifdef([PPC64])
     5768        __ifdef(`PPC64')
    57695769         __(li imm0,two_digit_bignum_header)
    57705770         __(rotldi imm1,imm1,32)
     
    58155815/* We're entered with an eabi_c_frame on the C stack.  There's a */
    58165816/* lisp_frame reserved underneath it; we'll link it in in a minute. */
    5817 /* Load the outgoing GPR arguments from eabi_c_frame.param[0-7], */
     5817/* Load the outgoing GPR arguments from eabi_c_frame.param`0-7', */
    58185818/* then shrink the eabi_c_frame. */
    58195819/*  */
     
    59135913        __(lfd f0,tcr.lisp_fpscr(rcontext))
    59145914        __(mtfsf 0xff,f0)
    5915         __(check_pending_interrupt([cr1]))
     5915        __(check_pending_interrupt(`cr1'))
    59165916        __(mtxer rzero)
    59175917        __(mtctr rzero)
     
    61136113/*      We're entered with an eabi_c_frame on the C stack.  There's a */
    61146114/*      lisp_frame reserved underneath it; we'll link it in in a minute. */
    6115 /*      Load the outgoing GPR arguments from eabi_c_frame.param[0-7], */
     6115/*      Load the outgoing GPR arguments from eabi_c_frame.param`0-7', */
    61166116/*      then shrink the eabi_c_frame. */
    61176117
     
    61926192        __(neg r3,r3)
    619361931:     
    6194         __(check_pending_interrupt([cr1]))               
     6194        __(check_pending_interrupt(`cr1'))               
    61956195        __(mtxer rzero)
    61966196        __(blr)
     
    62016201
    62026202_spentry(getu64)
    6203         __ifdef([PPC64])
     6203        __ifdef(`PPC64')
    62046204        __(extract_typecode(imm0,arg_z))
    62056205        __(cmpdi cr0,imm0,tag_fixnum)
     
    62676267
    62686268_spentry(gets64)
    6269         __ifdef([PPC64])
     6269        __ifdef(`PPC64')
    62706270         __(extract_typecode(imm1,arg_z))
    62716271         __(unbox_fixnum(imm0,arg_z))
     
    63036303/*        ppc64:    imm0 (64 bits) .  */
    63046304_spentry(makeu64)
    6305         __ifdef([PPC64])
     6305        __ifdef(`PPC64')
    63066306         __(clrrdi. imm1,imm0,63-nfixnumtagbits)
    63076307         __(cmpri(cr1,imm0,0))
     
    63516351/*        ppc64:    imm0  */
    63526352_spentry(makes64)
    6353         __ifdef([PPC64])
     6353        __ifdef(`PPC64')
    63546354         __(addo imm1,imm0,imm0)
    63556355         __(addo imm1,imm1,imm1)
     
    63866386/* Make a lisp integer out of those 128 bits ..  */
    63876387_spentry(makeu128)
    6388         __ifdef([PPC64])
     6388        __ifdef(`PPC64')
    63896389         __(cmpdi imm0,0)
    63906390         __(cmpdi cr1,imm1,0)
     
    64326432/* Make a lisp integer out of those 128 bits ..  */
    64336433_spentry(makes128)
    6434         __ifdef([PPC64])
     6434        __ifdef(`PPC64')
    64356435         /* Is imm0 just a sign-extension of imm1 ?  */
    64366436         __(sradi imm2,imm1,63)
     
    65276527       
    65286528_spentry(makes32)
    6529         __ifdef([PPC64])
     6529        __ifdef(`PPC64')
    65306530         __(box_fixnum(arg_z,imm0))
    65316531        __else
     
    65456545       
    65466546_spentry(makeu32)
    6547         __ifdef([PPC64])
     6547        __ifdef(`PPC64')
    65486548         __(box_fixnum(arg_z,imm0))
    65496549         __(blr)
     
    65696569/*  */
    65706570_spentry(gets32)
    6571         __ifdef([PPC64])
     6571        __ifdef(`PPC64')
    65726572         __(sldi imm1,arg_z,32-fixnumshift)
    65736573         __(extract_lisptag_(imm0,arg_z))
     
    66306630        __(mtxer rzero)
    66316631        __(unbox_fixnum(imm1,arg_z))
    6632         __ifdef([PPC64])
     6632        __ifdef(`PPC64')
    66336633         __(li imm0,two_digit_bignum_header)
    66346634         __(rotldi imm1,imm1,32)
     
    67986798        __(bltlr cr0)
    67996799        __(mr imm2,nargs)
    6800         __(check_pending_interrupt([cr1]))
     6800        __(check_pending_interrupt(`cr1'))
    68016801        __(mr nargs,imm2)
    68026802        __(blr)
     
    69746974
    69756975        .if 1
    6976         __ifdef([DARWIN])
    6977          __ifdef([PPC64])
     6976        __ifdef(`DARWIN')
     6977         __ifdef(`PPC64')
    69786978L_lisp_objc2_personality:       
    69796979        __(ref_global(r12,objc_2_personality))
  • trunk/source/lisp-kernel/ppc-spjump.s

    r13067 r13337  
    1717        _beginfile
    1818       
    19 define([_spjump],[
     19define(`_spjump',`
    2020        .align 2
    2121        .globl _SP$1
     
    2323          __(b _SP$1)
    2424_endfn
    25 ])
     25')
    2626         .org 0x5000-0x2000
    2727        /*      .align 12 */
     
    183183          .globl C(spjump_end)
    184184C(spjump_end):
    185         __ifdef([DARWIN])
    186          __ifdef([PPC64])
     185        __ifdef(`DARWIN')
     186         __ifdef(`PPC64')
    187187           .org 0x5000-0x1000
    188188         __endif
  • trunk/source/lisp-kernel/ppc-subprims.s

    r13067 r13337  
    3434_exportfn(toplevel_loop)
    3535        __(mflr imm0)
    36         __ifdef([POWEROPENABI])
     36        __ifdef(`POWEROPENABI')
    3737         __(str(imm0,c_frame.savelr(sp)))
    3838        __else
     
    5555        __(bne cr0,local_label(loop))
    5656local_label(back_to_c):
    57         __ifdef([POWEROPENABI])
     57        __ifdef(`POWEROPENABI')
    5858         __(ldr(imm0,c_frame.savelr(sp)))
    5959        __else
     
    7373_exportfn(C(start_lisp))
    7474        __(mflr r0)
    75         __ifdef([POWEROPENABI])
     75        __ifdef(`POWEROPENABI')
    7676         __(str(r0,c_frame.savelr(sp)))
    77          __ifdef([rTOC])
     77         __ifdef(`rTOC')
    7878          __(str(rTOC,c_frame.savetoc(sp)))
    7979         __endif
     
    126126        __(lwi(r30,0x43300000))
    127127        __(lwi(r31,0x80000000))
    128         __ifdef([POWEROPENABI])
     128        __ifdef(`POWEROPENABI')
    129129         __(stw r30,c_frame.minsiz+(20*node_size)(sp))
    130130         __(stw r31,c_frame.minsiz+(20*node_size)+4(sp))
     
    178178        __(li imm0,TCR_STATE_FOREIGN)
    179179        __(str(imm0,tcr.valence(rcontext)))
    180         __ifdef([POWEROPENABI])
     180        __ifdef(`POWEROPENABI')
    181181         __(ldr(r13,c_frame.minsiz+(0*node_size)(sp)))
    182182         __(ldr(r14,c_frame.minsiz+(1*node_size)(sp)))
     
    220220        __endif
    221221        __(li r3,nil_value)
    222         __ifdef([POWEROPENABI])
     222        __ifdef(`POWEROPENABI')
    223223         __(lfd fp_zero,c_frame.minsiz+(20*node_size)(sp))
    224224         __(lfd fp_s32conv,c_frame.minsiz+(22*node_size)(sp))
     
    231231        __(mtlr r0)
    232232        __(ldr(sp,0(sp)))
    233          __ifdef([rTOC])
     233         __ifdef(`rTOC')
    234234          __(ld rTOC,c_frame.savetoc(sp))
    235235         __endif
  • trunk/source/lisp-kernel/ppc-uuo.s

    r13067 r13337  
    4747UUO_RT_SHIFT = 21
    4848
    49 define([rt_ra_uuo],[
    50         .long (UUO_TAG|(($1)<<UUU_MINOR_SHIFT)|(($3)<<UUO_RA_SHIFT)|(($2)<<UUO_RT_SHIFT))])
     49define(`rt_ra_uuo',`
     50        .long (UUO_TAG|(($1)<<UUU_MINOR_SHIFT)|(($3)<<UUO_RA_SHIFT)|(($2)<<UUO_RT_SHIFT))')
    5151
    52 define([rt_ra_rb_uuo],[
    53         .long (UUO_TAG|(($1)<<UUU_MINOR_SHIFT)|(($3)<<UUO_RA_SHIFT)|(($4)<<UUO_RB_SHIFT)|(($2)<<UUO_RT_SHIFT))])
     52define(`rt_ra_rb_uuo',`
     53        .long (UUO_TAG|(($1)<<UUU_MINOR_SHIFT)|(($3)<<UUO_RA_SHIFT)|(($4)<<UUO_RB_SHIFT)|(($2)<<UUO_RT_SHIFT))')
    5454       
    55 define([errnum_rb_uuo],[
    56         .long (UUO_TAG|(($1)<<UUU_MINOR_SHIFT)|(($2)<<UUO_RA_SHIFT)|(($3)<<UUO_RB_SHIFT))])
     55define(`errnum_rb_uuo',`
     56        .long (UUO_TAG|(($1)<<UUU_MINOR_SHIFT)|(($2)<<UUO_RA_SHIFT)|(($3)<<UUO_RB_SHIFT))')
    5757       
    58 define([errnum_ra_rb_uuo],[ /* minorop,errnum,ra,rb */
    59         .long (UUO_TAG|(($1)<<UUU_MINOR_SHIFT)|(($2)<<UUO_RA_SHIFT)|(($3)<<UUO_RB_SHIFT)|((\errnum)<<UUO_RT_SHIFT))])
     58define(`errnum_ra_rb_uuo',` /* minorop,errnum,ra,rb */
     59        .long (UUO_TAG|(($1)<<UUU_MINOR_SHIFT)|(($2)<<UUO_RA_SHIFT)|(($3)<<UUO_RB_SHIFT)|((\errnum)<<UUO_RT_SHIFT))')
    6060       
    6161       
     
    6464/* number (0-1023) and "register" argument.  */
    6565
    66 define([uuo_interr],[
    67         errnum_rb_uuo(11,$1,$2)])
     66define(`uuo_interr',`
     67        errnum_rb_uuo(11,$1,$2)')
    6868       
    6969/* As above, but make the error continuable.  (A branch presumably  */
    7070/* follows the UUO opcode.)  */
    7171
    72 define([uuo_intcerr],[
    73         errnum_rb_uuo(12,$1,$2)])
     72define(`uuo_intcerr',`
     73        errnum_rb_uuo(12,$1,$2)')
    7474
    7575
     
    7777/* two "register" fields.  */
    7878
    79 define([uuo_interr2],[
    80         errnum_ra_rb_uuo(13,$1,$2,$3)])
     79define(`uuo_interr2',`
     80        errnum_ra_rb_uuo(13,$1,$2,$3)')
    8181       
    8282/* Continuably ....  */
    8383
    84 define([uuo_intcerr2],[
    85         errnum_ra_rb_uuo(14,$1,$2,$3)])
     84define(`uuo_intcerr2',`
     85        errnum_ra_rb_uuo(14,$1,$2,$3)')
    8686
    8787       
    8888
    8989/* A distinguished UUO: the handler should zero the FPSCR  */
    90 define([uuo_zero_fpscr],[
    91         rt_ra_rb_uuo(25,0,0,0)])
     90define(`uuo_zero_fpscr',`
     91        rt_ra_rb_uuo(25,0,0,0)')
  • trunk/source/lisp-kernel/x86-asmutils32.s

    r13067 r13337  
    110110
    111111
    112         __ifdef([DARWIN])
     112        __ifdef(`DARWIN')
    113113_exportfn(C(pseudo_sigreturn))
    114114        __(hlt)
     
    158158        __(mov %edi,%esp)
    159159        __(pop %edi)            /* Return address pushed by caller */
    160         __ifndef([LINUX])
     160        __ifndef(`LINUX')
    161161        __(push $0)             /* For alignment. See comment above */
    162162        __endif
     
    168168_endfn
    169169
    170         __ifdef([FREEBSD])
     170        __ifdef(`FREEBSD')
    171171        .globl C(sigreturn)
    172172_exportfn(C(freebsd_sigreturn))
     
    175175        __endif
    176176
    177         __ifdef([DARWIN])
     177        __ifdef(`DARWIN')
    178178_exportfn(C(darwin_sigreturn))
    179179/* Need to set the sigreturn 'infostyle' argument, which is mostly
     
    197197_endfn                         
    198198
    199         __ifdef([WIN_32])
     199        __ifdef(`WIN_32')
    200200_exportfn(C(restore_windows_context))
    201201Xrestore_windows_context_start:
     
    260260        .text
    261261       
    262         __ifdef([WIN32_ES_HACK])
     262        __ifdef(`WIN32_ES_HACK')
    263263/* Something that we shouldn't return to */
    264264_exportfn(C(windows_halt))
     
    267267        __endif
    268268_exportfn(C(ensure_safe_for_string_operations))
    269         __ifdef([WIN32_ES_HACK])
     269        __ifdef(`WIN32_ES_HACK')
    270270        __(movw %es,%ax)
    271271        __(movw %ds,%dx)
     
    276276        __(cld)       
    277277        __(ret)
    278         __ifdef([WIN32_ES_HACK])
     278        __ifdef(`WIN32_ES_HACK')
    2792799:      __(hlt)
    280280        __(jmp 0b)
  • trunk/source/lisp-kernel/x86-asmutils64.s

    r13067 r13337  
    125125
    126126
    127         __ifdef([DARWIN])
     127        __ifdef(`DARWIN')
    128128_exportfn(C(pseudo_sigreturn))
    129129        __(hlt)
     
    152152/* switch_to_foreign_stack(new_sp, func, arg_0, arg_1, arg_2, arg_3)  */
    153153/*   Not fully general, but should get us off of the signal stack */
    154         __ifndef([WINDOWS])
     154        __ifndef(`WINDOWS')
    155155_exportfn(C(switch_to_foreign_stack))
    156156        __(movq %rdi,%rsp)
     
    174174_endfn                         
    175175       
    176         __ifdef([DARWIN])
     176        __ifdef(`DARWIN')
    177177_exportfn(C(darwin_sigreturn))
    178178        .globl C(sigreturn)
     
    190190       
    191191       
    192         __ifdef([DARWIN_GS_HACK])
     192        __ifdef(`DARWIN_GS_HACK')
    193193/* Check (in an ugly, non-portable way) to see if %gs is addressing
    194194   pthreads data.  If it was, return 0; otherwise, assume that it's
     
    218218        __endif
    219219
    220         __ifdef([WIN_64])
     220        __ifdef(`WIN_64')
    221221/* %rcx = CONTEXT, %rdx = tcr, %r8 = old_valence.  This pretty
    222222   much has to be uninterruptible */       
  • trunk/source/lisp-kernel/x86-constants.s

    r13330 r13337  
    4343       
    4444
    45 ifdef([X8664],[
     45ifdef(`X8664',`
    4646        include(x86-constants64.s)
    47 ],[
     47',`
    4848        include(x86-constants32.s)
    49 ])                                             
     49')                                             
    5050
    5151/* registers, as used in destructuring-bind/macro-bind   */
    52 ifdef([X8664],[
    53 define([whole_reg],[temp1])
    54 define([arg_reg],[temp0])
    55 define([keyvect_reg],[arg_x])
    56 ],[
    57 define([arg_reg],[temp1])
    58 define([arg_reg_b],[temp1_b])
    59 define([keyvect_reg],[arg_y])
    60 ])
     52ifdef(`X8664',`
     53define(`whole_reg',`temp1')
     54define(`arg_reg',`temp0')
     55define(`keyvect_reg',`arg_x')
     56',`
     57define(`arg_reg',`temp1')
     58define(`arg_reg_b',`temp1_b')
     59define(`keyvect_reg',`arg_y')
     60')
    6161
    62 define([initopt_bit],[24])
    63 define([keyp_bit],[25]) /*  note that keyp can be true even when 0 keys.   */
    64 define([aok_bit],[26])
    65 define([restp_bit],[27])
    66 define([seen_aok_bit],[28])       
     62define(`initopt_bit',`24')
     63define(`keyp_bit',`25') /*  note that keyp can be true even when 0 keys.   */
     64define(`aok_bit',`26')
     65define(`restp_bit',`27')
     66define(`seen_aok_bit',`28')       
    6767       
    6868num_lisp_globals = 49            /* MUST UPDATE THIS !!!   */
     
    7676         _node(batch_flag)              /* -b */
    7777         _node(host_platform)           /* for runtime platform-specific stuff   */
    78          _node(argv)                    /* address of argv[0]   */
     78         _node(argv)                    /* address of argv`0'   */
    7979         _node(ref_base)                /* start of oldest pointer-bearing area */
    8080         _node(tenured_area)            /* the tenured_area   */
     
    111111         _node(ret1val_addr)            /* address of "dynamic" subprims magic values return addr   */
    112112         _node(subprims_base)           /* address of dynamic subprims jump table   */
    113          _node(saveR13)                 /* probably don]t really need this   */
     113         _node(saveR13)                 /* probably don't really need this   */
    114114         _node(saveTOC)                 /* where the 68K emulator stores the  emulated regs   */
    115115         _node(objc_2_personality)              /* exception "personality routine" address for ObjC 2.0 */
     
    122122       
    123123               
    124 define([TCR_STATE_FOREIGN],1)
    125 define([TCR_STATE_LISP],0)
    126 define([TCR_STATE_EXCEPTION_WAIT],2)
    127 define([TCR_STATE_EXCEPTION_RETURN],4)
     124define(`TCR_STATE_FOREIGN',1)
     125define(`TCR_STATE_LISP',0)
     126define(`TCR_STATE_EXCEPTION_WAIT',2)
     127define(`TCR_STATE_EXCEPTION_RETURN',4)
    128128
    129129tstack_alloc_limit = 0xffff
  • trunk/source/lisp-kernel/x86-constants32.s

    r11094 r13337  
    1 define([eax_l],[eax])
    2 define([ecx_l],[ecx])
    3 define([edx_l],[edx])
    4 define([ebx_l],[ebx])
    5 define([esi_l],[esi])
    6 define([edi_l],[edi])
    7 
    8 define([eax_b],[al])
    9 define([ecx_b],[cl])
    10 define([edx_b],[dl])
    11 define([ebx_b],[bl])
    12 
    13 define([imm0],[eax])
    14         define([imm0_l],[eax])
    15         define([imm0_w],[ax])
    16         define([imm0_b],[al])
    17         define([imm0_bh],[ah])
    18         define([Rimm0],[0])
    19 
    20 define([temp0],[ecx])
    21         define([temp0_l],[ecx])
    22         define([temp0_w],[cx])
    23         define([temp0_b],[cl])
    24         define([temp0_bh],[ch])
    25         define([Rtemp0],[1])
    26 
    27 define([temp1],[edx])
    28         define([temp1_l],[edx])
    29         define([temp1_w],[dx])
    30         define([temp1_b],[dl])
    31         define([temp1_bh],[dh])
    32         define([Rtemp1],[2])
    33 
    34 define([arg_z],[ebx])
    35         define([arg_z_l],[ebx])
    36         define([arg_z_w],[bx])
    37         define([arg_z_b],[bl])
    38         define([arg_z_bh],[bh])
    39         define([Rarg_z],[3])
    40 
    41 define([arg_y],[esi])
    42         define([Rarg_y],[6])
    43 
    44 define([fn],[edi])
    45         define([Rfn],[7])
    46 
    47 define([rcontext_reg],[fs])
     1define(`eax_l',`eax')
     2define(`ecx_l',`ecx')
     3define(`edx_l',`edx')
     4define(`ebx_l',`ebx')
     5define(`esi_l',`esi')
     6define(`edi_l',`edi')
     7
     8define(`eax_b',`al')
     9define(`ecx_b',`cl')
     10define(`edx_b',`dl')
     11define(`ebx_b',`bl')
     12
     13define(`imm0',`eax')
     14        define(`imm0_l',`eax')
     15        define(`imm0_w',`ax')
     16        define(`imm0_b',`al')
     17        define(`imm0_bh',`ah')
     18        define(`Rimm0',`0')
     19
     20define(`temp0',`ecx')
     21        define(`temp0_l',`ecx')
     22        define(`temp0_w',`cx')
     23        define(`temp0_b',`cl')
     24        define(`temp0_bh',`ch')
     25        define(`Rtemp0',`1')
     26
     27define(`temp1',`edx')
     28        define(`temp1_l',`edx')
     29        define(`temp1_w',`dx')
     30        define(`temp1_b',`dl')
     31        define(`temp1_bh',`dh')
     32        define(`Rtemp1',`2')
     33
     34define(`arg_z',`ebx')
     35        define(`arg_z_l',`ebx')
     36        define(`arg_z_w',`bx')
     37        define(`arg_z_b',`bl')
     38        define(`arg_z_bh',`bh')
     39        define(`Rarg_z',`3')
     40
     41define(`arg_y',`esi')
     42        define(`Rarg_y',`6')
     43
     44define(`fn',`edi')
     45        define(`Rfn',`7')
     46
     47define(`rcontext_reg',`fs')
    4848       
    49         ifdef([WINDOWS],[
    50 undefine([rcontext_reg])       
    51 define([rcontext_reg],[es])
    52         ])
     49        ifdef(`WINDOWS',`
     50undefine(`rcontext_reg')       
     51define(`rcontext_reg',`es')
     52        ')
    5353               
    54 define([rcontext],[%rcontext_reg:$1])
    55 
    56 define([fname],[temp0])
    57 define([allocptr],[temp0])
    58 
    59 define([nargs],[temp1])
    60 define([nargs_w],[temp1_w])
    61 
    62 define([ra0],[temp0])
    63 define([xfn],[temp1])
    64 
    65 define([allocptr],[temp0])
    66 define([stack_temp],[mm7])
    67 
    68 define([fp0],[xmm0])           
    69 define([fp1],[xmm1])           
    70 define([fp2],[xmm2])           
    71 define([fp3],[xmm3])           
    72 define([fp4],[xmm4])           
    73 define([fp5],[xmm5])           
    74 define([fp6],[xmm6])           
    75 define([fp7],[xmm7])           
    76 define([fpzero],[fp7])
     54define(`rcontext',`%rcontext_reg:$1')
     55
     56define(`fname',`temp0')
     57define(`allocptr',`temp0')
     58
     59define(`nargs',`temp1')
     60define(`nargs_w',`temp1_w')
     61
     62define(`ra0',`temp0')
     63define(`xfn',`temp1')
     64
     65define(`allocptr',`temp0')
     66define(`stack_temp',`mm7')
     67
     68define(`fp0',`xmm0')           
     69define(`fp1',`xmm1')           
     70define(`fp2',`xmm2')           
     71define(`fp3',`xmm3')           
     72define(`fp4',`xmm4')           
     73define(`fp5',`xmm5')           
     74define(`fp6',`xmm6')           
     75define(`fp7',`xmm7')           
     76define(`fpzero',`fp7')
    7777
    7878nbits_in_word = 32
     
    117117fulltag_immheader = 7
    118118
    119 define([define_subtag],[subtag_$1 = ($2 | ($3 << ntagbits))])
    120 define([define_imm_subtag],[define_subtag($1,fulltag_immheader,$2)])
    121 define([define_node_subtag],[define_subtag($1,fulltag_nodeheader,$2)])
     119define(`define_subtag',`subtag_$1 = ($2 | ($3 << ntagbits))')
     120define(`define_imm_subtag',`define_subtag($1,fulltag_immheader,$2)')
     121define(`define_node_subtag',`define_subtag($1,fulltag_nodeheader,$2)')
    122122
    123123define_imm_subtag(bignum,0)
     
    444444        _ends
    445445
    446 define([def_header],[$1 = ($2<<num_subtag_bits)|$3])
     446define(`def_header',`$1 = ($2<<num_subtag_bits)|$3')
    447447
    448448def_header(single_float_header,single_float.element_count,subtag_single_float)
     
    620620
    621621
    622 ifdef([DARWIN],[
     622ifdef(`DARWIN',`
    623623c_stack_16_byte_aligned = 1
    624 ],[
     624',`
    625625c_stack_16_byte_aligned = 0
    626 ])               
     626')               
  • trunk/source/lisp-kernel/x86-constants64.s

    r13067 r13337  
    3636         * Callee must preserve RBP, RBX, R12..R15, MXCSR control bits
    3737         * On function entry, x87 mode and DF clear is assumed
    38          * [RSP]..[RSP-128] must not be touched by signal handlers
     38         * `RSP'..`RSP-128' must not be touched by signal handlers
    3939
    4040        Win64 ABI:
     
    9393/*  used in lispy symbolic names - allows us to play Stupid M4 Tricks in macros  */
    9494                       
    95 define([rax_l],[eax])
    96 define([rax_w],[ax])
    97 define([rax_b],[al])
    98 define([rbx_l],[ebx])
    99 define([rbx_w],[bx])
    100 define([rbx_b],[bl])
    101 define([rcx_l],[ecx])
    102 define([rcx_w],[cx])
    103 define([rdx_l],[edx])
    104 define([rdx_w],[dx])                                   
    105 define([rdx_b],[dl])                                                   
    106 define([rsi_l],[esi])
    107 define([rsi_w],[si])                           
    108 define([rsi_b],[sil])
    109 define([rdi_l],[edo])
    110 define([rdi_w],[di])                           
    111 define([rdi_b],[dil])
    112 define([r8_l],[r8d])
    113 define([r8_w],[r8w])                                   
    114 define([r8_b],[r8b])                                                   
    115 define([r9_l],[r9d])
    116 define([r9_w],[r9w])                                   
    117 define([r9_b],[r9b])                                                   
    118 define([r10_l],[r10d])
    119 define([r10_w],[r10w])                                 
    120 define([r10_b],[r10b])                                                 
    121 define([r10_l],[r11d])
    122 define([r11_w],[r11w])                                 
    123 define([r11_b],[r11b])                                                 
    124 define([r12_l],[r12d])
    125 define([r12_w],[r12w])                                 
    126 define([r12_b],[r12b])                                                 
    127 define([r13_l],[r13d])
    128 define([r13_w],[r13w])                                 
    129 define([r13_b],[r13b])                                                 
    130 define([r14_l],[r14d])
    131 define([r14_w],[r14w])                                 
    132 define([r14_b],[r14b])                                                 
    133 define([r15_l],[r15d])
    134 define([r15_w],[r15w])                                 
    135 define([r15_b],[r15b])                                                 
     95define(`rax_l',`eax')
     96define(`rax_w',`ax')
     97define(`rax_b',`al')
     98define(`rbx_l',`ebx')
     99define(`rbx_w',`bx')
     100define(`rbx_b',`bl')
     101define(`rcx_l',`ecx')
     102define(`rcx_w',`cx')
     103define(`rdx_l',`edx')
     104define(`rdx_w',`dx')                                   
     105define(`rdx_b',`dl')                                                   
     106define(`rsi_l',`esi')
     107define(`rsi_w',`si')                           
     108define(`rsi_b',`sil')
     109define(`rdi_l',`edo')
     110define(`rdi_w',`di')                           
     111define(`rdi_b',`dil')
     112define(`r8_l',`r8d')
     113define(`r8_w',`r8w')                                   
     114define(`r8_b',`r8b')                                                   
     115define(`r9_l',`r9d')
     116define(`r9_w',`r9w')                                   
     117define(`r9_b',`r9b')                                                   
     118define(`r10_l',`r10d')
     119define(`r10_w',`r10w')                                 
     120define(`r10_b',`r10b')                                                 
     121define(`r10_l',`r11d')
     122define(`r11_w',`r11w')                                 
     123define(`r11_b',`r11b')                                                 
     124define(`r12_l',`r12d')
     125define(`r12_w',`r12w')                                 
     126define(`r12_b',`r12b')                                                 
     127define(`r13_l',`r13d')
     128define(`r13_w',`r13w')                                 
     129define(`r13_b',`r13b')                                                 
     130define(`r14_l',`r14d')
     131define(`r14_w',`r14w')                                 
     132define(`r14_b',`r14b')                                                 
     133define(`r15_l',`r15d')
     134define(`r15_w',`r15w')                                 
     135define(`r15_b',`r15b')                                                 
    136136
    137137/* Registers when using Lisp calling conventions */
    138138       
    139 define([imm0],[rax])
    140         define([imm0_l],[eax])
    141         define([imm0_w],[ax])
    142         define([imm0_b],[al])
    143         define([Rimm0],[0])
    144        
    145 define([temp0],[rbx])
    146         define([temp0_l],[ebx])
    147         define([temp0_w],[bx])
    148         define([temp0_b],[bl])
    149         define([Rtemp0],[3])
    150 
    151 define([imm2],[rcx])
    152         define([imm2_l],[ecx])
    153         define([imm2_w],[cx])
    154         define([imm2_b],[cl])
    155         define([Rimm2],[1])
    156        
    157 define([imm1],[rdx])
    158         define([imm1_l],[edx])
    159         define([imm1_w],[dx])
    160         define([imm1_b],[dl])
    161         define([Rimm1],[2])
    162        
    163 define([arg_z],[rsi])
    164         define([arg_z_l],[esi])
    165         define([arg_z_w],[si])
    166         define([arg_z_b],[sil])
    167         define([Rarg_z],[6])
    168 
    169 define([arg_y],[rdi])
    170         define([arg_y_l],[edi])
    171         define([arg_y_w],[di])
    172         define([arg_y_b],[dil])
    173         define([Rarg_y],[7])
    174 
    175 define([arg_x],[r8])
    176         define([arg_x_l],[r8d])
    177         define([arg_x_w],[r8w])
    178         define([arg_x_b],[r8b])
    179         define([Rarg_x],[8])
    180 
    181 define([temp1],[r9])
    182         define([temp1_l],[r9d])
    183         define([temp1_w],[r9w])
    184         define([temp1_b],[r9b])
    185         define([Rtemp1],[9])
    186 
    187 define([temp2],[r10])
    188         define([temp2_l],[r10d])
    189         define([temp2_w],[r10w])
    190         define([temp2_x_b],[r10b])
    191         define([Rtemp2],[10])
    192        
    193 define([save3],[r11])           
    194         define([save3_l],[r11d])
    195         define([save3_w],[r11w])
    196         define([save3_b],[r11b])
    197         define([Rsave3],[11])
    198        
    199 define([save2],[r12])
    200         define([save2_l],[r12d])
    201         define([save2_w],[r12w])
    202         define([save2_b],[r12b])
    203         define([Rsave2],[12])
    204        
    205 define([fn],[r13])              /* some addressing restrictions   */
    206         define([fn_l],[r13d])
    207         define([fn_w],[r13w])
    208         define([fn_b],[r13b])
    209         define([Rfn],[13])
    210        
    211 define([save1],[r14])
    212         define([save1_l],[r14d])
    213         define([save1_w],[r14w])
    214         define([save1_b],[r14b])
    215         define([Rsave1],[14])
     139define(`imm0',`rax')
     140        define(`imm0_l',`eax')
     141        define(`imm0_w',`ax')
     142        define(`imm0_b',`al')
     143        define(`Rimm0',`0')
     144       
     145define(`temp0',`rbx')
     146        define(`temp0_l',`ebx')
     147        define(`temp0_w',`bx')
     148        define(`temp0_b',`bl')
     149        define(`Rtemp0',`3')
     150
     151define(`imm2',`rcx')
     152        define(`imm2_l',`ecx')
     153        define(`imm2_w',`cx')
     154        define(`imm2_b',`cl')
     155        define(`Rimm2',`1')
     156       
     157define(`imm1',`rdx')
     158        define(`imm1_l',`edx')
     159        define(`imm1_w',`dx')
     160        define(`imm1_b',`dl')
     161        define(`Rimm1',`2')
     162       
     163define(`arg_z',`rsi')
     164        define(`arg_z_l',`esi')
     165        define(`arg_z_w',`si')
     166        define(`arg_z_b',`sil')
     167        define(`Rarg_z',`6')
     168
     169define(`arg_y',`rdi')
     170        define(`arg_y_l',`edi')
     171        define(`arg_y_w',`di')
     172        define(`arg_y_b',`dil')
     173        define(`Rarg_y',`7')
     174
     175define(`arg_x',`r8')
     176        define(`arg_x_l',`r8d')
     177        define(`arg_x_w',`r8w')
     178        define(`arg_x_b',`r8b')
     179        define(`Rarg_x',`8')
     180
     181define(`temp1',`r9')
     182        define(`temp1_l',`r9d')
     183        define(`temp1_w',`r9w')
     184        define(`temp1_b',`r9b')
     185        define(`Rtemp1',`9')
     186
     187define(`temp2',`r10')
     188        define(`temp2_l',`r10d')
     189        define(`temp2_w',`r10w')
     190        define(`temp2_x_b',`r10b')
     191        define(`Rtemp2',`10')
     192       
     193define(`save3',`r11')           
     194        define(`save3_l',`r11d')
     195        define(`save3_w',`r11w')
     196        define(`save3_b',`r11b')
     197        define(`Rsave3',`11')
     198       
     199define(`save2',`r12')
     200        define(`save2_l',`r12d')
     201        define(`save2_w',`r12w')
     202        define(`save2_b',`r12b')
     203        define(`Rsave2',`12')
     204       
     205define(`fn',`r13')              /* some addressing restrictions   */
     206        define(`fn_l',`r13d')
     207        define(`fn_w',`r13w')
     208        define(`fn_b',`r13b')
     209        define(`Rfn',`13')
     210       
     211define(`save1',`r14')
     212        define(`save1_l',`r14d')
     213        define(`save1_w',`r14w')
     214        define(`save1_b',`r14b')
     215        define(`Rsave1',`14')
    216216               
    217 define([save0],[r15])
    218         define([save0_l],[r15d])
    219         define([save0_w],[r15w])
    220         define([save0_b],[r15b])
    221         define([Rsave0],[15])   
    222 
    223 
    224 ifdef([TCR_IN_GPR],[
     217define(`save0',`r15')
     218        define(`save0_l',`r15d')
     219        define(`save0_w',`r15w')
     220        define(`save0_b',`r15b')
     221        define(`Rsave0',`15')   
     222
     223
     224ifdef(`TCR_IN_GPR',`
    225225/* We keep the TCR pointer in r11 */
    226         define([rcontext_reg], r11)
    227         define([rcontext],[$1(%rcontext_reg)])
    228 ],[
     226        define(`rcontext_reg', r11)
     227        define(`rcontext',`$1(%rcontext_reg)')
     228',`
    229229/* The TCR can be accessed relative to %gs   */
    230         define([rcontext_reg],[gs])
    231         define([rcontext],[%rcontext_reg:$1])
    232 ])
    233 define([fname],[temp0])
    234 define([next_method_context],[temp0])
    235 define([nargs_b],[imm2_b])     
    236 define([nargs_w],[imm2_w])
    237 define([nargs_q],[imm2])
    238 define([nargs],[imm2_l])
    239 define([ra0],[temp2])       
     230        define(`rcontext_reg',`gs')
     231        define(`rcontext',`%rcontext_reg:$1')
     232')
     233define(`fname',`temp0')
     234define(`next_method_context',`temp0')
     235define(`nargs_b',`imm2_b')     
     236define(`nargs_w',`imm2_w')
     237define(`nargs_q',`imm2')
     238define(`nargs',`imm2_l')
     239define(`ra0',`temp2')       
    240240                                               
    241 define([xfn],[temp1])
    242 
    243 define([allocptr],[temp0])             
    244 define([stack_temp],[mm7])
     241define(`xfn',`temp1')
     242
     243define(`allocptr',`temp0')             
     244define(`stack_temp',`mm7')
    245245
    246246               
    247 define([fp0],[xmm0])           
    248 define([fp1],[xmm1])           
    249 define([fp2],[xmm2])           
    250 define([fp3],[xmm3])           
    251 define([fp4],[xmm4])           
    252 define([fp5],[xmm5])           
    253 define([fp6],[xmm6])           
    254 define([fp7],[xmm7])           
    255 define([fp8],[xmm8])           
    256 define([fp9],[xmm9])           
    257 define([fp10],[xmm10])         
    258 define([fp11],[xmm11])         
    259 define([fp12],[xmm12])         
    260 define([fp13],[xmm13])         
    261 define([fp14],[xmm14])         
    262 define([fp15],[xmm15])         
    263 define([fpzero],[fp15])
     247define(`fp0',`xmm0')           
     248define(`fp1',`xmm1')           
     249define(`fp2',`xmm2')           
     250define(`fp3',`xmm3')           
     251define(`fp4',`xmm4')           
     252define(`fp5',`xmm5')           
     253define(`fp6',`xmm6')           
     254define(`fp7',`xmm7')           
     255define(`fp8',`xmm8')           
     256define(`fp9',`xmm9')           
     257define(`fp10',`xmm10')         
     258define(`fp11',`xmm11')         
     259define(`fp12',`xmm12')         
     260define(`fp13',`xmm13')         
     261define(`fp14',`xmm14')         
     262define(`fp15',`xmm15')         
     263define(`fpzero',`fp15')
    264264
    265265/* Registers when running with native C calling conventions */
    266266
    267 define([cret],[rax])
    268         define([cret_l],[eax])
    269         define([cret_w],[ax])
    270         define([cret_b],[al])
    271         define([Rcret],[0])
    272        
    273 define([ctemp0],[r10])
    274         define([ctemp0_l],[r10d])
    275         define([ctemp0_w],[r10w])
    276         define([ctemp0_b],[r10b])
    277         define([Rctemp0],[10])
    278        
    279 define([ctemp1],[r11])         
    280         define([ctemp1_l],[r11d])
    281         define([ctemp1_w],[r11w])
    282         define([ctemp1_b],[r11b])
    283         define([Rctemp1],[11])
    284        
    285 define([csave0],[rbx])
    286         define([csave0_l],[ebx])
    287         define([csave0_w],[bx])
    288         define([csave0_b],[bl])
    289         define([Rcsave0],[3])
    290 
    291 define([csave1],[r12])
    292         define([csave1_l],[r12d])
    293         define([csave1_w],[r12w])
    294         define([csave1_b],[r12b])
    295         define([Rcsave1],[12])
    296        
    297 define([csave2],[r13])
    298         define([csave2_l],[r13d])
    299         define([csave2_w],[r13w])
    300         define([csave2_b],[r13b])
    301         define([Rcsave2],[13])
    302        
    303 define([csave3],[r14])
    304         define([csave3_l],[r14d])
    305         define([csave3_w],[r14w])
    306         define([csave3_b],[r14b])
    307         define([Rcsave3],[14])
     267define(`cret',`rax')
     268        define(`cret_l',`eax')
     269        define(`cret_w',`ax')
     270        define(`cret_b',`al')
     271        define(`Rcret',`0')
     272       
     273define(`ctemp0',`r10')
     274        define(`ctemp0_l',`r10d')
     275        define(`ctemp0_w',`r10w')
     276        define(`ctemp0_b',`r10b')
     277        define(`Rctemp0',`10')
     278       
     279define(`ctemp1',`r11')         
     280        define(`ctemp1_l',`r11d')
     281        define(`ctemp1_w',`r11w')
     282        define(`ctemp1_b',`r11b')
     283        define(`Rctemp1',`11')
     284       
     285define(`csave0',`rbx')
     286        define(`csave0_l',`ebx')
     287        define(`csave0_w',`bx')
     288        define(`csave0_b',`bl')
     289        define(`Rcsave0',`3')
     290
     291define(`csave1',`r12')
     292        define(`csave1_l',`r12d')
     293        define(`csave1_w',`r12w')
     294        define(`csave1_b',`r12b')
     295        define(`Rcsave1',`12')
     296       
     297define(`csave2',`r13')
     298        define(`csave2_l',`r13d')
     299        define(`csave2_w',`r13w')
     300        define(`csave2_b',`r13b')
     301        define(`Rcsave2',`13')
     302       
     303define(`csave3',`r14')
     304        define(`csave3_l',`r14d')
     305        define(`csave3_w',`r14w')
     306        define(`csave3_b',`r14b')
     307        define(`Rcsave3',`14')
    308308               
    309 define([csave4],[r15])
    310         define([csave4_l],[r15d])
    311         define([csave4_w],[r15w])
    312         define([csave4_b],[r15b])
    313         define([Rcsave4],[15]
    314 
    315 ifdef([WINDOWS],[
    316 
    317 define([carg0],[rcx])
    318         define([carg0_l],[ecx])
    319         define([carg0_w],[cx])
    320         define([carg0_b],[cl])
    321         define([Rcarg0],[1])
    322        
    323 define([carg1],[rdx])
    324         define([carg1_l],[edx])
    325         define([carg1_w],[dx])
    326         define([carg1_b],[dl])
    327         define([Rcarg1],[2])
    328        
    329 define([carg2],[r8])
    330         define([carg2_l],[r8d])
    331         define([carg2_w],[r8w])
    332         define([carg2_b],[r8b])
    333         define([Rcarg2],[8])
    334 
    335 define([carg3],[r9])
    336         define([carg3_l],[r9d])
    337         define([carg3_w],[r9w])
    338         define([carg3_b],[r9b])
    339         define([Rcarg3],[9])
    340 
    341 define([csave5],[rsi])
    342         define([csave5_l],[esi])
    343         define([csave5_w],[si])
    344         define([csave5_b],[sil])
    345         define([csave5_z],[6])
    346 
    347 define([csave6],[rdi])
    348         define([csave6_l],[edi])
    349         define([csave6_w],[di])
    350         define([csave6_b],[dil])
    351         define([Rcsave6],[7])
    352 
    353 ],[
    354        
    355 define([carg0],[rdi])
    356         define([carg0_l],[edi])
    357         define([carg0_w],[di])
    358         define([carg0_b],[dil])
    359         define([Rcarg0],[7])
    360 
    361 define([carg1],[rsi])
    362         define([carg1_l],[esi])
    363         define([carg1_w],[si])
    364         define([carg1_b],[sil])
    365         define([carg1_z],[6])
    366 
    367 define([carg2],[rdx])
    368         define([carg2_l],[edx])
    369         define([carg2_w],[dx])
    370         define([carg2_b],[dl])
    371         define([Rcarg2],[2])
    372        
    373 define([carg3],[rcx])
    374         define([carg3_l],[ecx])
    375         define([carg3_w],[cx])
    376         define([carg3_b],[cl])
    377         define([Rcarg3],[1])
    378        
    379 define([carg4],[r8])
    380         define([carg4_l],[r8d])
    381         define([carg4_w],[r8w])
    382         define([carg4_b],[r8b])
    383         define([Rcarg4],[8])
    384 
    385 define([carg5],[r9])
    386         define([carg5_l],[r9d])
    387         define([carg5_w],[r9w])
    388         define([carg5_b],[r9b])
    389         define([Rcarg5],[9])   
    390 ])
     309define(`csave4',`r15')
     310        define(`csave4_l',`r15d')
     311        define(`csave4_w',`r15w')
     312        define(`csave4_b',`r15b')
     313        define(`Rcsave4',`15'
     314
     315ifdef(`WINDOWS',`
     316
     317define(`carg0',`rcx')
     318        define(`carg0_l',`ecx')
     319        define(`carg0_w',`cx')
     320        define(`carg0_b',`cl')
     321        define(`Rcarg0',`1')
     322       
     323define(`carg1',`rdx')
     324        define(`carg1_l',`edx')
     325        define(`carg1_w',`dx')
     326        define(`carg1_b',`dl')
     327        define(`Rcarg1',`2')
     328       
     329define(`carg2',`r8')
     330        define(`carg2_l',`r8d')
     331        define(`carg2_w',`r8w')
     332        define(`carg2_b',`r8b')
     333        define(`Rcarg2',`8')
     334
     335define(`carg3',`r9')
     336        define(`carg3_l',`r9d')
     337        define(`carg3_w',`r9w')
     338        define(`carg3_b',`r9b')
     339        define(`Rcarg3',`9')
     340
     341define(`csave5',`rsi')
     342        define(`csave5_l',`esi')
     343        define(`csave5_w',`si')
     344        define(`csave5_b',`sil')
     345        define(`csave5_z',`6')
     346
     347define(`csave6',`rdi')
     348        define(`csave6_l',`edi')
     349        define(`csave6_w',`di')
     350        define(`csave6_b',`dil')
     351        define(`Rcsave6',`7')
     352
     353',`
     354       
     355define(`carg0',`rdi')
     356        define(`carg0_l',`edi')
     357        define(`carg0_w',`di')
     358        define(`carg0_b',`dil')
     359        define(`Rcarg0',`7')
     360
     361define(`carg1',`rsi')
     362        define(`carg1_l',`esi')
     363        define(`carg1_w',`si')
     364        define(`carg1_b',`sil')
     365        define(`carg1_z',`6')
     366
     367define(`carg2',`rdx')
     368        define(`carg2_l',`edx')
     369        define(`carg2_w',`dx')
     370        define(`carg2_b',`dl')
     371        define(`Rcarg2',`2')
     372       
     373define(`carg3',`rcx')
     374        define(`carg3_l',`ecx')
     375        define(`carg3_w',`cx')
     376        define(`carg3_b',`cl')
     377        define(`Rcarg3',`1')
     378       
     379define(`carg4',`r8')
     380        define(`carg4_l',`r8d')
     381        define(`carg4_w',`r8w')
     382        define(`carg4_b',`r8b')
     383        define(`Rcarg4',`8')
     384
     385define(`carg5',`r9')
     386        define(`carg5_l',`r9d')
     387        define(`carg5_w',`r9w')
     388        define(`carg5_b',`r9b')
     389        define(`Rcarg5',`9')   
     390')
    391391       
    392392nbits_in_word = 64
     
    448448fulltag_function = 15
    449449
    450 define([define_subtag],[
     450define(`define_subtag',`
    451451subtag_$1 = ($2 | ($3 << ntagbits))
    452 ])
     452')
    453453       
    454454
     
    520520misc_bias = fulltag_misc
    521521cons_bias = fulltag_cons
    522 define([t_offset],(t_value-nil_value))
     522define(`t_offset',(t_value-nil_value))
    523523       
    524524misc_header_offset = -fulltag_misc
     
    553553/* The objects themselves look something like this:   */
    554554       
    555 /* Order of CAR and CDR doesn]t seem to matter much - there aren't   */
     555/* Order of CAR and CDR doesn't seem to matter much - there aren't   */
    556556/* too many tricks to be played with predecrement/preincrement addressing.   */
    557557/* Keep them in the confusing MCL 3.0 order, to avoid confusion.   */
     
    856856        _ends
    857857
    858 define([def_header],[
    859 $1 = ($2<<num_subtag_bits)|$3])
     858define(`def_header',`
     859$1 = ($2<<num_subtag_bits)|$3')
    860860
    861861        def_header(double_float_header,2,subtag_double_float)
  • trunk/source/lisp-kernel/x86-macros.s

    r13067 r13337  
    1717/* destination.  */
    1818
    19 define([lisp_global],[lisp_globals.$1])
     19define(`lisp_global',`lisp_globals.$1')
    2020                                       
    21 define([ref_global],[
     21define(`ref_global',`
    2222        __(mov lisp_global($1),$2)
    23 ])
    24 
    25 define([set_global],[
     23')
     24
     25define(`set_global',`
    2626        __(mov $1,lisp_global($2))
    27 ])
    28 
    29 define([ref_nrs_value],[
     27')
     28
     29define(`ref_nrs_value',`
    3030        __(mov nrs.$1+symbol.vcell,$2)
    31 ])
    32        
    33 define([set_nrs_value],[
     31')
     32       
     33define(`set_nrs_value',`
    3434        __(mov $1,nrs.$2+symbol.vcell)
    35 ])
     35')
    3636                                                       
    37 define([unbox_fixnum],[
     37define(`unbox_fixnum',`
    3838        __(mov $1,$2)
    39         __(sar [$]fixnumshift,$2)
    40 ])
    41 
    42 define([box_fixnum],[
    43         __(imul [$]fixnumone,$1,$2)
    44 ])     
     39        __(sar `$'fixnumshift,$2)
     40')
     41
     42define(`box_fixnum',`
     43        __(imul `$'fixnumone,$1,$2)
     44')     
    4545
    4646
    4747/* box_fixnum, with no effect on flags */
    48 define([box_fixnum_no_flags],[
     48define(`box_fixnum_no_flags',`
    4949        __(lea (,$1,fixnumone),$2)
    50 ])
     50')
    5151
    5252
     
    5555
    5656
    57 ifdef([DarwinAssembler],[
     57ifdef(`DarwinAssembler',`
    5858        .macro zero_dnodes
    5959        .if $2
    60         ifdef([X8664],[
     60        ifdef(`X8664',`
    6161        __(movapd %fpzero,$1($0))
    62         ],[
     62        ',`
    6363        __(movsd %fpzero,$1($0))
    64         ])
     64        ')
    6565        __(zero_dnodes $0,$1+dnode_size,$2-dnode_size)
    6666        .endif
    6767        .endmacro
    68 ],[
     68',`
    6969        .macro zero_dnodes base,disp,nbytes
    7070        .ifgt \nbytes
    71         ifdef([X8664],[
     71        ifdef(`X8664',`
    7272        movapd %fpzero,\disp(\base)
    73         ],[
     73        ',`
    7474        movsd %fpzero,\disp(\base)
    75         ])
     75        ')
    7676        zero_dnodes \base,"\disp+dnode_size","\nbytes-dnode_size"
    7777        .endif
    7878        .endm
    79 ])     
     79')     
    8080
    8181
     
    8383/* reg.  */
    8484
    85 ifdef([X8632],[
    86 define([TSP_Alloc_Fixed],[
    87         define([TSP_Alloc_Size],[((($1+node_size) & ~(dnode_size-1))+dnode_size)])
    88         __(subl [$]TSP_Alloc_Size,rcontext(tcr.next_tsp))
     85ifdef(`X8632',`
     86define(`TSP_Alloc_Fixed',`
     87        define(`TSP_Alloc_Size',`((($1+node_size) & ~(dnode_size-1))+dnode_size)')
     88        __(subl `$'TSP_Alloc_Size,rcontext(tcr.next_tsp))
    8989        __(movd rcontext(tcr.save_tsp),%stack_temp)
    9090        __(movl rcontext(tcr.next_tsp),$2)
     
    9393        __(movl %ebp,tsp_frame.save_ebp($2))
    9494        __(movl $2,rcontext(tcr.save_tsp))
    95         undefine([TSP_Alloc_Size])
    96 ])],[
    97 define([TSP_Alloc_Fixed],[
    98         define([TSP_Alloc_Size],[((($1+node_size) & ~(dnode_size-1))+dnode_size)])
    99         __(subq [$]TSP_Alloc_Size,rcontext(tcr.next_tsp))
     95        undefine(`TSP_Alloc_Size')
     96')',`
     97define(`TSP_Alloc_Fixed',`
     98        define(`TSP_Alloc_Size',`((($1+node_size) & ~(dnode_size-1))+dnode_size)')
     99        __(subq `$'TSP_Alloc_Size,rcontext(tcr.next_tsp))
    100100        __(movq rcontext(tcr.save_tsp),%stack_temp)
    101101        __(movq rcontext(tcr.next_tsp),$2)
     
    104104        __(movq %rbp,tsp_frame.save_rbp($2))
    105105        __(movq $2,rcontext(tcr.save_tsp))
    106         undefine([TSP_Alloc_Size])
    107 ])])
     106        undefine(`TSP_Alloc_Size')
     107')')
    108108
    109109/* $1 = size (dnode-aligned, including tsp overhead, $2 scratch.  */
    110110/* Modifies both $1 and $2; on exit, $2 = new_tsp+tsp_overhead, $1 = old tsp  */
    111111
    112 ifdef([X8632],[
    113 define([TSP_Alloc_Var],[
     112ifdef(`X8632',`
     113define(`TSP_Alloc_Var',`
    114114        new_macro_labels()
    115115        __(subl $1,rcontext(tcr.next_tsp))
     
    129129        __(movl $2,rcontext(tcr.save_tsp))
    130130        __(addl $dnode_size,$2)
    131 ])],[
    132 define([TSP_Alloc_Var],[
     131')',`
     132define(`TSP_Alloc_Var',`
    133133        new_macro_labels()
    134134        subq $1,rcontext(tcr.next_tsp)
     
    148148        __(movq $2,rcontext(tcr.save_tsp))
    149149        __(addq $dnode_size,$2)
    150 ])])
    151        
    152        
    153 ifdef([X8632],[
    154 define([Allocate_Catch_Frame],[
     150')')
     151       
     152       
     153ifdef(`X8632',`
     154define(`Allocate_Catch_Frame',`
    155155        TSP_Alloc_Fixed(catch_frame.size,$1)
    156         __(movl [$](catch_frame.element_count<<subtag_shift)|subtag_catch_frame,dnode_size($1))
    157         __(addl [$]dnode_size+fulltag_misc,$1)
    158 ])],[
    159 define([Allocate_Catch_Frame],[
     156        __(movl `$'(catch_frame.element_count<<subtag_shift)|subtag_catch_frame,dnode_size($1))
     157        __(addl `$'dnode_size+fulltag_misc,$1)
     158')',`
     159define(`Allocate_Catch_Frame',`
    160160        TSP_Alloc_Fixed(catch_frame.size,$1)
    161         __(movq [$](catch_frame.element_count<<subtag_shift)|subtag_catch_frame,dnode_size($1))
    162         __(addq [$]dnode_size+fulltag_misc,$1)
    163 ])])
     161        __(movq `$'(catch_frame.element_count<<subtag_shift)|subtag_catch_frame,dnode_size($1))
     162        __(addq `$'dnode_size+fulltag_misc,$1)
     163')')
    164164
    165165/* %arg_z = tag,  %xfn = pc, $1 = mvflag          */
    166166
    167 ifdef([X8632],[
    168 define([Make_Catch],[
     167ifdef(`X8632',`
     168define(`Make_Catch',`
    169169        Allocate_Catch_Frame(%imm0)
    170170        __(movd rcontext(tcr.catch_top),%mm0)
     
    172172        __(movl %arg_z,catch_frame.catch_tag(%imm0))
    173173        __(movd %mm0,catch_frame.link(%imm0))
    174         __(movl [$]$1,catch_frame.mvflag(%imm0))
     174        __(movl `$'$1,catch_frame.mvflag(%imm0))
    175175        __(movd rcontext(tcr.xframe),%mm0)
    176176        __(movl %esp,catch_frame.esp(%imm0))
     
    182182        __(movl %xfn,catch_frame.pc(%imm0))
    183183        __(movl %imm0,rcontext(tcr.catch_top))
    184 ])],[
    185 define([Make_Catch],[
     184')',`
     185define(`Make_Catch',`
    186186        Allocate_Catch_Frame(%imm2)
    187187        __(movq rcontext(tcr.catch_top),%imm0)
     
    189189        __(movq %arg_z,catch_frame.catch_tag(%imm2))
    190190        __(movq %imm0,catch_frame.link(%imm2))
    191         __(movq [$]$1,catch_frame.mvflag(%imm2))
     191        __(movq `$'$1,catch_frame.mvflag(%imm2))
    192192        __(movq rcontext(tcr.xframe),%imm0)
    193193        __(movq %rsp,catch_frame.rsp(%imm2))
     
    195195        __(movq rcontext(tcr.foreign_sp),%stack_temp)
    196196        __(movq %imm1,catch_frame.db_link(%imm2))
    197         __ifndef([WINDOWS])
     197        __ifndef(`WINDOWS')
    198198        __(movq %save3,catch_frame._save3(%imm2))
    199199        __endif
     
    205205        __(movq %xfn,catch_frame.pc(%imm2))
    206206        __(movq %imm2,rcontext(tcr.catch_top))
    207 ])])   
    208 
    209 ifdef([X8632],[
    210 define([nMake_Catch],[
     207')')   
     208
     209ifdef(`X8632',`
     210define(`nMake_Catch',`
    211211        Allocate_Catch_Frame(%imm0)
    212212        __(movd rcontext(tcr.catch_top),%mm0)
     
    216216        __(movl %esp,catch_frame.esp(%imm0))
    217217        __(addl $node_size,catch_frame.esp(%imm0))
    218         __(movl [$]$1,catch_frame.mvflag(%imm0))
     218        __(movl `$'$1,catch_frame.mvflag(%imm0))
    219219        __(movd rcontext(tcr.xframe),%mm0)
    220220        __(movl %ebp,catch_frame.ebp(%imm0))
     
    225225        __(movl %xfn,catch_frame.pc(%imm0))
    226226        __(movl %imm0,rcontext(tcr.catch_top))
    227 ])],[   
    228 define([nMake_Catch],[
     227')',`   
     228define(`nMake_Catch',`
    229229        Allocate_Catch_Frame(%imm2)
    230230        __(movq rcontext(tcr.catch_top),%imm0)
     
    233233        __(movq %imm0,catch_frame.link(%imm2))
    234234        __(lea node_size(%rsp),%imm0)
    235         __(movq [$]$1,catch_frame.mvflag(%imm2))
     235        __(movq `$'$1,catch_frame.mvflag(%imm2))
    236236        __(movq %imm0,catch_frame.rsp(%imm2))
    237237        __(movq rcontext(tcr.xframe),%imm0)
     
    239239        __(movq rcontext(tcr.foreign_sp),%stack_temp)
    240240        __(movq %imm1,catch_frame.db_link(%imm2))
    241         __ifndef([WINDOWS])
     241        __ifndef(`WINDOWS')
    242242        __(movq %save3,catch_frame._save3(%imm2))
    243243        __endif
     
    249249        __(movq %xfn,catch_frame.pc(%imm2))
    250250        __(movq %imm2,rcontext(tcr.catch_top))
    251 ])])   
     251')')   
    252252               
    253253       
    254254/* Consing can get interrupted (either by PROCESS-INTERRUPT or by GC  */
    255 /* activity in some other thread; if it's interrupted, the interrupting  */
    256 /* process needs to be able to determine what's going on well enough  */
     255/* activity in some other thread; if it is interrupted, the interrupting  */
     256/* process needs to be able to determine what is going on well enough  */
    257257/* to be able to either back out of the attempt or finish the job.  */
    258258/* That requires that we use easily recogninized instruction sequences  */
    259259/* and follow certain conventions when consing (either in the kernel  */
    260260/* or in compiled code.)  (One of those conventions involves using  */
    261 /* %allocptr = %temp0 as a freepointer; when consing, %temp0 can't  */
     261/* %allocptr = %temp0 as a freepointer; when consing, %temp0 can not  */
    262262/* contain a live value.)  */
    263263/* Making a CONS cell is a little simpler than making a uvector.  */
     
    265265/* $1=new_car,$2=new_cdr,$3=dest   */
    266266
    267 ifdef([X8632],[
    268 define([Cons],[
     267ifdef(`X8632',`
     268define(`Cons',`
    269269        new_macro_labels()
    270270/* The instructions where tcr.save_allocptr is tagged are difficult  */
     
    278278macro_label(no_trap):
    279279        __(andb $~fulltagmask,rcontext(tcr.save_allocptr))
    280 /* Easy to interrupt now that tcr.save_allocptr isn't tagged as a cons    */
     280/* Easy to interrupt now that tcr.save_allocptr is not tagged as a cons    */
    281281        __(movl $2,cons.cdr(%allocptr))
    282282        __(movl $1,cons.car(%allocptr))
    283         ifelse($3,[],[],[
     283        ifelse($3,`',`',`
    284284         __(movl %allocptr,$3)
    285         ])
    286 ])],[
    287 
    288 define([Cons],[
     285        ')
     286')',`
     287
     288define(`Cons',`
    289289        new_macro_labels()
    290290/* The instructions where tcr.save_allocptr is tagged are difficult  */
     
    298298macro_label(no_trap):   
    299299        __(andb $~fulltagmask,rcontext(tcr.save_allocptr))
    300 /* Easy to interrupt now that tcr.save_allocptr isn't tagged as a cons    */
     300/* Easy to interrupt now that tcr.save_allocptr is not tagged as a cons    */
    301301        __(movq $2,cons.cdr(%allocptr))
    302302        __(movq $1,cons.car(%allocptr))
    303         ifelse($3,[],[],[
     303        ifelse($3,`',`',`
    304304         __(movq %allocptr,$3)
    305         ])
    306 ])])
    307 
    308 ifdef([X8632],[
     305        ')
     306')')
     307
     308ifdef(`X8632',`
    309309/* Header in %mm0, size in bytes in %imm0.  We bash %imm0. */
    310 define([Misc_Alloc],[
    311         __(sub [$]fulltag_misc,%imm0)
     310define(`Misc_Alloc',`
     311        __(sub `$'fulltag_misc,%imm0)
    312312        Misc_Alloc_Internal($1)
    313 ])],[
     313')',`
    314314/* Header in %imm0, size in bytes in %imm1.  We bash %imm1. */
    315 define([Misc_Alloc],[
    316         __(subq [$]fulltag_misc,%imm1)
     315define(`Misc_Alloc',`
     316        __(subq `$'fulltag_misc,%imm1)
    317317        Misc_Alloc_Internal($1)
    318 ])])
     318')')
    319319
    320320/* Here Be Monsters: we have to treat some/all of this instruction   */
    321321/* sequence atomically, as soon as tcr.save_allocptr becomes tagged.  */
    322322               
    323 ifdef([X8632],[
    324 define([Misc_Alloc_Internal],[                 
     323ifdef(`X8632',`
     324define(`Misc_Alloc_Internal',`                 
    325325        new_macro_labels()
    326326        __(subl %imm0,rcontext(tcr.save_allocptr))
     
    332332        __(movd %mm0,misc_header_offset(%allocptr))
    333333        __(andb $~fulltagmask,rcontext(tcr.save_allocptr))
    334 /* Now that tcr.save_allocptr is untagged, it's easier to be interrupted   */
    335         ifelse($1,[],[],[
     334/* Now that tcr.save_allocptr is untagged, it is easier to be interrupted   */
     335        ifelse($1,`',`',`
    336336         __(mov %allocptr,$1)
    337         ])
    338 ])],[   
    339 define([Misc_Alloc_Internal],[                 
     337        ')
     338')',`   
     339define(`Misc_Alloc_Internal',`                 
    340340        new_macro_labels()
    341341        __(subq %imm1,rcontext(tcr.save_allocptr))
     
    347347        __(movq %imm0,misc_header_offset(%allocptr))
    348348        __(andb $~fulltagmask,rcontext(tcr.save_allocptr))
    349 /* Now that tcr.save_allocptr is untagged, it's easier to be interrupted   */
    350         ifelse($1,[],[],[
     349/* Now that tcr.save_allocptr is untagged, it is easier to be interrupted   */
     350        ifelse($1,`',`',`
    351351         __(mov %allocptr,$1)
    352         ])
    353 ])])
    354 
    355 ifdef([X8632],[
    356 define([Misc_Alloc_Fixed],[
    357         __(mov [$]$2-fulltag_misc,%imm0)
     352        ')
     353')')
     354
     355ifdef(`X8632',`
     356define(`Misc_Alloc_Fixed',`
     357        __(mov `$'$2-fulltag_misc,%imm0)
    358358        Misc_Alloc_Internal($1)
    359 ])],[
    360 define([Misc_Alloc_Fixed],[
    361         __(movq [$]$2-fulltag_misc,%imm1)
     359')',`
     360define(`Misc_Alloc_Fixed',`
     361        __(movq `$'$2-fulltag_misc,%imm1)
    362362        Misc_Alloc_Internal($1)
    363 ])])                                   
    364 
    365 define([vrefr],[
     363')')                                   
     364
     365define(`vrefr',`
    366366        __(mov misc_data_offset+($3<<word_shift)($2),$1)
    367 ])     
    368 
    369 define([jump_fn],[
     367')     
     368
     369define(`jump_fn',`
    370370        __(jmp *%fn)
    371 ])
     371')
    372372                       
    373 define([jump_fname],[
     373define(`jump_fname',`
    374374        __(mov symbol.fcell(%fname),%fn)
    375375        jump_fn()
    376 ])     
    377 
    378 ifdef([X8632],[
    379 define([set_nargs],[
     376')     
     377
     378ifdef(`X8632',`
     379define(`set_nargs',`
    380380        __(xorl %nargs,%nargs)
    381         __(addl [$]$1<<fixnumshift,%nargs)
    382 ])],[
    383 define([set_nargs],[
    384         ifelse(eval($1>15),1,[
    385         __(movl [$]$1<<fixnumshift,%nargs)
    386         ],[
     381        __(addl `$'$1<<fixnumshift,%nargs)
     382')',`
     383define(`set_nargs',`
     384        ifelse(eval($1>15),1,`
     385        __(movl `$'$1<<fixnumshift,%nargs)
     386        ',`
    387387        __(xorl %nargs,%nargs)
    388         ifelse(eval($1),0,[],[
    389         __(addl [$]$1<<fixnumshift,%nargs)
    390         ])])])
    391 ])
     388        ifelse(eval($1),0,`',`
     389        __(addl `$'$1<<fixnumshift,%nargs)
     390        ')')')
     391')
    392392
    393393/* $1 = ndigits.  Assumes 4-byte digits           */
    394 define([aligned_bignum_size],[((~(dnode_size-1)&(node_size+(dnode_size-1)+(4*$1))))])
    395        
    396 
    397 define([_car],[
     394define(`aligned_bignum_size',`((~(dnode_size-1)&(node_size+(dnode_size-1)+(4*$1))))')
     395       
     396
     397define(`_car',`
    398398        __(mov cons.car($1),$2)
    399 ])     
    400 
    401 define([_rplaca],[
     399')     
     400
     401define(`_rplaca',`
    402402        __(mov $2,cons.car($1))
    403 ])     
     403')     
    404404               
    405 define([_cdr],[
     405define(`_cdr',`
    406406        __(mov cons.cdr($1),$2)
    407 ])
    408 
    409 define([_rplacd],[
     407')
     408
     409define(`_rplacd',`
    410410        __(mov $2,cons.cdr($1))
    411 ])     
     411')     
    412412               
    413413       
    414414       
    415 ifdef([X8632],[
    416 define([tra],[
     415ifdef(`X8632',`
     416define(`tra',`
    417417        .p2align 3
    418418        .long 0
    419419        .byte 0
    420420$1:     
    421 ])],[
    422 define([tra],[
     421')',`
     422define(`tra',`
    423423        .p2align 3
    424         ifelse($2,[],[
     424        ifelse($2,`',`
    425425        .long 0
    426         ],[
     426        ',`
    427427        .long $1-$2
    428         ])
     428        ')
    429429$1:     
    430 ])])
    431 
    432 ifdef([X8632],[
    433 define([do_funcall],[
     430')')
     431
     432ifdef(`X8632',`
     433define(`do_funcall',`
    434434        new_macro_labels()
    435435        extract_fulltag(%temp0,%imm0)
     
    448448macro_label(bad):
    449449        __(uuo_error_not_callable)
    450 ])],[
    451 define([do_funcall],[
     450')',`
     451define(`do_funcall',`
    452452        new_macro_labels()
    453453        __(movb %temp0_b,%imm0_b)
     
    461461macro_label(bad):               
    462462        __(uuo_error_not_callable)
    463 ])])
    464 
    465 define([getvheader],[
     463')')
     464
     465define(`getvheader',`
    466466        __(mov misc_header_offset($1),$2)
    467 ])
     467')
    468468
    469469/* "Size" is unboxed element-count.  $1 (header) and $2 (dest) should  */
    470470/*    both be immediate registers   */
    471 define([header_size],[
     471define(`header_size',`
    472472        __(mov $1,$2)
    473473        __(shr $num_subtag_bits,$2)
    474 ])
     474')
    475475
    476476/* $2 (length) is fixnum element-count.   */
    477 define([header_length],[
     477define(`header_length',`
    478478        __(mov $~255,$2)
    479479        __(and $1,$2)
    480480        __(shr $num_subtag_bits-fixnumshift,$2)
    481 ])
     481')
    482482
    483483/* $1 = vector, $2 = header, $3 = dest   */
    484 define([vector_size],[                                 
     484define(`vector_size',`                                 
    485485        __(getvheader($1,$2))
    486486        __(header_size($2,$3))
    487 ])
     487')
    488488
    489489/* $1 = vector, $2 = dest   */
    490 define([vector_length],[                                 
     490define(`vector_length',`                                 
    491491        __(mov $~255,$2)
    492492        __(and misc_header_offset($1),$2)
    493493        __(shr $num_subtag_bits-fixnumshift,$2)
    494 ])
     494')
    495495               
    496496/* GAS/ATT comparison arg order drives me nuts   */
    497 define([rcmpq],[
     497define(`rcmpq',`
    498498        __(cmpq $2,$1)
    499 ])
    500 
    501 define([rcmpl],[
     499')
     500
     501define(`rcmpl',`
    502502        __(cmpl $2,$1)
    503 ])     
    504 
    505 define([rcmpw],[
     503')     
     504
     505define(`rcmpw',`
    506506        __(cmpw $2,$1)
    507 ])     
    508 
    509 define([rcmpb],[
     507')     
     508
     509define(`rcmpb',`
    510510        __(cmpb $2,$1)
    511 ])             
    512 
    513 
    514 define([condition_to_boolean],[
    515         __(movl [$]t_value,$2_l)
     511')             
     512
     513
     514define(`condition_to_boolean',`
     515        __(movl `$'t_value,$2_l)
    516516        __(lea (-t_offset)($2),$3)
    517517        __(cmov$1l $2_l,$3_l)
    518 ])
    519 
    520 ifdef([X8632],[
    521 define([compare_reg_to_nil],[
     518')
     519
     520ifdef(`X8632',`
     521define(`compare_reg_to_nil',`
    522522        __(cmp $nil_value,$1)
    523 ])],[
    524 define([compare_reg_to_nil],[
     523')',`
     524define(`compare_reg_to_nil',`
    525525        __(cmpb $fulltag_nil,$1_b)
    526 ])])
    527 
    528 ifdef([X8632],[
    529 define([extract_lisptag],[
     526')')
     527
     528ifdef(`X8632',`
     529define(`extract_lisptag',`
    530530        __(movl $1,$2)
    531         __(and [$]tagmask,$2)
    532 ])],[
    533 define([extract_lisptag],[
     531        __(and `$'tagmask,$2)
     532')',`
     533define(`extract_lisptag',`
    534534        __(movzbl $1_b,$2_l)
    535         __(andb [$]tagmask,$2_b)
    536 ])])
     535        __(andb `$'tagmask,$2_b)
     536')')
    537537
    538538                                                               
    539 define([extract_fulltag],[
     539define(`extract_fulltag',`
    540540        __(movzbl $1_b,$2_l)
    541         __(andb [$]fulltagmask,$2_b)
    542 ])
    543 
    544 define([extract_subtag],[
     541        __(andb `$'fulltagmask,$2_b)
     542')
     543
     544define(`extract_subtag',`
    545545        __(movb misc_subtag_offset($1),$2)
    546 ])
    547 
    548 ifdef([X8632],[
    549 define([extract_typecode],[
     546')
     547
     548ifdef(`X8632',`
     549define(`extract_typecode',`
    550550        new_macro_labels()
    551551        __(mov $1,$2)
     
    555555        __(movb misc_subtag_offset($1),$2_b)
    556556macro_label(done):
    557 ])],[
    558 define([extract_typecode],[
     557')',`
     558define(`extract_typecode',`
    559559        new_macro_labels()
    560560        __(movzbl $1_b,$2_l)
     
    564564        __(movb misc_subtag_offset($1),$2_b)
    565565macro_label(done):
    566 ])])
     566')')
    567567
    568568/* dnode_align(src,delta,dest)  */
    569569
    570 define([dnode_align],[
     570define(`dnode_align',`
    571571        __(lea ($2+(dnode_size-1))($1),$3)
    572572        __(andb $~(dnode_size-1),$3_b)
    573 ])
    574 
    575 ifdef([X8632],[
    576 define([push_argregs],[
     573')
     574
     575ifdef(`X8632',`
     576define(`push_argregs',`
    577577        new_macro_labels()
    578578        /* xxx hack alert: when the compiler calls a keyword subprim */
     
    580580        /* it puts some flags in the upper half of %temp1, which
    581581        /* is %nargs.  We use the cmpw here to avoid seeing those flags. */
    582         __(cmpw [$]1*node_size,%nargs_w)
     582        __(cmpw `$'1*node_size,%nargs_w)
    583583        __(jb macro_label(done))
    584584        __(je macro_label(z))
     
    587587        __(push %arg_z)
    588588macro_label(done):
    589 ])],[
    590 define([push_argregs],[
     589')',`
     590define(`push_argregs',`
    591591        new_macro_labels()
    592592        __(testl %nargs,%nargs)
    593593        __(jz macro_label(done))
    594         __(cmpl [$]2*node_size,%nargs)
     594        __(cmpl `$'2*node_size,%nargs)
    595595        __(je macro_label(yz))
    596596        __(jb macro_label(z))
     
    601601        __(push %arg_z)
    602602macro_label(done):
    603 ])])   
     603')')   
    604604
    605605
    606606/* $1 = ndigits.  Assumes 4-byte digits           */
    607 define([aligned_bignum_size],[((~(dnode_size-1)&(node_size+(dnode_size-1)+(4*$1))))])
    608 
    609 define([discard_temp_frame],[
     607define(`aligned_bignum_size',`((~(dnode_size-1)&(node_size+(dnode_size-1)+(4*$1))))')
     608
     609define(`discard_temp_frame',`
    610610        __(mov rcontext(tcr.save_tsp),$1)
    611611        __(mov ($1),$1)
    612612        __(mov $1,rcontext(tcr.save_tsp))
    613613        __(mov $1,rcontext(tcr.next_tsp))
    614 ])
    615 
    616 ifdef([X8632],[
    617 define([check_pending_enabled_interrupt],[
    618         __(btrl [$]31,rcontext(tcr.interrupt_pending))
     614')
     615
     616ifdef(`X8632',`
     617define(`check_pending_enabled_interrupt',`
     618        __(btrl `$'31,rcontext(tcr.interrupt_pending))
    619619        __(jnc $1)
    620620        interrupt_now()
    621 ])],[
    622 define([check_pending_enabled_interrupt],[
    623         __(btrq [$]63,rcontext(tcr.interrupt_pending))
     621')',`
     622define(`check_pending_enabled_interrupt',`
     623        __(btrq `$'63,rcontext(tcr.interrupt_pending))
    624624        __(jnc $1)
    625625        interrupt_now()
    626 ])])
     626')')
    627627       
    628628/* $1 = scratch register, used to access tcr.tlb_pointer.  An interrupt  */
     
    631631/*   test and clear the pending bit.  */
    632632
    633 define([check_pending_interrupt],[
     633define(`check_pending_interrupt',`
    634634        new_macro_labels()
    635635        __(mov rcontext(tcr.tlb_pointer),$1)
    636         __(cmp [$]0,INTERRUPT_LEVEL_BINDING_INDEX($1))
     636        __(cmp `$'0,INTERRUPT_LEVEL_BINDING_INDEX($1))
    637637        __(js macro_label(done))
    638638        check_pending_enabled_interrupt(macro_label(done))
    639639macro_label(done):
    640 ])
     640')
    641641
    642642/* This should only be called from a foreign context; it should be */
    643 /* assumed to bash all non-volatile C registers.  And of course it's */
     643/* assumed to bash all non-volatile C registers.  And of course it is */
    644644/* ugly, awful, non-portable, and slow.  %rdi should point to the */
    645645/* linear address that %gs should be made to address (tcr or pthread data) */
    646646                               
    647 ifdef([DARWIN_GS_HACK],[
    648 define([set_gs_base],[
    649         ifelse($1,[],[
    650         ],[
     647ifdef(`DARWIN_GS_HACK',`
     648define(`set_gs_base',`
     649        ifelse($1,`',`
     650        ',`
    651651        __(movq $1,%rdi)
    652         ])
    653         __(movl [$]0x3000003,%eax)
     652        ')
     653        __(movl `$'0x3000003,%eax)
    654654        __(syscall)
    655 ])
     655')
    656656
    657657/* %gs addresses the tcr.  Make it address pthread data before running */
    658658/* foreign code */       
    659659       
    660 define([set_foreign_gs_base],[
    661         set_gs_base([rcontext(tcr.osid)])
    662 ])
     660define(`set_foreign_gs_base',`
     661        set_gs_base(`rcontext(tcr.osid)')
     662')
    663663
    664664/* %gs addresses the tcr.  Get the linear address of the tcr and */
    665665/* copy it to $1 */
    666666
    667 define([save_tcr_linear],[
     667define(`save_tcr_linear',`
    668668        __(movq rcontext(tcr.linear),$1)
    669 ])
    670        
    671 ])
     669')
     670       
     671')
    672672
    673673/*  On AMD hardware (at least), a one-byte RET instruction should be */
    674674/*  prefixed with a REP prefix if it (a) is the target of a  */
    675675/*  branch or (b) immediately follows a conditional branch not taken. */
    676 define([repret],[
     676define(`repret',`
    677677        __(.byte 0xf3)
    678678        __(ret)
    679 ])
    680 
    681 ifdef([X8632],[
    682 define([regnum],[ifelse($1, [%eax], [0],
    683        $1, [%ecx], [1],
    684        $1, [%edx], [2],
    685        $1, [%ebx], [3],
    686        $1, [%esp], [4],
    687        $1, [%ebp], [5],
    688        $1, [%esi], [6],
    689        $1, [%edi], [7],
     679')
     680
     681ifdef(`X8632',`
     682define(`regnum',`ifelse($1, `%eax', `0',
     683       $1, `%ecx', `1',
     684       $1, `%edx', `2',
     685       $1, `%ebx', `3',
     686       $1, `%esp', `4',
     687       $1, `%ebp', `5',
     688       $1, `%esi', `6',
     689       $1, `%edi', `7',
    690690        "unknown register")dnl
    691 ])
    692 
    693 define([mark_as_node], [
     691')
     692
     693define(`mark_as_node', `
    694694        __(xorl $1,$1)
    695         __(orb [$](1<<regnum($1)), rcontext(tcr.node_regs_mask))
    696 ])
    697 
    698 define([mark_as_imm],[
    699         __(andb [$]~(1<<regnum($1)), rcontext(tcr.node_regs_mask))
    700 ])
    701 ])
    702 
    703 define([check_cstack_alignment],[
     695        __(orb `$'(1<<regnum($1)), rcontext(tcr.node_regs_mask))
     696')
     697
     698define(`mark_as_imm',`
     699        __(andb `$'~(1<<regnum($1)), rcontext(tcr.node_regs_mask))
     700')
     701')
     702
     703define(`check_cstack_alignment',`
    704704        new_macro_labels()
    705         __(testb [$]7,rcontext(tcr.foreign_sp))
     705        __(testb `$'7,rcontext(tcr.foreign_sp))
    706706        __(je macro_label(done))
    707707        __(hlt)
    708708macro_label(done):
    709 ])
    710 
    711         __ifdef([WINDOWS])
    712 define([windows_cstack_probe],[
     709')
     710
     711        __ifdef(`WINDOWS')
     712define(`windows_cstack_probe',`
    713713        new_macro_labels()
    714         __(cmp [$]0x1000,$1)
     714        __(cmp `$'0x1000,$1)
    715715        __(jb macro_label(done))
    716716        __(mov rcontext(tcr.foreign_sp),$2)
    717         __(orl [$]0,-0x1000($2))
    718         __(cmp [$]0x2000,$1)
    719         __(jb macro_label(done))
    720         __(orl [$]0,-0x2000($2))
    721         __(cmp [$]0x3000,$1)
    722         __(jb macro_label(done))
    723         __(orl [$]0,-0x3000($2))
    724         __(cmp [$]0x4000,$1)
    725         __(jb macro_label(done))
    726         __(orl [$]0,-0x4000($2))
    727         __(cmp [$]0x5000,$1)
    728         __(jb macro_label(done))
    729         __(orl [$]0,-0x5000($2))
    730         __(cmp [$]0x6000,$1)
    731         __(jb macro_label(done))
    732         __(orl [$]0,-0x6000($2))
    733         __(cmp [$]0x7000,$1)
    734         __(jb macro_label(done))
    735         __(orl [$]0,-0x7000($2))
    736         __(cmp [$]0x8000,$1)
    737         __(jb macro_label(done))
    738         __(orl [$]0,-0x8000($2))
    739         __(cmp [$]0x9000,$1)
    740         __(jb macro_label(done))
    741         __(orl [$]0,-0x9000($2))
    742         __(cmp [$]0xa000,$1)
    743         __(jb macro_label(done))
    744         __(orl [$]0,-0xa000($2))
    745         __(cmp [$]0xb000,$1)
    746         __(jb macro_label(done))
    747         __(orl [$]0,-0xb000($2))
    748         __(cmp [$]0xc000,$1)
    749         __(jb macro_label(done))
    750         __(orl [$]0,-0xc000($2))
    751         __(cmp [$]0xd000,$1)
    752         __(jb macro_label(done))
    753         __(orl [$]0,-0xd000($2))
    754         __(cmp [$]0xe000,$1)
    755         __(jb macro_label(done))
    756         __(orl [$]0,-0xe000($2))
    757         __(cmp [$]0xf000,$1)
    758         __(jb macro_label(done))
    759         __(orl [$]0,-0xf000($2))
     717        __(orl `$'0,-0x1000($2))
     718        __(cmp `$'0x2000,$1)
     719        __(jb macro_label(done))
     720        __(orl `$'0,-0x2000($2))
     721        __(cmp `$'0x3000,$1)
     722        __(jb macro_label(done))
     723        __(orl `$'0,-0x3000($2))
     724        __(cmp `$'0x4000,$1)
     725        __(jb macro_label(done))
     726        __(orl `$'0,-0x4000($2))
     727        __(cmp `$'0x5000,$1)
     728        __(jb macro_label(done))
     729        __(orl `$'0,-0x5000($2))
     730        __(cmp `$'0x6000,$1)
     731        __(jb macro_label(done))
     732        __(orl `$'0,-0x6000($2))
     733        __(cmp `$'0x7000,$1)
     734        __(jb macro_label(done))
     735        __(orl `$'0,-0x7000($2))
     736        __(cmp `$'0x8000,$1)
     737        __(jb macro_label(done))
     738        __(orl `$'0,-0x8000($2))
     739        __(cmp `$'0x9000,$1)
     740        __(jb macro_label(done))
     741        __(orl `$'0,-0x9000($2))
     742        __(cmp `$'0xa000,$1)
     743        __(jb macro_label(done))
     744        __(orl `$'0,-0xa000($2))
     745        __(cmp `$'0xb000,$1)
     746        __(jb macro_label(done))
     747        __(orl `$'0,-0xb000($2))
     748        __(cmp `$'0xc000,$1)
     749        __(jb macro_label(done))
     750        __(orl `$'0,-0xc000($2))
     751        __(cmp `$'0xd000,$1)
     752        __(jb macro_label(done))
     753        __(orl `$'0,-0xd000($2))
     754        __(cmp `$'0xe000,$1)
     755        __(jb macro_label(done))
     756        __(orl `$'0,-0xe000($2))
     757        __(cmp `$'0xf000,$1)
     758        __(jb macro_label(done))
     759        __(orl `$'0,-0xf000($2))
    760760macro_label(done):     
    761 ])
     761')
    762762
    763763
  • trunk/source/lisp-kernel/x86-spentry32.s

    r13279 r13337  
    33
    44        .align 2
    5 define([_spentry],[ifdef([__func_name],[_endfn],[])
     5define(`_spentry',`ifdef(`__func_name',`_endfn',`')
    66        .p2align 3
    77        _exportfn(_SP$1)
    8 ])
    9 
    10 define([_endsubp],[
     8')
     9
     10define(`_endsubp',`
    1111        _endfn(_SP$1)
    12 ])
    13 
    14 define([jump_builtin],[
     12')
     13
     14define(`jump_builtin',`
    1515        ref_nrs_value(builtin_functions,%fname)
    1616        set_nargs($2)
    1717        vrefr(%fname,%fname,$1)
    1818        jump_fname()
    19 ])
     19')
    2020
    2121_spentry(bad_funcall)
     
    3131        __(movl $one_digit_bignum_header,%imm0)
    3232        __(movd %imm0,%mm0)
    33         __(Misc_Alloc_Fixed([],aligned_bignum_size(1)))
     33        __(Misc_Alloc_Fixed(`',aligned_bignum_size(1)))
    3434        __(unbox_fixnum(%arg_z,%imm0))
    3535        __(xor $0xc0000000,%imm0)
     
    14331433        __(push %temp0)
    14341434        __(push %arg_z)
    1435         __(push [$]local_label(_nthrow1v_back_from_unbind))
     1435        __(push `$'local_label(_nthrow1v_back_from_unbind))
    14361436        __(jmp _SPunbind_to)
    14371437__(tra(local_label(_nthrow1v_back_from_unbind)))
     
    20252025        __(cmpl $tstack_alloc_limit,%imm0)
    20262026        __(ja local_label(stack_misc_alloc_heap_alloc_ivector))
    2027         __ifdef([WINDOWS])
     2027        __ifdef(`WINDOWS')
    20282028         __(windows_cstack_probe(%imm0,%temp1))
    20292029        __endif
     
    22182218/* N.B.: %ra0 is %temp0, and must not be clobbered. */
    22192219
    2220 define([keyword_flags_aok_bit],[16])
    2221 define([keyword_flags_unknown_keys_bit],[17])
    2222 define([keyword_flags_rest_bit],[18])
    2223 define([keyword_flags_seen_aok_bit],[19])
     2220define(`keyword_flags_aok_bit',`16')
     2221define(`keyword_flags_unknown_keys_bit',`17')
     2222define(`keyword_flags_rest_bit',`18')
     2223define(`keyword_flags_seen_aok_bit',`19')
    22242224
    22252225_spentry(keyword_bind)
     
    27462746        __(cmpl $tstack_alloc_limit,%imm0)
    27472747        __(jae 1f)
    2748         __ifdef([WINDOWS])
     2748        __ifdef(`WINDOWS')
    27492749         __(windows_cstack_probe(%imm0,%arg_z))
    27502750        __endif
     
    27762776        __(cmpl $tstack_alloc_limit,%imm0)
    27772777        __(jae 9f)
    2778         __ifdef([WINDOWS])
     2778        __ifdef(`WINDOWS')
    27792779         __(windows_cstack_probe(%imm0,%temp0))
    27802780        __endif
     
    40114011
    40124012_spentry(builtin_logbitp)
    4013         /* Call out unless: both args fixnums, arg_y in [0, logbitp_max_bit) */
     4013        /* Call out unless: both args fixnums, arg_y in `0, logbitp_max_bit) */
    40144014        __(movl %arg_z,%imm0)
    40154015        __(orl %arg_y,%imm0)
     
    41584158
    41594159_spentry(ffcall)
    4160 LocalLabelPrefix[]ffcall:
     4160LocalLabelPrefix`'ffcall:
    41614161        __(unbox_fixnum(%arg_z,%imm0))
    41624162        __(testb $fixnummask,%arg_z_b)
     
    41724172        __(push %arg_z)                 
    41734173        __(push %fn)         
    4174         __ifdef([WIN32_ES_HACK])
     4174        __ifdef(`WIN32_ES_HACK')
    41754175         __(movl rcontext(tcr.linear),%ebx)
    41764176        __endif
     
    41874187        __(ldmxcsr rcontext(tcr.foreign_mxcsr))
    41884188        __(movl (%esp),%ebp)
    4189 LocalLabelPrefix[]ffcall_setup:
     4189LocalLabelPrefix`'ffcall_setup:
    41904190        __(lea 15(%esp),%ecx)
    41914191        __(andl $-16,%ecx)
    41924192        __(movl %ecx,%esp)
    41934193/*      __(addl $node_size,%esp) */
    4194         __ifdef([WIN32_ES_HACK])
     4194        __ifdef(`WIN32_ES_HACK')
    41954195         __(push %ds)
    41964196         __(pop %es)
    41974197        __endif
    4198 LocalLabelPrefix[]ffcall_call:
     4198LocalLabelPrefix`'ffcall_call:
    41994199        __(call *%eax)
    4200         __ifdef([WIN32_ES_HACK])
     4200        __ifdef(`WIN32_ES_HACK')
    42014201         __(movw tcr.ldt_selector(%ebx),%rcontext_reg)
    42024202        __endif
    4203 LocalLabelPrefix[]ffcall_call_end:
     4203LocalLabelPrefix`'ffcall_call_end:
    42044204        __(movl %ebp,%esp)
    42054205        __(movl %esp,rcontext(tcr.foreign_sp))
     
    42194219        __(jmp 1f)
    422042200:
    4221         __ifdef([SSE2_MATH_LIB])
     4221        __ifdef(`SSE2_MATH_LIB')
    42224222        __(stmxcsr rcontext(tcr.ffi_exception))
    42234223        __else
     
    43814381        __(addl $12,%esp)       /* discard alignment padding */
    43824382        __(ldmxcsr rcontext(tcr.foreign_mxcsr))
    4383         __ifdef([WIN32_ES_HACK])
     4383        __ifdef(`WIN32_ES_HACK')
    43844384         __(push %ds)
    43854385         __(pop %es)
     
    43944394        __(movl -8(%ebp),%eax)
    43954395        __(movl -4(%ebp),%edx)
    4396         __ifdef([WIN_32])
     4396        __ifdef(`WIN_32')
    43974397         __(cmpl $0,-20(%ebp))
    43984398         __(jne local_label(winapi_return))
     
    44114411        /* single float return in x87 */
    44124412        __(flds -8(%ebp))
    4413         __ifdef([WIN_32])
     4413        __ifdef(`WIN_32')
    44144414         __(cmpl $0,-20(%ebp))
    44154415         __(jne local_label(winapi_return))
     
    441944192:      /* double-float return in x87 */
    44204420        __(fldl -8(%ebp))
    4421         __ifdef([WIN_32])
     4421        __ifdef(`WIN_32')
    44224422         __(cmpl $0,-20(%ebp))
    44234423         __(jne local_label(winapi_return))
     
    44254425        __(leave)
    44264426        __(ret)
    4427         __ifdef([WIN_32])
     4427        __ifdef(`WIN_32')
    44284428local_label(winapi_return):
    44294429          __(movl -20(%ebp),%ecx)
  • trunk/source/lisp-kernel/x86-spentry64.s

    r13279 r13337  
    1919       
    2020        .align 2
    21 define([_spentry],[ifdef([__func_name],[_endfn],[])
     21define(`_spentry',`ifdef(`__func_name',`_endfn',`')
    2222        .p2align 3
    2323        _exportfn(_SP$1)
    2424        .line  __line__
    25 ])
     25')
    2626
    2727             
    28 define([_endsubp],[
     28define(`_endsubp',`
    2929        _endfn(_SP$1)
    3030#  __line__
    31 ])
    32 
    33 define([jump_builtin],[
     31')
     32
     33define(`jump_builtin',`
    3434        ref_nrs_value(builtin_functions,%fname)
    3535        set_nargs($2)
    3636        vrefr(%fname,%fname,$1)
    3737        jump_fname()
    38 ])
     38')
    3939
    4040       
     
    5252C(fix_one_bit_overflow):       
    5353        __(movq $two_digit_bignum_header,%imm0)
    54         __(Misc_Alloc_Fixed([],aligned_bignum_size(2)))
     54        __(Misc_Alloc_Fixed(`',aligned_bignum_size(2)))
    5555        __(unbox_fixnum(%arg_z,%imm0))
    5656        __(movq $0xe000000000000000,%imm1)
     
    12341234        __(movq catch_frame._save1(%temp0),%save1)
    12351235        __(movq catch_frame._save2(%temp0),%save2)
    1236         __ifndef([TCR_IN_GPR])
     1236        __ifndef(`TCR_IN_GPR')
    12371237        __(movq catch_frame._save3(%temp0),%save3)
    12381238        __endif
     
    12801280        __(movq catch_frame._save1(%temp0),%save1)
    12811281        __(movq catch_frame._save2(%temp0),%save2)
    1282         __ifndef([TCR_IN_GPR])
     1282        __ifndef(`TCR_IN_GPR')
    12831283        __(movq catch_frame._save3(%temp0),%save3)
    12841284        __endif
     
    13371337        __(movq %save2,%rsp)
    13381338        __(movq catch_frame.rbp(%temp0),%rbp)
    1339         __ifndef([TCR_IN_GPR])
     1339        __ifndef(`TCR_IN_GPR')
    13401340        __(movq catch_frame._save3(%temp0),%save3)
    13411341        __endif
     
    13591359        __(push catch_frame._save1(%temp0))
    13601360        __(push catch_frame._save2(%temp0))
    1361         __ifndef([TCR_IN_GPR])
     1361        __ifndef(`TCR_IN_GPR')
    13621362        __(push catch_frame._save3(%temp0))
    13631363        __endif
     
    13911391        __(jns local_label(_nthrowv_tpushloop))
    13921392        __(pop %xfn)
    1393         __ifndef([TCR_IN_GPR])
     1393        __ifndef(`TCR_IN_GPR')
    13941394        __(pop %save3)
    13951395        __endif
     
    14691469        __(movq catch_frame.rsp(%temp0),%rsp)
    14701470        __(movq catch_frame.rbp(%temp0),%rbp)
    1471         __ifndef([TCR_IN_GPR])
     1471        __ifndef(`TCR_IN_GPR')
    14721472        __(movq catch_frame._save3(%temp0),%save3)
    14731473        __endif
     
    14931493        __(movq catch_frame._save1(%temp0),%save1)
    14941494        __(movq catch_frame._save2(%temp0),%save2)
    1495         __ifndef([TCR_IN_GPR])
     1495        __ifndef(`TCR_IN_GPR')
    14961496        __(movq catch_frame._save3(%temp0),%save3)
    14971497        __endif
     
    20682068        __(cmpq $tstack_alloc_limit,%imm1)
    20692069        __(ja local_label(stack_misc_alloc_heap_alloc_ivector))
    2070         __ifdef([WINDOWS])
     2070        __ifdef(`WINDOWS')
    20712071         __(windows_cstack_probe(%imm1,%temp0))
    20722072        __endif
     
    22482248/* Once we get here, we can use the arg registers.  */
    22492249
    2250 define([keyword_flags_aok_bit],[fixnumshift])
    2251 define([keyword_flags_unknown_keys_bit],[fixnumshift+1])
    2252 define([keyword_flags_rest_bit],[fixnumshift+2])
    2253 define([keyword_flags_seen_aok_bit],[fixnumshift+3])       
     2250define(`keyword_flags_aok_bit',`fixnumshift')
     2251define(`keyword_flags_unknown_keys_bit',`fixnumshift+1')
     2252define(`keyword_flags_rest_bit',`fixnumshift+2')
     2253define(`keyword_flags_seen_aok_bit',`fixnumshift+3')       
    22542254       
    22552255_spentry(keyword_bind)
     
    26832683        __(cmpq $tstack_alloc_limit,%imm0)
    26842684        __(jae 1f)
    2685         __ifdef([WINDOWS])
     2685        __ifdef(`WINDOWS')
    26862686         __(windows_cstack_probe(%imm0,%arg_z))
    26872687        __endif
     
    27132713        __(cmpq $tstack_alloc_limit,%imm0)
    27142714        __(jae 9f)
    2715         __ifdef([WINDOWS])
     2715        __ifdef(`WINDOWS')
    27162716         __(windows_cstack_probe(%imm0,%arg_z))
    27172717        __endif       
     
    38113811_endsubp(builtin_memq)
    38123812
    3813         __ifdef([X8664])
     3813        __ifdef(`X8664')
    38143814logbitp_max_bit = 61
    38153815        __else
     
    39653965
    39663966_spentry(ffcall)
    3967 LocalLabelPrefix[]ffcall:               
     3967LocalLabelPrefix`'ffcall:               
    39683968        /* Unbox %arg_z.  It's either a fixnum or macptr (or bignum) ;
    39693969          if not a fixnum, get the first word */
     
    39833983        __(push %arg_z)
    39843984        __(push %fn)
    3985         __ifndef([TCR_IN_GPR])
     3985        __ifndef(`TCR_IN_GPR')
    39863986        __(push %save3) 
    39873987        __endif
     
    39973997        __(ldmxcsr rcontext(tcr.foreign_mxcsr))
    39983998        __(movq (%rsp),%rbp)
    3999         __ifdef([DARWIN_GS_HACK])
     3999        __ifdef(`DARWIN_GS_HACK')
    40004000         /* At this point, %imm1=%rdx is live (contains
    40014001            the entrypoint) and %imm0.b=%al contains
     
    40164016         __(movq %csave2,%imm0)
    40174017        __endif
    4018         __ifdef([TCR_IN_GPR])
     4018        __ifdef(`TCR_IN_GPR')
    40194019        /* Preserve TCR pointer */
    40204020        __(movq %rcontext_reg, %csave0)
    40214021        __endif
    4022 LocalLabelPrefix[]ffcall_setup:
     4022LocalLabelPrefix`'ffcall_setup:
    40234023        __(addq $2*node_size,%rsp)
    40244024        __(movq %imm1,%r11)
    4025         __ifdef([WINDOWS])
     4025        __ifdef(`WINDOWS')
    40264026         /* Leave 0x20 bytes of register spill area on stack */
    40274027         __(movq (%rsp),%carg0)
     
    40374037         __(pop %carg5)
    40384038        __endif
    4039 LocalLabelPrefix[]ffcall_setup_end:
    4040 LocalLabelPrefix[]ffcall_call:
     4039LocalLabelPrefix`'ffcall_setup_end:
     4040LocalLabelPrefix`'ffcall_call:
    40414041        __(call *%r11)
    4042 LocalLabelPrefix[]ffcall_call_end:               
    4043         __ifdef([WINDOWS])
     4042LocalLabelPrefix`'ffcall_call_end:               
     4043        __ifdef(`WINDOWS')
    40444044        __(add $0x20,%rsp)
    40454045        __endif
    40464046        __(movq %rbp,%rsp)
    4047         __ifdef([DARWIN_GS_HACK])
     4047        __ifdef(`DARWIN_GS_HACK')
    40484048         /* %rax/%rdx contains the return value (maybe), %csave1 still
    40494049            contains the linear tcr address.  Preserve %rax/%rdx here. */
     
    40544054         __(movq %csave2,%rdx)
    40554055        __endif
    4056         __ifdef([TCR_IN_GPR])
     4056        __ifdef(`TCR_IN_GPR')
    40574057        __(movq %csave0, %rcontext_reg)
    40584058        __endif
    40594059        __(movq %rsp,rcontext(tcr.foreign_sp))
    4060         __ifndef([TCR_IN_GPR])
     4060        __ifndef(`TCR_IN_GPR')
    40614061        __(clr %save3)
    40624062        __endif
     
    40834083        __(pop %save1)
    40844084        __(pop %save2)
    4085         __ifndef([TCR_IN_GPR])
     4085        __ifndef(`TCR_IN_GPR')
    40864086        __(pop %save3)
    40874087        __endif
     
    40964096        __(pop %temp0)
    40974097        __(leave)
    4098         __ifdef([DARWIN])
     4098        __ifdef(`DARWIN')
    40994099        __(btrq $TCR_FLAG_BIT_FOREIGN_EXCEPTION,rcontext(tcr.flags))
    41004100        __(jc 0f)
    41014101        __endif
    41024102        __(ret)
    4103         __ifdef([DARWIN])
     4103        __ifdef(`DARWIN')
    410441040:
    41054105        /* Unboxed foreign exception (likely an NSException) in %imm0. */
     
    41134113        __(jmp _SPksignalerr)
    41144114        __endif
    4115         __ifdef([DARWIN])       
     4115        __ifdef(`DARWIN')       
    41164116        /* Handle exceptions, for ObjC 2.0 */
    4117 LocalLabelPrefix[]ffcallLandingPad:     
     4117LocalLabelPrefix`'ffcallLandingPad:     
    41184118        __(movq %rax,%save1)
    41194119        __(cmpq $1,%rdx)
    41204120        __(je 1f)
    41214121        __(movq %rax,%rdi)
    4122 LocalLabelPrefix[]ffcallUnwindResume:           
     4122LocalLabelPrefix`'ffcallUnwindResume:           
    41234123        __(call *lisp_global(unwind_resume))
    4124 LocalLabelPrefix[]ffcallUnwindResume_end:         
     4124LocalLabelPrefix`'ffcallUnwindResume_end:         
    412541251:      __(movq %save1,%rdi)
    4126 LocalLabelPrefix[]ffcallBeginCatch:             
     4126LocalLabelPrefix`'ffcallBeginCatch:             
    41274127        __(call *lisp_global(objc2_begin_catch))
    4128 LocalLabelPrefix[]ffcallBeginCatch_end:         
     4128LocalLabelPrefix`'ffcallBeginCatch_end:         
    41294129        __(movq (%rax),%save1) /* indirection is necessary because we don't provide type info in lsda */
    4130 LocalLabelPrefix[]ffcallEndCatch:               
     4130LocalLabelPrefix`'ffcallEndCatch:               
    41314131        __(call *lisp_global(objc2_end_catch))
    4132 LocalLabelPrefix[]ffcallEndCatch_end:           
     4132LocalLabelPrefix`'ffcallEndCatch_end:           
    41334133        __(ref_global(get_tcr,%rax))
    41344134        __(movq $1,%rdi)
     
    41364136        __(btsq $TCR_FLAG_BIT_FOREIGN_EXCEPTION,tcr.flags(%rax))
    41374137        __(movq %save1,%rax)
    4138         __(jmp LocalLabelPrefix[]ffcall_call_end)
    4139 LocalLabelPrefix[]ffcall_end:   
     4138        __(jmp LocalLabelPrefix`'ffcall_call_end)
     4139LocalLabelPrefix`'ffcall_end:   
    41404140        __endif
    41414141_endsubp(ffcall)
    41424142
    4143         __ifdef([DARWIN])
     4143        __ifdef(`DARWIN')
    41444144        .section __DATA,__gcc_except_tab
    41454145GCC_except_table0:
     
    41844184
    41854185_spentry(ffcall_return_registers)
    4186 LocalLabelPrefix[]ffcall_return_registers:               
     4186LocalLabelPrefix`'ffcall_return_registers:               
    41874187        /* Unbox %arg_z.  It's either a fixnum or macptr (or bignum) ;
    41884188          if not a fixnum, get the first word */
     
    42014201        __(push %arg_y)
    42024202        __(push %arg_z)
    4203         __ifndef([TCR_IN_GPR])
     4203        __ifndef(`TCR_IN_GPR')
    42044204        __(push %save3)
    42054205        __endif
     
    42174217        __(ldmxcsr rcontext(tcr.foreign_mxcsr))
    42184218        __(movq (%rsp),%rbp)
    4219         __ifdef([DARWIN_GS_HACK])
     4219        __ifdef(`DARWIN_GS_HACK')
    42204220         /* At this point, %imm1=%rdx is live (contains
    42214221            the entrypoint) and %imm0.b=%al contains
     
    42364236         __(movq %csave3,%imm1)
    42374237        __endif
    4238         __ifdef([TCR_IN_GPR])
     4238        __ifdef(`TCR_IN_GPR')
    42394239        /* Preserve TCR pointer */
    42404240        __(movq %rcontext_reg, %csave1)
    42414241        __endif
    42424242        __(movq %imm1,%r11)
    4243 LocalLabelPrefix[]ffcall_return_registers_setup:
     4243LocalLabelPrefix`'ffcall_return_registers_setup:
    42444244        __(addq $2*node_size,%rsp)
    42454245        __(pop %carg0)
     
    42474247        __(pop %carg2)
    42484248        __(pop %carg3)
    4249         __ifdef([WINDOWS])
     4249        __ifdef(`WINDOWS')
    42504250        __(sub $0x20, %rsp) /* Make room for arg register spill */
    42514251        __else
     
    42534253        __(pop %carg5)
    42544254        __endif
    4255 LocalLabelPrefix[]ffcall_return_registers_setup_end:
    4256 LocalLabelPrefix[]ffcall_return_registers_call:
     4255LocalLabelPrefix`'ffcall_return_registers_setup_end:
     4256LocalLabelPrefix`'ffcall_return_registers_call:
    42574257        __(call *%r11)
    4258 LocalLabelPrefix[]ffcall_return_registers_call_end:
    4259         __ifdef([WINDOWS])
     4258LocalLabelPrefix`'ffcall_return_registers_call_end:
     4259        __ifdef(`WINDOWS')
    42604260        __(add $0x20, %rsp)
    42614261        __endif
     
    42654265        __(movsd %xmm1,24(%csave0))
    42664266        __(movq %rbp,%rsp)
    4267         __ifdef([DARWIN_GS_HACK])
     4267        __ifdef(`DARWIN_GS_HACK')
    42684268         /* %rax/%rdx contains the return value (maybe), %save0 still
    42694269            contains the linear tcr address.  Preserve %rax/%rdx here. */
     
    42744274         __(movsd 24(%csave0),%xmm1)
    42754275        __endif
    4276         __ifdef([TCR_IN_GPR])
     4276        __ifdef(`TCR_IN_GPR')
    42774277        __(movq %csave1, %rcontext_reg)
    42784278        __endif
    42794279        __(movq %rsp,rcontext(tcr.foreign_sp))       
    4280         __ifndef([TCR_IN_GPR])
     4280        __ifndef(`TCR_IN_GPR')
    42814281        __(clr %save3)
    42824282        __endif
     
    43044304        __(pop %save1)
    43054305        __(pop %save2)
    4306         __ifndef([TCR_IN_GPR])
     4306        __ifndef(`TCR_IN_GPR')
    43074307        __(pop %save3)
    43084308        __endif
     
    43164316        __(pop %temp0)
    43174317        __(leave)
    4318         __ifdef([DARWIN])
     4318        __ifdef(`DARWIN')
    43194319        __(btrq $TCR_FLAG_BIT_FOREIGN_EXCEPTION,rcontext(tcr.flags))
    43204320        __(jc 0f)
    43214321        __endif
    43224322        __(ret)
    4323         __ifdef([DARWIN])
     4323        __ifdef(`DARWIN')
    432443240:
    43254325        /* Unboxed foreign exception (likely an NSException) in %imm0. */
     
    43334333        __(jmp _SPksignalerr)
    43344334        __endif
    4335         __ifdef([DARWIN])       
     4335        __ifdef(`DARWIN')       
    43364336        /* Handle exceptions, for ObjC 2.0 */
    4337 LocalLabelPrefix[]ffcall_return_registersLandingPad:     
     4337LocalLabelPrefix`'ffcall_return_registersLandingPad:     
    43384338        __(movq %rax,%save1)
    43394339        __(cmpq $1,%rdx)
    43404340        __(je 1f)
    43414341        __(movq %rax,%rdi)
    4342 LocalLabelPrefix[]ffcall_return_registersUnwindResume:           
     4342LocalLabelPrefix`'ffcall_return_registersUnwindResume:           
    43434343        __(call *lisp_global(unwind_resume))
    4344 LocalLabelPrefix[]ffcall_return_registersUnwindResume_end:         
     4344LocalLabelPrefix`'ffcall_return_registersUnwindResume_end:         
    434543451:      __(movq %save1,%rdi)
    4346 LocalLabelPrefix[]ffcall_return_registersBeginCatch:             
     4346LocalLabelPrefix`'ffcall_return_registersBeginCatch:             
    43474347        __(call *lisp_global(objc2_begin_catch))
    4348 LocalLabelPrefix[]ffcall_return_registersBeginCatch_end:         
     4348LocalLabelPrefix`'ffcall_return_registersBeginCatch_end:         
    43494349        __(movq (%rax),%save1) /* indirection is necessary because we don't provide type info in lsda */
    4350 LocalLabelPrefix[]ffcall_return_registersEndCatch:               
     4350LocalLabelPrefix`'ffcall_return_registersEndCatch:               
    43514351        __(call *lisp_global(objc2_end_catch))
    4352 LocalLabelPrefix[]ffcall_return_registersEndCatch_end:           
     4352LocalLabelPrefix`'ffcall_return_registersEndCatch_end:           
    43534353        __(ref_global(get_tcr,%rax))
    43544354        __(movq $1,%rdi)
     
    43564356        __(btsq $TCR_FLAG_BIT_FOREIGN_EXCEPTION,tcr.flags(%rax))
    43574357        __(movq %save1,%rax)
    4358         __(jmp LocalLabelPrefix[]ffcall_return_registers_call_end)
    4359 LocalLabelPrefix[]ffcall_return_registers_end:   
     4358        __(jmp LocalLabelPrefix`'ffcall_return_registers_call_end)
     4359LocalLabelPrefix`'ffcall_return_registers_end:   
    43604360        __endif
    43614361_endsubp(ffcall_returning_registers)
    43624362
    4363         __ifdef([DARWIN])
     4363        __ifdef(`DARWIN')
    43644364        .section __DATA,__gcc_except_