Changeset 14515
- Timestamp:
- Dec 26, 2010, 6:24:42 PM (14 years ago)
- Location:
- trunk/source/lisp-kernel
- Files:
-
- 4 edited
-
arm-exceptions.c (modified) (2 diffs)
-
arm-exceptions.h (modified) (1 diff)
-
arm-macros.s (modified) (8 diffs)
-
arm-spentry.s (modified) (29 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/lisp-kernel/arm-exceptions.c
r14366 r14515 97 97 pc program_counter = xpPC(xp); 98 98 opcode instr = *program_counter, prev_instr; 99 int delta = -3; 99 100 100 101 if (IS_ALLOC_TRAP(instr)) { 101 102 /* The alloc trap must have been preceded by a cmp and a 102 103 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]; 104 108 105 109 if (IS_SUB_RM_FROM_ALLOCPTR(prev_instr)) { … … 114 118 natural disp = ror(prev_instr&0xff,(prev_instr&0xf00)>>7); 115 119 116 instr = program_counter[ -4];120 instr = program_counter[delta-1]; 117 121 if (IS_SUB_LO_FROM_ALLOCPTR(instr)) { 118 122 return -((signed_natural)(disp | (instr & 0xff))); -
trunk/source/lisp-kernel/arm-exceptions.h
r14354 r14515 86 86 #define IS_SET_ALLOCPTR_RESULT_RD(i) (((i)&0x0fff0fff) == 0x01a0000c) 87 87 #define IS_CLR_ALLOCPTR_TAG(i) (((i)&0x0fffffff) == 0x03ccc007) 88 #define IS_BRANCH_AROUND_ALLOC_TRAP(i) (((i)&0x0fffffff) == 0x0a000000) 88 89 89 90 -
trunk/source/lisp-kernel/arm-macros.s
r14169 r14515 255 255 256 256 define(`trap_unless_lisptag_equal',` 257 new_macro_labels() 257 258 __(extract_lisptag($3,$1)) 258 259 __(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)) 262 macro_label(ok): 260 263 ') 261 264 … … 265 268 266 269 define(`trap_unless_fixnum',` 270 __(new_macro_labels()) 267 271 __(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)) 274 macro_label(ok): 269 275 ') 270 276 271 277 define(`trap_unless_fulltag_equal',` 278 new_macro_labels() 272 279 __(extract_fulltag($3,$1)) 273 280 __(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)) 283 macro_label(ok): 275 284 ') 276 285 277 286 define(`trap_unless_typecode_equal',` 287 new_macro_labels() 278 288 __(extract_typecode($3,$1)) 279 289 __(cmp $3,#$2) 280 __(uuo_error_reg_not_xtype(ne,$2)) 290 __(beq macro_label(ok)) 291 __(uuo_error_reg_not_xtype(al,$2)) 292 macro_label(ok): 281 293 ') 282 294 … … 312 324 __(cmpne imm0,#subtag_function) 313 325 __(ldreq pc,[nfn,#_function.entrypoint]) 314 __(uuo_error_not_callable( ne,nfn))326 __(uuo_error_not_callable(al,nfn)) 315 327 316 328 ') … … 352 364 353 365 define(`Cons',` 366 new_macro_labels() 354 367 __(add allocptr,allocptr,#-cons.size+fulltag_cons) 355 368 __(ldr allocbase,[rcontext,#tcr.save_allocbase]) 356 369 __(cmp allocptr,allocbase) 357 __(uuo_alloc_trap(lo)) 370 __(bhi macro_label(ok)) 371 __(uuo_alloc_trap(al)) 372 macro_label(ok): 358 373 __(str $3,[allocptr,#cons.cdr]) 359 374 __(str $2,[allocptr,#cons.car]) … … 388 403 389 404 define(`Misc_Alloc',` 405 new_macro_labels() 390 406 __(sub $3,$3,#fulltag_misc) 391 407 __(sub allocptr,allocptr,$3) 392 408 __(ldr allocbase,[rcontext,#tcr.save_allocbase]) 393 409 __(cmp allocptr,allocbase) 394 __(uuo_alloc_trap(lo)) 410 __(bhi macro_label(ok)) 411 __(uuo_alloc_trap(al)) 412 macro_label(ok): 395 413 __(str $2,[allocptr,#misc_header_offset]) 396 414 __(mov $1,allocptr) … … 400 418 /* Parameters $1, $2 as above; $3 = physical size constant. */ 401 419 define(`Misc_Alloc_Fixed',` 420 new_macro_labels() 402 421 __(add allocptr,allocptr,#(-$3)+fulltag_misc) 403 422 __(ldr allocbase,[rcontext,#tcr.save_allocbase]) 404 423 __(cmp allocptr,allocbase) 405 __(uuo_alloc_trap(lo)) 424 __(bhi macro_label(ok)) 425 __(uuo_alloc_trap(al)) 426 macro_label(ok): 406 427 __(str $2,[allocptr,#misc_header_offset]) 407 428 __(mov $1,allocptr) … … 439 460 __(ldr $1,[rcontext,#tcr.interrupt_pending]) 440 461 __(cmp $1,0) 441 __(uuo_interrupt_now(gt)) 462 __(ble $2) 463 __(uuo_interrupt_now(al)) 442 464 ') 443 465 … … 448 470 __(cmp $1,#0) 449 471 __(blt macro_label(done)) 450 __(check_enabled_pending_interrupt($1 ))472 __(check_enabled_pending_interrupt($1,macro_label(done))) 451 473 macro_label(done): 452 474 ') -
trunk/source/lisp-kernel/arm-spentry.s
r14495 r14515 388 388 __(ldr imm0,[rcontext,#tcr.tlb_limit]) 389 389 __(cmp imm0,imm1) 390 __(uuo_tlb_too_small(ls,imm1)) 390 __(bhi 1f) 391 __(uuo_tlb_too_small(al,imm1)) 392 1: 391 393 __(cmp imm1,#0) 392 394 __(ldr imm2,[rcontext,#tcr.tlb_pointer]) … … 631 633 __(beq 9f) 632 634 __(cmp imm0,imm1) 633 __(uuo_tlb_too_small(ls,imm1)) 635 __(bhi 1f) 636 __(uuo_tlb_too_small(al,imm1)) 637 1: 634 638 __(ldr temp2,[rcontext,#tcr.tlb_pointer]) 635 639 __(ldr imm0,[rcontext,#tcr.db_link]) … … 661 665 __(beq 9f) 662 666 __(cmp imm0,imm1) 663 __(uuo_tlb_too_small(ls,imm1)) 667 __(bhi 1f) 668 __(uuo_tlb_too_small(al,imm1)) 669 1: 664 670 __(ldr temp2,[rcontext,#tcr.tlb_pointer]) 665 671 __(ldr imm0,[rcontext,#tcr.db_link]) … … 669 675 __(ldreq temp0,[arg_z,#symbol.vcell]) 670 676 __(cmp temp0,#unbound_marker) 671 __(uuo_error_unbound(eq,arg_z)) 677 __(bne 2f) 678 __(uuo_error_unbound(al,arg_z)) 679 2: 672 680 __(vpush1(temp1)) /* old tlb contents */ 673 681 __(vpush1(imm1)) /* tlb index */ … … 1043 1051 _spentry(stack_misc_alloc) 1044 1052 __(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)) 1055 1: 1046 1056 __(unbox_fixnum(imm0,arg_z)) 1047 1057 __(extract_fulltag(imm1,imm0)) … … 1605 1615 __(vector_length(imm0,arg_y,imm1)) 1606 1616 __(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)) 1619 1: 1608 1620 __(extract_lowbyte(imm1,imm1)) /* imm1 = subtag */ 1609 1621 __(b C(misc_ref_common)) … … 1616 1628 __(vector_length(imm0,arg_y,imm1)) 1617 1629 __(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)) 1632 1: 1619 1633 __(unbox_fixnum(imm1,arg_x)) 1620 1634 __(b C(misc_ref_common)) … … 1856 1870 __(extract_typecode(imm0,arg_z)) 1857 1871 __(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)) 1874 1: 1859 1875 __(getvheader(imm1,arg_z)) 1860 1876 __(header_length(imm0,imm1)) /* boxed length = scaled size */ … … 1873 1889 __(vector_length(imm0,arg_x,imm1)) 1874 1890 __(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)) 1893 1: 1876 1894 __(unbox_fixnum(imm1,temp0)) 1877 1895 __(b C(misc_set_common)) … … 1887 1905 __(vector_length(imm0,arg_x,imm1)) 1888 1906 __(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)) 1909 1: 1890 1910 __(extract_lowbyte(imm1,imm1)) 1891 1911 __(b C(misc_set_common)) … … 2036 2056 _spentry(stack_misc_alloc_init) 2037 2057 __(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)) 2060 1: 2039 2061 __(unbox_fixnum(imm0,arg_y)) 2040 2062 __(extract_fulltag(imm1,imm0)) 2041 2063 __(cmp imm1,#fulltag_nodeheader) 2042 __(bne 1f)2064 __(bne stack_misc_alloc_init_ivector) 2043 2065 __(dnode_align(imm1,arg_x,node_size)) 2044 2066 __(cmp imm1,#stack_alloc_limit) 2045 __(bge 0f)2067 __(bge stack_misc_alloc_init_no_room) 2046 2068 __(mov imm0,#subtag_u32_vector) 2047 2069 __(orr imm0,imm0,arg_x,lsl #num_subtag_bits-fixnumshift) … … 2055 2077 __(stmdb sp!,{temp0,temp1}) 2056 2078 __(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)2083 2079 2084 2080 … … 2087 2083 C(popj): 2088 2084 __(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 2097 2086 2098 2087 … … 2188 2177 __(movc16(imm1,two_digit_bignum_header)) 2189 2178 __(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)) 2181 1: 2191 2182 __(vrefr(imm1,arg_z,1)) 2192 2183 __(vrefr(imm0,arg_z,0)) … … 2219 2210 __(ldreq arg_z,[arg_y,#symbol.vcell]) 2220 2211 __(cmp arg_z,#unbound_marker) 2221 __(uuo_error_unbound(eq,arg_y)) 2212 __(bxne lr) 2213 __(uuo_error_unbound(al,arg_y)) 2222 2214 __(bx lr) 2223 2215 … … 2248 2240 __(extract_lisptag(imm0,arg_z)) 2249 2241 __(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)) 2244 1: 2251 2245 __(getvheader(imm0,arg_z)) 2252 2246 __(movc16(imm1,one_digit_bignum_header)) 2253 2247 __(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)) 2250 2: 2255 2251 __(vrefr(imm0,arg_z,0)) 2256 2252 __(bx lr) … … 2269 2265 __(extract_lisptag(imm0,arg_z)) 2270 2266 __(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)) 2269 1: 2272 2270 __(getvheader(imm0,arg_z)) 2273 2271 __(cmp imm0,imm1) … … 2280 2278 __(cmpeq imm1,#0) 2281 2279 __(bxeq lr) 2282 __(uuo_error_reg_not_xtype( ne,arg_z,xtype_u32))2280 __(uuo_error_reg_not_xtype(al,arg_z,xtype_u32)) 2283 2281 7: 2284 2282 __(movs imm1,imm0,asr #31) 2285 2283 __(bxeq lr) 2286 __(uuo_error_reg_not_xtype( ne,arg_z,xtype_u32))2284 __(uuo_error_reg_not_xtype(al,arg_z,xtype_u32)) 2287 2285 2288 2286 … … 2368 2366 __(ldrlt temp0,[rcontext,#tcr.interrupt_pending]) 2369 2367 __(cmp temp0,#0) 2370 __(uuo_interrupt_now(gt)) 2368 __(bxle lr) 2369 __(uuo_interrupt_now(al)) 2371 2370 __(bx lr) 2372 2371 … … 2424 2423 __(cmp temp1,#0) 2425 2424 __(bxlt lr) 2426 __(check_enabled_pending_interrupt(imm0)) 2425 __(check_enabled_pending_interrupt(imm0,1f)) 2426 1: 2427 2427 __(bx lr) 2428 2428 5: /* Missed a suspend request; force suspend now if we're restoring … … 2449 2449 __(ldreq imm1,[arg_x,#arrayH.rank]) 2450 2450 __(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)) 2453 1: 2452 2454 /* It's a 2-dimensional array. Check bounds */ 2453 2455 __(ldr imm0,[arg_x,#arrayH.dim0]) 2454 2456 __(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)) 2459 2: 2456 2460 __(ldr imm0,[arg_x,#arrayH.dim0+node_size]) 2457 2461 __(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)) 2464 3: 2459 2465 __(unbox_fixnum(imm0,imm0)) 2460 2466 __(mul temp0,arg_y,imm0) /* no MLA on ARMv5 */ … … 2481 2487 __(ldreq imm1,[temp0,#arrayH.rank]) 2482 2488 __(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)) 2491 1: 2484 2492 /* It's a 3-dimensional array. Check bounds */ 2485 2493 __(ldr imm2,[temp0,arrayH.dim0+(node_size*2)]) … … 2487 2495 __(ldr imm0,[temp0,#arrayH.dim0]) 2488 2496 __(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)) 2499 2: 2490 2500 __(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)) 2503 3: 2492 2504 __(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)) 2507 4: 2494 2508 __(unbox_fixnum(imm2,imm2)) 2495 2509 __(unbox_fixnum(imm1,imm1)) … … 2517 2531 __(ldreq imm0,[temp0,#arrayH.rank]) 2518 2532 __(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)) 2535 1: 2520 2536 __(trap_unless_fixnum(arg_x)) 2521 2537 __(trap_unless_fixnum(arg_y)) … … 2523 2539 __(ldr imm0,[temp0,#arrayH.dim0]) 2524 2540 __(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)) 2543 2: 2526 2544 __(ldr imm0,[temp0,#arrayH.dim0+node_size]) 2527 2545 __(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)) 2548 3: 2529 2549 __(unbox_fixnum(imm0,imm0)) 2530 2550 __(mul temp1,arg_x,imm0) … … 2548 2568 __(ldreq imm0,[temp1,#arrayH.rank]) 2549 2569 __(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)) 2572 1: 2551 2573 __(trap_unless_fixnum(temp0)) 2552 2574 __(trap_unless_fixnum(arg_x)) … … 2557 2579 __(ldr imm0,[temp1,#arrayH.dim0]) 2558 2580 __(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)) 2583 2: 2560 2584 __(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)) 2587 3: 2562 2588 __(unbox_fixnum(imm1,imm1)) 2563 2589 __(cmp temp0,imm0) 2564 __(uuo_error_array_bounds(hs,temp0,temp1)) 2590 __(blo 4f) 2591 __(uuo_error_array_bounds(al,temp0,temp1)) 2592 4: 2565 2593 __(mul arg_x,imm2,arg_x) 2566 2594 __(mul imm1,imm2,imm1) … … 4174 4202 __(_cdr(arg_y,arg_y)) 4175 4203 __(cmp imm2,imm0) 4176 __(uuo_tlb_too_small(ls,imm0)) 4204 __(bhi 4f) 4205 __(uuo_tlb_too_small(al,imm0)) 4206 4: 4177 4207 __(ldr arg_x,[rcontext,#tcr.tlb_pointer]) 4178 4208 __(ldr temp0,[arg_x,imm0]) … … 4204 4234 __(b _SPmisc_alloc) 4205 4235 _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) 4261 8: __(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.
