Changeset 13503


Ignore:
Timestamp:
Mar 9, 2010, 5:37:29 PM (9 years ago)
Author:
gz
Message:

From trunk: assembler sources syntax cleanup

Location:
branches/working-0711/ccl
Files:
29 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl

  • branches/working-0711/ccl/level-1/l1-sockets.lisp

    • Property svn:mergeinfo deleted
  • branches/working-0711/ccl/lisp-kernel/errors.s

    r13070 r13503  
    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
  • branches/working-0711/ccl/lisp-kernel/imports.s

    r13070 r13503  
    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
  • branches/working-0711/ccl/lisp-kernel/linuxx8664/Makefile

    r13070 r13503  
    2424CDEBUG = -g
    2525COPT = -O2
     26# Once in a while, -Wformat says something useful.  The odds are against that,
     27# however.
     28WFORMAT = -Wno-format
    2629
    2730# If the linker supports a "--hash-style=" option, use traditional
     
    3942        $(M4) $(M4FLAGS) -I../ $< | $(AS)  $(ASFLAGS) -o $@
    4043.c.o:
    41         $(CC) -c $< $(CDEFINES) $(CDEBUG) $(COPT) -m64 -o $@
     44        $(CC) -c $< $(CDEFINES) $(CDEBUG) $(COPT) $(WFORMAT) -m64 -o $@
    4245
    4346SPOBJ = pad.o x86-spjump64.o x86-spentry64.o x86-subprims64.o
  • branches/working-0711/ccl/lisp-kernel/lisp.s

    r13070 r13503  
    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
  • branches/working-0711/ccl/lisp-kernel/m4macros.m4

    r13070 r13503  
    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
  • branches/working-0711/ccl/lisp-kernel/ppc-asmutils.s

    r13070 r13503  
    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))
  • branches/working-0711/ccl/lisp-kernel/ppc-constants.s

    r13263 r13503  
    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(errno)                   /* ADDRESS of errno */
    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 */
  • branches/working-0711/ccl/lisp-kernel/ppc-constants32.s

    r13070 r13503  
    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))
  • branches/working-0711/ccl/lisp-kernel/ppc-constants64.s

    r13070 r13503  
    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))
  • branches/working-0711/ccl/lisp-kernel/ppc-macros.s

    r13070 r13503  
    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')
  • branches/working-0711/ccl/lisp-kernel/ppc-spentry.s

    r13070 r13503  
    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))
  • branches/working-0711/ccl/lisp-kernel/ppc-spjump.s

    r13070 r13503  
    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
  • branches/working-0711/ccl/lisp-kernel/ppc-subprims.s

    r13070 r13503  
    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
  • branches/working-0711/ccl/lisp-kernel/ppc-uuo.s

    r13070 r13503  
    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)')
  • branches/working-0711/ccl/lisp-kernel/x86-asmutils32.s

    r13070 r13503  
    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)
  • branches/working-0711/ccl/lisp-kernel/x86-asmutils64.s

    r13070 r13503  
    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 */       
  • branches/working-0711/ccl/lisp-kernel/x86-constants.s

    r13263 r13503  
    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(errno)                   /* ADDRESS of errno   */
    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
  • branches/working-0711/ccl/lisp-kernel/x86-constants32.s

    r13409 r13503  
    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')               
  • branches/working-0711/ccl/lisp-kernel/x86-constants64.s

    r13409 r13503  
    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)
  • branches/working-0711/ccl/lisp-kernel/x86-macros.s

    r13070 r13503  
    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
  • branches/working-0711/ccl/lisp-kernel/x86-spentry32.s

    r13409 r13503  
    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         __(testl %ecx,%ecx)
    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         __(testl %ecx,%ecx)
    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         __(testl %ecx,%ecx)
    44234423         __(jne local_label(winapi_return))
     
    44254425        __(leave)
    44264426        __(ret)
    4427         __ifdef([WIN_32])
     4427        __ifdef(`WIN_32')
    44284428local_label(winapi_return):
    44294429          __(leave)
  • branches/working-0711/ccl/lisp-kernel/x86-spentry64.s

    r13409 r13503  
    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)
     
    26842684        __(cmpq $tstack_alloc_limit,%imm0)
    26852685        __(jae 1f)
    2686         __ifdef([WINDOWS])
     2686        __ifdef(`WINDOWS')
    26872687         __(windows_cstack_probe(%imm0,%arg_z))
    26882688        __endif
     
    27142714        __(cmpq $tstack_alloc_limit,%imm0)
    27152715        __(jae 9f)
    2716         __ifdef([WINDOWS])
     2716        __ifdef(`WINDOWS')
    27172717         __(windows_cstack_probe(%imm0,%arg_z))
    27182718        __endif       
     
    38123812_endsubp(builtin_memq)
    38133813
    3814         __ifdef([X8664])
     3814        __ifdef(`X8664')
    38153815logbitp_max_bit = 61
    38163816        __else
     
    39663966
    39673967_spentry(ffcall)
    3968 LocalLabelPrefix[]ffcall:               
     3968LocalLabelPrefix`'ffcall:               
    39693969        /* Unbox %arg_z.  It's either a fixnum or macptr (or bignum) ;
    39703970          if not a fixnum, get the first word */
     
    39843984        __(push %arg_z)
    39853985        __(push %fn)
    3986         __ifndef([TCR_IN_GPR])
     3986        __ifndef(`TCR_IN_GPR')
    39873987        __(push %save3) 
    39883988        __endif
     
    39983998        __(ldmxcsr rcontext(tcr.foreign_mxcsr))
    39993999        __(movq (%rsp),%rbp)
    4000         __ifdef([DARWIN_GS_HACK])
     4000        __ifdef(`DARWIN_GS_HACK')
    40014001         /* At this point, %imm1=%rdx is live (contains
    40024002            the entrypoint) and %imm0.b=%al contains
     
    40174017         __(movq %csave2,%imm0)
    40184018        __endif
    4019         __ifdef([TCR_IN_GPR])
     4019        __ifdef(`TCR_IN_GPR')
    40204020        /* Preserve TCR pointer */
    40214021        __(movq %rcontext_reg, %csave0)
    40224022        __endif
    4023 LocalLabelPrefix[]ffcall_setup:
     4023LocalLabelPrefix`'ffcall_setup:
    40244024        __(addq $2*node_size,%rsp)
    40254025        __(movq %imm1,%r11)
    4026         __ifdef([WINDOWS])
     4026        __ifdef(`WINDOWS')
    40274027         /* Leave 0x20 bytes of register spill area on stack */
    40284028         __(movq (%rsp),%carg0)
     
    40384038         __(pop %carg5)
    40394039        __endif
    4040 LocalLabelPrefix[]ffcall_setup_end:
    4041 LocalLabelPrefix[]ffcall_call:
     4040LocalLabelPrefix`'ffcall_setup_end:
     4041LocalLabelPrefix`'ffcall_call:
    40424042        __(call *%r11)
    4043 LocalLabelPrefix[]ffcall_call_end:               
    4044         __ifdef([WINDOWS])
     4043LocalLabelPrefix`'ffcall_call_end:               
     4044        __ifdef(`WINDOWS')
    40454045        __(add $0x20,%rsp)
    40464046        __endif
    40474047        __(movq %rbp,%rsp)
    4048         __ifdef([DARWIN_GS_HACK])
     4048        __ifdef(`DARWIN_GS_HACK')
    40494049         /* %rax/%rdx contains the return value (maybe), %csave1 still
    40504050            contains the linear tcr address.  Preserve %rax/%rdx here. */
     
    40554055         __(movq %csave2,%rdx)
    40564056        __endif
    4057         __ifdef([TCR_IN_GPR])
     4057        __ifdef(`TCR_IN_GPR')
    40584058        __(movq %csave0, %rcontext_reg)
    40594059        __endif
    40604060        __(movq %rsp,rcontext(tcr.foreign_sp))
    4061         __ifndef([TCR_IN_GPR])
     4061        __ifndef(`TCR_IN_GPR')
    40624062        __(clr %save3)
    40634063        __endif
     
    40844084        __(pop %save1)
    40854085        __(pop %save2)
    4086         __ifndef([TCR_IN_GPR])
     4086        __ifndef(`TCR_IN_GPR')
    40874087        __(pop %save3)
    40884088        __endif
     
    40974097        __(pop %temp0)
    40984098        __(leave)
    4099         __ifdef([DARWIN])
     4099        __ifdef(`DARWIN')
    41004100        __(btrq $TCR_FLAG_BIT_FOREIGN_EXCEPTION,rcontext(tcr.flags))
    41014101        __(jc 0f)
    41024102        __endif
    41034103        __(ret)
    4104         __ifdef([DARWIN])
     4104        __ifdef(`DARWIN')
    410541050:
    41064106        /* Unboxed foreign exception (likely an NSException) in %imm0. */
     
    41144114        __(jmp _SPksignalerr)
    41154115        __endif
    4116         __ifdef([DARWIN])       
     4116        __ifdef(`DARWIN')       
    41174117        /* Handle exceptions, for ObjC 2.0 */
    4118 LocalLabelPrefix[]ffcallLandingPad:     
     4118LocalLabelPrefix`'ffcallLandingPad:     
    41194119        __(movq %rax,%save1)
    41204120        __(cmpq $1,%rdx)
    41214121        __(je 1f)
    41224122        __(movq %rax,%rdi)
    4123 LocalLabelPrefix[]ffcallUnwindResume:           
     4123LocalLabelPrefix`'ffcallUnwindResume:           
    41244124        __(call *lisp_global(unwind_resume))
    4125 LocalLabelPrefix[]ffcallUnwindResume_end:         
     4125LocalLabelPrefix`'ffcallUnwindResume_end:         
    412641261:      __(movq %save1,%rdi)
    4127 LocalLabelPrefix[]ffcallBeginCatch:             
     4127LocalLabelPrefix`'ffcallBeginCatch:             
    41284128        __(call *lisp_global(objc2_begin_catch))
    4129 LocalLabelPrefix[]ffcallBeginCatch_end:         
     4129LocalLabelPrefix`'ffcallBeginCatch_end:         
    41304130        __(movq (%rax),%save1) /* indirection is necessary because we don't provide type info in lsda */
    4131 LocalLabelPrefix[]ffcallEndCatch:               
     4131LocalLabelPrefix`'ffcallEndCatch:               
    41324132        __(call *lisp_global(objc2_end_catch))
    4133 LocalLabelPrefix[]ffcallEndCatch_end:           
     4133LocalLabelPrefix`'ffcallEndCatch_end:           
    41344134        __(ref_global(get_tcr,%rax))
    41354135        __(movq $1,%rdi)
     
    41374137        __(btsq $TCR_FLAG_BIT_FOREIGN_EXCEPTION,tcr.flags(%rax))
    41384138        __(movq %save1,%rax)
    4139         __(jmp LocalLabelPrefix[]ffcall_call_end)
    4140 LocalLabelPrefix[]ffcall_end:   
     4139        __(jmp LocalLabelPrefix`'ffcall_call_end)
     4140LocalLabelPrefix`'ffcall_end:   
    41414141        __endif
    41424142_endsubp(ffcall)
    41434143
    4144         __ifdef([DARWIN])
     4144        __ifdef(`DARWIN')
    41454145        .section __DATA,__gcc_except_tab
    41464146GCC_except_table0:
     
    41854185
    41864186_spentry(ffcall_return_registers)
    4187 LocalLabelPrefix[]ffcall_return_registers:               
     4187LocalLabelPrefix`'ffcall_return_registers:               
    41884188        /* Unbox %arg_z.  It's either a fixnum or macptr (or bignum) ;
    41894189          if not a fixnum, get the first word */
     
    42024202        __(push %arg_y)
    42034203        __(push %arg_z)
    4204         __ifndef([TCR_IN_GPR])
     4204        __ifndef(`TCR_IN_GPR')
    42054205        __(push %save3)
    42064206        __endif
     
    42184218        __(ldmxcsr rcontext(tcr.foreign_mxcsr))
    42194219        __(movq (%rsp),%rbp)
    4220         __ifdef([DARWIN_GS_HACK])
     4220        __ifdef(`DARWIN_GS_HACK')
    42214221         /* At this point, %imm1=%rdx is live (contains
    42224222            the entrypoint) and %imm0.b=%al contains
     
    42374237         __(movq %csave3,%imm1)
    42384238        __endif
    4239         __ifdef([TCR_IN_GPR])
     4239        __ifdef(`TCR_IN_GPR')
    42404240        /* Preserve TCR pointer */
    42414241        __(movq %rcontext_reg, %csave1)
    42424242        __endif
    42434243        __(movq %imm1,%r11)
    4244 LocalLabelPrefix[]ffcall_return_registers_setup:
     4244LocalLabelPrefix`'ffcall_return_registers_setup:
    42454245        __(addq $2*node_size,%rsp)
    42464246        __(pop %carg0)
     
    42484248        __(pop %carg2)
    42494249        __(pop %carg3)
    4250         __ifdef([WINDOWS])
     4250        __ifdef(`WINDOWS')
    42514251        __(sub $0x20, %rsp) /* Make room for arg register spill */
    42524252        __else
     
    42544254        __(pop %carg5)
    42554255        __endif
    4256 LocalLabelPrefix[]ffcall_return_registers_setup_end:
    4257 LocalLabelPrefix[]ffcall_return_registers_call:
     4256LocalLabelPrefix`'ffcall_return_registers_setup_end:
     4257LocalLabelPrefix`'ffcall_return_registers_call:
    42584258        __(call *%r11)
    4259 LocalLabelPrefix[]ffcall_return_registers_call_end:
    4260         __ifdef([WINDOWS])
     4259LocalLabelPrefix`'ffcall_return_registers_call_end:
     4260        __ifdef(`WINDOWS')
    42614261        __(add $0x20, %rsp)
    42624262        __endif
     
    42664266        __(movsd %xmm1,24(%csave0))
    42674267        __(movq %rbp,%rsp)
    4268         __ifdef([DARWIN_GS_HACK])
     4268        __ifdef(`DARWIN_GS_HACK')
    42694269         /* %rax/%rdx contains the return value (maybe), %save0 still
    42704270            contains the linear tcr address.  Preserve %rax/%rdx here. */
     
    42754275         __(movsd 24(%csave0),%xmm1)
    42764276        __endif
    4277         __ifdef([TCR_IN_GPR])
     4277        __ifdef(`TCR_IN_GPR')
    42784278        __(movq %csave1, %rcontext_reg)
    42794279        __endif
    42804280        __(movq %rsp,rcontext(tcr.foreign_sp))       
    4281         __ifndef([TCR_IN_GPR])
     4281        __ifndef(`TCR_IN_GPR')
    42824282        __(clr %save3)
    42834283        __endif
     
    43054305        __(pop %save1)
    43064306        __(pop %save2)
    4307         __ifndef([TCR_IN_GPR])
     4307        __ifndef(`TCR_IN_GPR')
    43084308        __(pop %save3)
    43094309        __endif
     
    43174317        __(pop %temp0)
    43184318        __(leave)
    4319         __ifdef([DARWIN])
     4319        __ifdef(`DARWIN')
    43204320