Changeset 14515


Ignore:
Timestamp:
Dec 26, 2010, 6:24:42 PM (14 years ago)
Author:
Gary Byers
Message:

Some ARM implementations (the Qualcomm Snapdragon for one) will signal an
UNDEFINED-INSTRUCTION exception on a conditional UUO, even if
the condition is false; that basically means that we have to
branch around unconditional UUOs in order to run on such machines.

handle_alloc_trap() can recognize the extra branch in the consing
sequence; pc_luser_xp() needs to, but doesn't yet.

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

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/arm-exceptions.c

    r14366 r14515  
    9797  pc program_counter = xpPC(xp);
    9898  opcode instr = *program_counter, prev_instr;
     99  int delta = -3;
    99100
    100101  if (IS_ALLOC_TRAP(instr)) {
    101102    /* The alloc trap must have been preceded by a cmp and a
    102103       load from tcr.allocbase. */
    103     prev_instr = program_counter[-3];
     104    if (IS_BRANCH_AROUND_ALLOC_TRAP(program_counter[-1])) {
     105      delta = -4;
     106    }
     107    prev_instr = program_counter[delta];
    104108
    105109    if (IS_SUB_RM_FROM_ALLOCPTR(prev_instr)) {
     
    114118      natural disp = ror(prev_instr&0xff,(prev_instr&0xf00)>>7);
    115119
    116       instr = program_counter[-4];
     120      instr = program_counter[delta-1];
    117121      if (IS_SUB_LO_FROM_ALLOCPTR(instr)) {
    118122        return -((signed_natural)(disp | (instr & 0xff)));
  • trunk/source/lisp-kernel/arm-exceptions.h

    r14354 r14515  
    8686#define IS_SET_ALLOCPTR_RESULT_RD(i) (((i)&0x0fff0fff) == 0x01a0000c)
    8787#define IS_CLR_ALLOCPTR_TAG(i)       (((i)&0x0fffffff) == 0x03ccc007)
     88#define IS_BRANCH_AROUND_ALLOC_TRAP(i) (((i)&0x0fffffff) == 0x0a000000)
    8889
    8990
  • trunk/source/lisp-kernel/arm-macros.s

    r14169 r14515  
    255255
    256256define(`trap_unless_lisptag_equal',`
     257        new_macro_labels()
    257258        __(extract_lisptag($3,$1))
    258259        __(cmp $3,#$2)
    259         __(uuo_error_reg_not_lisptag(ne,$3,$2))
     260        __(beq macro_label(ok))
     261        __(uuo_error_reg_not_lisptag(al,$3,$2))
     262macro_label(ok):               
    260263')
    261264
     
    265268
    266269define(`trap_unless_fixnum',`
     270        __(new_macro_labels())
    267271        __(test_fixnum($1))
    268         __(uuo_error_reg_not_lisptag(ne,$1,tag_fixnum))
     272        __(beq macro_label(ok))
     273        __(uuo_error_reg_not_lisptag(al,$1,tag_fixnum))
     274macro_label(ok):       
    269275        ')
    270276               
    271277define(`trap_unless_fulltag_equal',`
     278        new_macro_labels()
    272279        __(extract_fulltag($3,$1))
    273280        __(cmp $3,#$2)
    274         __(uuo_error_reg_not_fulltag(ne,$1,$2))
     281        __(beq macro_label(ok))
     282        __(uuo_error_reg_not_fulltag(al,$1,$2))
     283macro_label(ok):       
    275284')
    276285       
    277286define(`trap_unless_typecode_equal',`
     287        new_macro_labels()
    278288        __(extract_typecode($3,$1))
    279289        __(cmp $3,#$2)
    280         __(uuo_error_reg_not_xtype(ne,$2))
     290        __(beq macro_label(ok))
     291        __(uuo_error_reg_not_xtype(al,$2))
     292macro_label(ok):               
    281293')
    282294       
     
    312324        __(cmpne imm0,#subtag_function)
    313325        __(ldreq pc,[nfn,#_function.entrypoint])
    314         __(uuo_error_not_callable(ne,nfn))
     326        __(uuo_error_not_callable(al,nfn))
    315327
    316328')
     
    352364
    353365define(`Cons',`
     366        new_macro_labels()
    354367        __(add allocptr,allocptr,#-cons.size+fulltag_cons)
    355368        __(ldr allocbase,[rcontext,#tcr.save_allocbase])
    356369        __(cmp allocptr,allocbase)
    357         __(uuo_alloc_trap(lo))
     370        __(bhi macro_label(ok))
     371        __(uuo_alloc_trap(al))
     372macro_label(ok):               
    358373        __(str $3,[allocptr,#cons.cdr])
    359374        __(str $2,[allocptr,#cons.car])
     
    388403
    389404define(`Misc_Alloc',`
     405        new_macro_labels()
    390406        __(sub $3,$3,#fulltag_misc)
    391407        __(sub allocptr,allocptr,$3)
    392408        __(ldr allocbase,[rcontext,#tcr.save_allocbase])
    393409        __(cmp allocptr,allocbase)
    394         __(uuo_alloc_trap(lo))
     410        __(bhi macro_label(ok))
     411        __(uuo_alloc_trap(al))
     412macro_label(ok):               
    395413        __(str $2,[allocptr,#misc_header_offset])
    396414        __(mov $1,allocptr)
     
    400418/*  Parameters $1, $2 as above; $3 = physical size constant. */
    401419define(`Misc_Alloc_Fixed',`
     420        new_macro_labels()
    402421        __(add allocptr,allocptr,#(-$3)+fulltag_misc)
    403422        __(ldr allocbase,[rcontext,#tcr.save_allocbase])
    404423        __(cmp allocptr,allocbase)
    405         __(uuo_alloc_trap(lo))
     424        __(bhi macro_label(ok))
     425        __(uuo_alloc_trap(al))
     426macro_label(ok):               
    406427        __(str $2,[allocptr,#misc_header_offset])
    407428        __(mov $1,allocptr)
     
    439460        __(ldr $1,[rcontext,#tcr.interrupt_pending])
    440461        __(cmp $1,0)
    441         __(uuo_interrupt_now(gt))
     462        __(ble $2)
     463        __(uuo_interrupt_now(al))
    442464        ')
    443465       
     
    448470        __(cmp $1,#0)
    449471        __(blt macro_label(done))
    450         __(check_enabled_pending_interrupt($1))
     472        __(check_enabled_pending_interrupt($1,macro_label(done)))
    451473macro_label(done):
    452474')
  • trunk/source/lisp-kernel/arm-spentry.s

    r14495 r14515  
    388388        __(ldr imm0,[rcontext,#tcr.tlb_limit])
    389389        __(cmp imm0,imm1)
    390         __(uuo_tlb_too_small(ls,imm1))
     390        __(bhi 1f)
     391        __(uuo_tlb_too_small(al,imm1))
     3921:             
    391393        __(cmp imm1,#0)
    392394        __(ldr imm2,[rcontext,#tcr.tlb_pointer])
     
    631633        __(beq 9f)
    632634        __(cmp imm0,imm1)
    633         __(uuo_tlb_too_small(ls,imm1))
     635        __(bhi 1f)
     636        __(uuo_tlb_too_small(al,imm1))
     6371:             
    634638        __(ldr temp2,[rcontext,#tcr.tlb_pointer])
    635639        __(ldr imm0,[rcontext,#tcr.db_link])
     
    661665        __(beq 9f)
    662666        __(cmp imm0,imm1)
    663         __(uuo_tlb_too_small(ls,imm1))
     667        __(bhi 1f)
     668        __(uuo_tlb_too_small(al,imm1))
     6691:             
    664670        __(ldr temp2,[rcontext,#tcr.tlb_pointer])
    665671        __(ldr imm0,[rcontext,#tcr.db_link])
     
    669675        __(ldreq temp0,[arg_z,#symbol.vcell])
    670676        __(cmp temp0,#unbound_marker)
    671         __(uuo_error_unbound(eq,arg_z))
     677        __(bne 2f)
     678        __(uuo_error_unbound(al,arg_z))
     6792:             
    672680        __(vpush1(temp1))   /* old tlb contents */
    673681        __(vpush1(imm1))    /* tlb index */
     
    10431051_spentry(stack_misc_alloc)
    10441052        __(tst arg_y,#unsigned_byte_24_mask)
    1045         __(uuo_error_reg_not_xtype(ne,arg_y,xtype_unsigned_byte_24))
     1053        __(beq 1f)
     1054        __(uuo_error_reg_not_xtype(al,arg_y,xtype_unsigned_byte_24))
     10551:             
    10461056        __(unbox_fixnum(imm0,arg_z))
    10471057        __(extract_fulltag(imm1,imm0))
     
    16051615        __(vector_length(imm0,arg_y,imm1))
    16061616        __(cmp arg_z,imm0)
    1607         __(uuo_error_vector_bounds(hs,arg_z,arg_y))
     1617        __(blo 1f)
     1618        __(uuo_error_vector_bounds(al,arg_z,arg_y))
     16191:             
    16081620        __(extract_lowbyte(imm1,imm1)) /* imm1 = subtag  */
    16091621        __(b C(misc_ref_common))
     
    16161628        __(vector_length(imm0,arg_y,imm1))
    16171629        __(cmp arg_z,imm0)
    1618         __(uuo_error_vector_bounds(hs,arg_z,arg_y))
     1630        __(blo 1f)
     1631        __(uuo_error_vector_bounds(al,arg_z,arg_y))
     16321:             
    16191633        __(unbox_fixnum(imm1,arg_x))
    16201634        __(b C(misc_ref_common))
     
    18561870        __(extract_typecode(imm0,arg_z))
    18571871        __(cmp imm0,#subtag_bignum)
    1858         __(uuo_error_reg_not_xtype(ne,arg_z,xtype_integer))
     1872        __(beq 1f)
     1873        __(uuo_error_reg_not_xtype(al,arg_z,xtype_integer))
     18741:             
    18591875        __(getvheader(imm1,arg_z))
    18601876        __(header_length(imm0,imm1)) /* boxed length = scaled size  */
     
    18731889        __(vector_length(imm0,arg_x,imm1))
    18741890        __(cmp arg_y,imm0)
    1875         __(uuo_error_vector_bounds(hs,arg_y,arg_x))
     1891        __(blo 1f)
     1892        __(uuo_error_vector_bounds(al,arg_y,arg_x))
     18931:             
    18761894        __(unbox_fixnum(imm1,temp0))
    18771895        __(b C(misc_set_common))
     
    18871905        __(vector_length(imm0,arg_x,imm1))
    18881906        __(cmp arg_y,imm0)
    1889         __(uuo_error_vector_bounds(hs,arg_y,arg_x))
     1907        __(blo 1f)
     1908        __(uuo_error_vector_bounds(al,arg_y,arg_x))
     19091:             
    18901910        __(extract_lowbyte(imm1,imm1))
    18911911        __(b C(misc_set_common))
     
    20362056_spentry(stack_misc_alloc_init)
    20372057        __(tst arg_x,#unsigned_byte_24_mask)
    2038         __(uuo_error_reg_not_xtype(ne,arg_x,xtype_unsigned_byte_24))
     2058        __(beq 1f)
     2059        __(uuo_error_reg_not_xtype(al,arg_x,xtype_unsigned_byte_24))
     20601:             
    20392061        __(unbox_fixnum(imm0,arg_y))
    20402062        __(extract_fulltag(imm1,imm0))
    20412063        __(cmp imm1,#fulltag_nodeheader)
    2042         __(bne 1f)
     2064        __(bne stack_misc_alloc_init_ivector)
    20432065        __(dnode_align(imm1,arg_x,node_size))
    20442066        __(cmp imm1,#stack_alloc_limit)
    2045         __(bge 0f)
     2067        __(bge stack_misc_alloc_init_no_room)
    20462068        __(mov imm0,#subtag_u32_vector)
    20472069        __(orr imm0,imm0,arg_x,lsl #num_subtag_bits-fixnumshift)
     
    20552077        __(stmdb sp!,{temp0,temp1})
    20562078        __(b initialize_vector)
    2057 1:      __(mov imm0,arg_x,lsl #num_subtag_bits-fixnumshift)
    2058         __(orr imm0,imm0,arg_y,lsr #fixnumshift)
    2059         __(cmp arg_y,#max_32_bit_ivector_subtag<<fixnumshift)
    2060         __(movle imm1,arg_x)
    2061         __(ble 8f)
    2062         __(cmp arg_y,#max_8_bit_ivector_subtag<<fixnumshift)
    2063         __(movle imm1,arg_x,lsr #fixnumshift)
    2064         __(ble 8f)
    2065         __(cmp arg_y,#max_16_bit_ivector_subtag<<fixnumshift)
    2066         __(movle imm1,arg_x,lsr #1)
    2067         __(ble 8f)
    2068         __(cmp arg_y,#subtag_double_float)
    2069         __(moveq imm1,arg_x,lsl #1)
    2070         __(addeq imm1,imm1,#node_size)
    2071         __(addne imm1,arg_x,#7<<fixnumshift)
    2072         __(movne imm1,imm1,lsr#3+fixnumshift)
    2073 8:      __(dnode_align(imm1,imm1,node_size))
    2074         __(cmp imm1,#stack_alloc_limit)
    2075         __(bhs 0f)
    2076         __(mov temp0,#stack_alloc_marker)
    2077         __(mov temp1,sp)
    2078         __(stack_allocate_zeroed_ivector(imm0,imm1))
    2079         __(mov arg_y,arg_z)
    2080         __(add arg_z,sp,#fulltag_misc)
    2081         __(stmdb sp!,{temp0,temp1})
    2082         __(b initialize_vector)
    20832079
    20842080 
     
    20872083C(popj):
    20882084        __(return_lisp_frame(imm0))
    2089        
    2090 /* Too large to safely fit on tstack.  Heap-cons the vector, but make  */
    2091 /* sure that there's an empty tsp frame to keep the compiler happy.  */
    2092 0:
    2093         __(mov imm0,#stack_alloc_marker)
    2094         __(mov imm1,sp)
    2095         __(stmdb sp!,{imm0,imm1})
    2096         __(b _SPmisc_alloc_init)
     2085
    20972086
    20982087
     
    21882177        __(movc16(imm1,two_digit_bignum_header))
    21892178        __(cmp imm1,imm2)
    2190         __(uuo_error_reg_not_xtype(ne,arg_z,xtype_s64))
     2179        __(beq 1f)
     2180        __(uuo_error_reg_not_xtype(al,arg_z,xtype_s64))
     21811:             
    21912182        __(vrefr(imm1,arg_z,1))
    21922183        __(vrefr(imm0,arg_z,0))
     
    22192210        __(ldreq arg_z,[arg_y,#symbol.vcell])
    22202211        __(cmp arg_z,#unbound_marker)
    2221         __(uuo_error_unbound(eq,arg_y))
     2212        __(bxne lr)
     2213        __(uuo_error_unbound(al,arg_y))
    22222214        __(bx lr)
    22232215
     
    22482240        __(extract_lisptag(imm0,arg_z))
    22492241        __(cmp imm0,#tag_misc)
    2250         __(uuo_error_reg_not_xtype(ne,arg_z,xtype_s32))
     2242        __(beq 1f)
     2243        __(uuo_error_reg_not_xtype(al,arg_z,xtype_s32))
     22441:             
    22512245        __(getvheader(imm0,arg_z))
    22522246        __(movc16(imm1,one_digit_bignum_header))
    22532247        __(cmp imm0,imm1)
    2254         __(uuo_error_reg_not_xtype(ne,arg_z,xtype_s32))
     2248        __(beq 2f)
     2249        __(uuo_error_reg_not_xtype(al,arg_z,xtype_s32))
     22502:             
    22552251        __(vrefr(imm0,arg_z,0))
    22562252        __(bx lr)       
     
    22692265        __(extract_lisptag(imm0,arg_z))
    22702266        __(cmp imm0,#tag_misc)
    2271         __(uuo_error_reg_not_xtype(ne,arg_z,xtype_u32))
     2267        __(beq 1f)
     2268        __(uuo_error_reg_not_xtype(al,arg_z,xtype_u32))
     22691:             
    22722270        __(getvheader(imm0,arg_z))
    22732271        __(cmp imm0,imm1)
     
    22802278        __(cmpeq imm1,#0)
    22812279        __(bxeq lr)
    2282         __(uuo_error_reg_not_xtype(ne,arg_z,xtype_u32))
     2280        __(uuo_error_reg_not_xtype(al,arg_z,xtype_u32))
    228322817:             
    22842282        __(movs imm1,imm0,asr #31)
    22852283        __(bxeq lr)
    2286         __(uuo_error_reg_not_xtype(ne,arg_z,xtype_u32))
     2284        __(uuo_error_reg_not_xtype(al,arg_z,xtype_u32))
    22872285
    22882286
     
    23682366        __(ldrlt temp0,[rcontext,#tcr.interrupt_pending])
    23692367        __(cmp temp0,#0)
    2370         __(uuo_interrupt_now(gt))
     2368        __(bxle lr)
     2369        __(uuo_interrupt_now(al))
    23712370        __(bx lr)
    23722371       
     
    24242423        __(cmp temp1,#0)
    24252424        __(bxlt lr)
    2426         __(check_enabled_pending_interrupt(imm0))
     2425        __(check_enabled_pending_interrupt(imm0,1f))
     24261:             
    24272427        __(bx lr)
    242824285:       /* Missed a suspend request; force suspend now if we're restoring
     
    24492449        __(ldreq imm1,[arg_x,#arrayH.rank])
    24502450        __(cmpeq imm1,#2<<fixnumshift)
    2451         __(uuo_error_reg_not_xtype(ne,arg_x,xtype_array2d))
     2451        __(beq 1f)
     2452        __(uuo_error_reg_not_xtype(al,arg_x,xtype_array2d))
     24531:             
    24522454        /* It's a 2-dimensional array.  Check bounds */
    24532455        __(ldr imm0,[arg_x,#arrayH.dim0])
    24542456        __(cmp arg_y,imm0)
    2455         __(uuo_error_array_bounds(hs,arg_y,arg_x))
     2457        __(blo 2f)
     2458        __(uuo_error_array_bounds(al,arg_y,arg_x))
     24592:             
    24562460        __(ldr imm0,[arg_x,#arrayH.dim0+node_size])
    24572461        __(cmp arg_z,imm0)
    2458         __(uuo_error_array_bounds(hs,arg_z,arg_x))
     2462        __(blo 3f)
     2463        __(uuo_error_array_bounds(al,arg_z,arg_x))
     24643:             
    24592465        __(unbox_fixnum(imm0,imm0))
    24602466        __(mul temp0,arg_y,imm0) /* no MLA on ARMv5 */
     
    24812487        __(ldreq imm1,[temp0,#arrayH.rank])
    24822488        __(cmp imm1,#3<<fixnumshift)
    2483         __(uuo_error_reg_not_xtype(ne,temp0,xtype_array3d))
     2489        __(beq 1f)
     2490        __(uuo_error_reg_not_xtype(al,temp0,xtype_array3d))
     24911:             
    24842492        /* It's a 3-dimensional array.  Check bounds */
    24852493        __(ldr imm2,[temp0,arrayH.dim0+(node_size*2)])
     
    24872495        __(ldr imm0,[temp0,#arrayH.dim0])
    24882496        __(cmp arg_z,imm2)
    2489         __(uuo_error_array_bounds(hs,arg_z,temp0))
     2497        __(blo 2f)
     2498        __(uuo_error_array_bounds(al,arg_z,temp0))
     24992:             
    24902500        __(cmp arg_y,imm1)
    2491         __(uuo_error_array_bounds(hs,arg_y,temp0))
     2501        __(blo 3f)
     2502        __(uuo_error_array_bounds(al,arg_y,temp0))
     25033:             
    24922504        __(cmp arg_x,imm0)
    2493         __(uuo_error_array_bounds(hs,arg_x,temp0))
     2505        __(blo 4f)
     2506        __(uuo_error_array_bounds(al,arg_x,temp0))
     25074:             
    24942508        __(unbox_fixnum(imm2,imm2))
    24952509        __(unbox_fixnum(imm1,imm1))
     
    25172531        __(ldreq imm0,[temp0,#arrayH.rank])
    25182532        __(cmpeq imm0,#2<<fixnumshift)
    2519         __(uuo_error_reg_not_xtype(ne,temp0,xtype_array2d))
     2533        __(beq 1f)
     2534        __(uuo_error_reg_not_xtype(al,temp0,xtype_array2d))
     25351:             
    25202536        __(trap_unless_fixnum(arg_x))
    25212537        __(trap_unless_fixnum(arg_y))
     
    25232539        __(ldr imm0,[temp0,#arrayH.dim0])
    25242540        __(cmp arg_x,imm0)
    2525         __(uuo_error_array_bounds(hs,arg_x,temp0))
     2541        __(blo 2f)
     2542        __(uuo_error_array_bounds(al,arg_x,temp0))
     25432:             
    25262544        __(ldr imm0,[temp0,#arrayH.dim0+node_size])
    25272545        __(cmp arg_y,imm0)
    2528         __(uuo_error_array_bounds(hs,arg_y,temp0))
     2546        __(blo 3f)
     2547        __(uuo_error_array_bounds(al,arg_y,temp0))
     25483:             
    25292549        __(unbox_fixnum(imm0,imm0))
    25302550        __(mul temp1,arg_x,imm0)
     
    25482568        __(ldreq imm0,[temp1,#arrayH.rank])
    25492569        __(cmpeq imm0,#3<<fixnumshift)
    2550         __(uuo_error_reg_not_xtype(ne,temp1,xtype_array3d))
     2570        __(beq 1f)
     2571        __(uuo_error_reg_not_xtype(al,temp1,xtype_array3d))
     25721:             
    25512573        __(trap_unless_fixnum(temp0))
    25522574        __(trap_unless_fixnum(arg_x))
     
    25572579        __(ldr imm0,[temp1,#arrayH.dim0])
    25582580        __(cmp arg_y,imm2)
    2559         __(uuo_error_array_bounds(hs,arg_y,temp1))
     2581        __(blo 2f)
     2582        __(uuo_error_array_bounds(al,arg_y,temp1))
     25832:             
    25602584        __(cmp arg_x,imm1)
    2561         __(uuo_error_array_bounds(hs,arg_x,temp1))
     2585        __(blo 3f)
     2586        __(uuo_error_array_bounds(al,arg_x,temp1))
     25873:             
    25622588        __(unbox_fixnum(imm1,imm1))
    25632589        __(cmp temp0,imm0)
    2564         __(uuo_error_array_bounds(hs,temp0,temp1))
     2590        __(blo 4f)
     2591        __(uuo_error_array_bounds(al,temp0,temp1))
     25924:             
    25652593        __(mul arg_x,imm2,arg_x)
    25662594        __(mul imm1,imm2,imm1)
     
    41744202        __(_cdr(arg_y,arg_y))
    41754203        __(cmp imm2,imm0)
    4176         __(uuo_tlb_too_small(ls,imm0))
     4204        __(bhi 4f)
     4205        __(uuo_tlb_too_small(al,imm0))
     42064:             
    41774207        __(ldr arg_x,[rcontext,#tcr.tlb_pointer])
    41784208        __(ldr temp0,[arg_x,imm0])
     
    42044234        __(b _SPmisc_alloc)
    42054235_endfn       
    4206         _endfile
     4236_exportfn(stack_misc_alloc_init_no_room)
     4237/* Too large to safely fit on tstack.  Heap-cons the vector, but make  */
     4238/* sure that there's an empty tsp frame to keep the compiler happy.  */
     4239        __(mov imm0,#stack_alloc_marker)
     4240        __(mov imm1,sp)
     4241        __(stmdb sp!,{imm0,imm1})
     4242        __(b _SPmisc_alloc_init)
     4243_endfn       
     4244_exportfn(stack_misc_alloc_init_ivector)
     4245        __(mov imm0,arg_x,lsl #num_subtag_bits-fixnumshift)
     4246        __(orr imm0,imm0,arg_y,lsr #fixnumshift)
     4247        __(cmp arg_y,#max_32_bit_ivector_subtag<<fixnumshift)
     4248        __(movle imm1,arg_x)
     4249        __(ble 8f)
     4250        __(cmp arg_y,#max_8_bit_ivector_subtag<<fixnumshift)
     4251        __(movle imm1,arg_x,lsr #fixnumshift)
     4252        __(ble 8f)
     4253        __(cmp arg_y,#max_16_bit_ivector_subtag<<fixnumshift)
     4254        __(movle imm1,arg_x,lsr #1)
     4255        __(ble 8f)
     4256        __(cmp arg_y,#subtag_double_float)
     4257        __(moveq imm1,arg_x,lsl #1)
     4258        __(addeq imm1,imm1,#node_size)
     4259        __(addne imm1,arg_x,#7<<fixnumshift)
     4260        __(movne imm1,imm1,lsr#3+fixnumshift)
     42618:      __(dnode_align(imm1,imm1,node_size))
     4262        __(cmp imm1,#stack_alloc_limit)
     4263        __(bhs stack_misc_alloc_init_no_room)
     4264        __(mov temp0,#stack_alloc_marker)
     4265        __(mov temp1,sp)
     4266        __(stack_allocate_zeroed_ivector(imm0,imm1))
     4267        __(mov arg_y,arg_z)
     4268        __(add arg_z,sp,#fulltag_misc)
     4269        __(stmdb sp!,{temp0,temp1})
     4270        __(b initialize_vector)
     4271_endfn       
     4272                _endfile
Note: See TracChangeset for help on using the changeset viewer.