diff options
Diffstat (limited to 'thumb2startup.s')
-rw-r--r-- | thumb2startup.s | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/thumb2startup.s b/thumb2startup.s index 3e3cd8c..57dcb00 100644 --- a/thumb2startup.s +++ b/thumb2startup.s @@ -158,53 +158,71 @@ ZERO_ARITY_DESCRIPTOR_OFFSET = (-4) .p2align 2 .if MARK_GC + .thumb_func bit_counter: .long 0 + .thumb_func bit_vector_p: .long 0 + .thumb_func zero_bits_before_mark: .long 1 + .thumb_func n_free_words_after_mark: .long 1000 + .thumb_func n_last_heap_free_bytes: .long 0 + .thumb_func lazy_array_list: .long 0 + .thumb_func n_marked_words: .long 0 + .thumb_func end_stack: .long 0 .if ADJUST_HEAP_SIZE + .thumb_func bit_vector_size: .long 0 .endif .endif + .thumb_func caf_list: .long 0 .globl caf_listp .hidden caf_listp + .thumb_func caf_listp: .long 0 + .thumb_func zero_length_string: .long __STRING__+2 .long 0 + .thumb_func true_string: .long __STRING__+2 .long 4 + .thumb_func true_c_string: .ascii "True" .byte 0,0,0,0 + .thumb_func false_string: .long __STRING__+2 .long 5 + .thumb_func false_c_string: .ascii "False" .byte 0,0,0 + .thumb_func file_c_string: .ascii "File" .byte 0,0,0,0 + .thumb_func garbage_collect_flag: .byte 0 .byte 0,0,0 @@ -215,15 +233,19 @@ garbage_collect_flag: out_of_memory_string_1: .ascii "Not enough memory to allocate heap and stack" .byte 10,0 + .thumb_func printf_int_string: .ascii "%d" .byte 0 + .thumb_func printf_real_string: .ascii "%.15g" .byte 0 + .thumb_func printf_string_string: .ascii "%s" .byte 0 + .thumb_func printf_char_string: .ascii "%c" .byte 0 @@ -240,6 +262,7 @@ heap_use_after_gc_string_1: heap_use_after_gc_string_2: .ascii " Bytes." .byte 10,0 + .thumb_func stack_overflow_string: .ascii "Stack overflow." .byte 10,0 @@ -255,18 +278,22 @@ time_string_2: time_string_4: .ascii " Total: " .byte 0 + .thumb_func high_index_string: .ascii "Index too high in UPDATE string." .byte 10,0 + .thumb_func low_index_string: .ascii "Index negative in UPDATE string." .byte 10,0 IO_error_string: .ascii "IO error: " .byte 0 + .thumb_func new_line_string: .byte 10,0 + .thumb_func sprintf_time_string: .ascii "%d.%02d" .byte 0 @@ -282,6 +309,7 @@ marked_gc_string_1: .ifdef LINUX .globl m_system .endif + .thumb_func m_system: .long 6 .ascii "System" @@ -290,6 +318,7 @@ m_system: .long m_system .endif + .thumb_func garbage_collector_name: .long 0 .asciz "garbage_collector" @@ -297,6 +326,7 @@ garbage_collector_name: .endif .ifdef DLL + .thumb_func start_address: .long 0 .endif @@ -487,6 +517,7 @@ start_address: .comm free_finalizer_list,4 .endif + .thumb_func abc_main: str lr,[sp,#-4]! @@ -528,15 +559,18 @@ abc_main: bl __start .endif + .thumb_func exit: mov r12,pc str r12,[sp,#-4]! bl exit_clean + .thumb_func init_error: ldmia sp!,{r4-r11,pc} .globl clean_init + .thumb_func clean_init: stmdb sp!,{r4-r11,lr} @@ -573,11 +607,13 @@ clean_init: mov r4,#1 b exit_dll_init + .thumb_func init_dll_error: mov r4,#0 b exit_dll_init .globl clean_fini + .thumb_func clean_fini: stmdb sp!,{r4-r11,lr} @@ -592,9 +628,11 @@ clean_fini: str r12,[sp,#-4]! bl exit_clean + .thumb_func exit_dll_init: ldmia sp!,{r4-r11,pc} + .thumb_func init_clean: add r4,sp,#128 lao r12,ab_stack_size,0 @@ -714,6 +752,7 @@ init_clean: laol r3,INT+2,INT_o_2,0 otoa r3,INT_o_2,0 + .thumb_func make_small_integers_lp: str r3,[r6] str r4,[r6,#4] @@ -728,6 +767,7 @@ make_small_integers_lp: laol r3,CHAR+2,CHAR_O_2,0 otoa r3,CHAR_O_2,0 + .thumb_func make_static_characters_lp: str r3,[r6] str r4,[r6,#4] @@ -827,6 +867,7 @@ no_mark9: cmp r4,r8 bge too_large_or_too_small mov r8,r4 + .thumb_func too_large_or_too_small: .endif @@ -880,6 +921,7 @@ no_memory_3: mov r0,#1 ldr pc,[sp],#4 + .thumb_func exit_clean: mov r12,pc str r12,[sp,#-4]! @@ -932,6 +974,7 @@ exit_clean: mov r0,#10 bl ew_print_char + .thumb_func no_print_execution_time: lao r0,stack_mbp,1 ldo r0,r0,stack_mbp,1 @@ -949,6 +992,7 @@ no_print_execution_time: ldr pc,[sp],#4 + .thumb_func __driver: lao r8,flags,5 ldo r8,r8,flags,5 @@ -1051,6 +1095,7 @@ __driver: .endif .ltorg + .thumb_func print_time: @ divide by 1000 ldr r12,=274877907 @@ -1110,19 +1155,23 @@ print_time: .endif ldr pc,[sp],#4 + .thumb_func print_sc: lao r12,basic_only,1 ldo r8,r12,basic_only,1 cmp r8,#0 bne end_print + .thumb_func print: mov r0,r4 bl w_print_string + .thumb_func end_print: ldr pc,[sp],#4 + .thumb_func dump: mov r12,pc str r12,[sp,#-4]! @@ -1164,10 +1213,12 @@ DtoAC_string_a2: add r6,r8,#4 b build_string + .thumb_func print_symbol: mov r3,#0 b print_symbol_2 + .thumb_func print_symbol_sc: lao r12,basic_only,2 ldo r3,r12,basic_only,2 @@ -1207,6 +1258,7 @@ printD_: add r8,r12,r3 b print_string_a2 + .thumb_func print_record: ldr r8,[r4,#-6] @.ifdef PIC @@ -1216,19 +1268,23 @@ print_record: .endif b print_string_a2 + .thumb_func end_print_symbol: ldr pc,[sp],#4 + .thumb_func print_int_node: ldr r0,[r6,#4] bl w_print_int ldr pc,[sp],#4 + .thumb_func print_int: mov r0,r4 bl w_print_int ldr pc,[sp],#4 + .thumb_func print_char_denotation: tst r3,r3 bne print_char_node @@ -1247,45 +1303,53 @@ print_char_denotation: ldr pc,[sp],#4 + .thumb_func print_char_node: ldr r0,[r6,#4] bl w_print_char ldr pc,[sp],#4 + .thumb_func print_char: str r4,[sp,#-4]! bl w_print_char add sp,sp,#4 ldr pc,[sp],#4 + .thumb_func print_bool: ldsb r6,[r6,#4] tst r6,r6 beq print_false + .thumb_func print_true: lao r0,true_c_string,0 otoa r0,true_c_string,0 bl w_print_string ldr pc,[sp],#4 + .thumb_func print_false: lao r0,false_c_string,0 otoa r0,false_c_string,0 bl w_print_string ldr pc,[sp],#4 + .thumb_func print_real: .ifdef SOFT_FP_CC vmov r0,r1,d0 .endif b print_real_ + .thumb_func print_real_node: .ifdef SOFT_FP_CC ldrd r0,r1,[r6,#4] .else vldr.f64 d0,[r6,#4] .endif + .thumb_func print_real_: mov r11,sp @bic sp,sp,#7 @ TODO @@ -1299,19 +1363,23 @@ print_string_a2: bl w_print_text ldr pc,[sp],#4 + .thumb_func print__chars__sc: lao r12,basic_only,3 ldo r8,r12,basic_only,3 cmp r8,#0 bne no_print_chars + .thumb_func print__string__: ldr r1,[r6,#4] add r0,r6,#8 bl w_print_text + .thumb_func no_print_chars: ldr pc,[sp],#4 + .thumb_func push_a_r_args: str r10,[sp,#-4]! @@ -1330,6 +1398,7 @@ push_a_r_args: add r12,r6,#12 add r6,r12,r3,lsl #2 subs r10,r10,#1 + .thumb_func mul_array_size_lp: add r6,r6,r4 subs r10,r10,#1 @@ -1337,9 +1406,11 @@ mul_array_size_lp: add r10,r6,r7,lsl #2 b push_a_elements + .thumb_func push_a_elements_lp: ldr r4,[r6,#-4]! str r4,[r9],#4 + .thumb_func push_a_elements: subs r3,r3,#1 bcs push_a_elements_lp @@ -1350,15 +1421,18 @@ push_a_elements: ldr r8,[sp],#4 b push_b_elements + .thumb_func push_b_elements_lp: ldr r12,[r6,#-4]! str r12,[sp,#-4]! + .thumb_func push_b_elements: subs r7,r7,#1 bcs push_b_elements_lp mov pc,r8 + .thumb_func push_t_r_args: ldr r8,[sp],#4 @@ -1381,9 +1455,11 @@ push_t_r_args: ldr r7,[r6,#4] add r12,r7,#-4 add r7,r12,r4,lsl #2 + .thumb_func small_record: b push_r_b_elements + .thumb_func push_r_b_elements_lp: subs r4,r4,#1 bne not_first_arg_b @@ -1391,9 +1467,11 @@ push_r_b_elements_lp: ldr r12,[r6] str r12,[sp,#-4]! b push_r_b_elements + .thumb_func not_first_arg_b: ldr r12,[r7,#-4]! str r12,[sp,#-4]! + .thumb_func push_r_b_elements: subs r3,r3,#1 bcs push_r_b_elements_lp @@ -1404,6 +1482,7 @@ push_r_b_elements: str r12,[sp,#-4]! b push_r_a_elements + .thumb_func push_r_a_elements_lp: subs r4,r4,#1 bne not_first_arg_a @@ -1411,9 +1490,11 @@ push_r_a_elements_lp: ldr r8,[r6] str r8,[r9],#4 b push_r_a_elements + .thumb_func not_first_arg_a: ldr r8,[r7,#-4]! str r8,[r9],#4 + .thumb_func push_r_a_elements: subs r3,r3,#1 bcs push_r_a_elements_lp @@ -1464,12 +1545,14 @@ ItoAC: sub r4,r6,r12 b sprintf_buffer_to_string + .thumb_func int_to_string: tst r4,r4 bpl no_minus mov r12,#45 strb r12,[r6],#1 neg r4,r4 + .thumb_func no_minus: add r8,r6,#12 @@ -1477,6 +1560,7 @@ no_minus: ldr r2,=0xcccccccd + .thumb_func calculate_digits: cmp r4,#10 blo last_digit @@ -1492,15 +1576,19 @@ calculate_digits: strb r3,[r8],#1 b calculate_digits + .thumb_func last_digit: tst r4,r4 beq no_zero + .thumb_func zero_digit: add r4,r4,#48 strb r4,[r8],#1 + .thumb_func no_zero: add r7,r6,#12 + .thumb_func reverse_digits: ldrb r3,[r8,#-1]! strb r3,[r6],#1 @@ -1519,6 +1607,7 @@ reverse_digits: bl sprintf .endif + .thumb_func return_sprintf_buffer: .if USE_CLIB lao r0,sprintf_buffer,5 @@ -1528,6 +1617,7 @@ return_sprintf_buffer: .else laol r4,sprintf_buffer-1,sprintf_buffer_o_m1,0 otoa r4,sprintf_buffer_o_m1,0 + .thumb_func skip_characters: ldrb r12,[r4,#1]! tst r12,r12 @@ -1539,9 +1629,11 @@ skip_characters: .endif .if MY_ITOS + .thumb_func sprintf_buffer_to_string: lao r6,sprintf_buffer,7 otoa r6,sprintf_buffer,7 + .thumb_func build_string: .endif add r3,r4,#3 @@ -1635,6 +1727,7 @@ eqD_false: @ the timer @ + .thumb_func init_timer: sub sp,sp,#20 mov r0,sp @@ -1656,6 +1749,7 @@ init_timer: ldr pc,[sp],#4 + .thumb_func get_time_diff: sub sp,sp,#20 mov r0,sp @@ -1672,6 +1766,7 @@ get_time_diff: subs r4,r4,r7 ldr pc,[sp],#4 + .thumb_func add_execute_time: mov r12,pc str r12,[sp,#-4]! @@ -1679,12 +1774,14 @@ add_execute_time: lao r6,execute_time,3 otoa r6,execute_time,3 + .thumb_func add_time: ldr r12,[r6] add r4,r4,r12 str r4,[r6] ldr pc,[sp],#4 + .thumb_func add_garbage_collect_time: mov r12,pc str r12,[sp,#-4]! @@ -1911,6 +2008,7 @@ collect_0_: lao r12,n_free_words_after_mark,0 ldo r2,r12,n_free_words_after_mark,0 + .thumb_func scan_bits: ldr r12,[r6] cmp r3,r12 @@ -1921,6 +2019,7 @@ scan_bits: b end_scan + .thumb_func zero_bits: add r7,r6,#4 add r6,r6,#4 @@ -1928,6 +2027,7 @@ zero_bits: bne skip_zero_bits_lp1 b end_bits + .thumb_func skip_zero_bits_lp: cmp r4,#0 bne end_zero_bits @@ -1942,6 +2042,7 @@ skip_zero_bits_lp1: subs r4,r6,r7 b end_bits2 + .thumb_func end_zero_bits: sub r4,r6,r7 lsl r4,r4,#3 @@ -1951,6 +2052,7 @@ end_zero_bits: cmp r4,r9 blo scan_bits + .thumb_func found_free_memory: lao r12,bit_counter,1 sto r8,r12,bit_counter,1 @@ -1978,6 +2080,7 @@ found_free_memory: ldmia sp!,{r0-r4,pc} + .thumb_func end_bits: sub r4,r6,r7 add r4,r4,#4 @@ -1987,6 +2090,7 @@ end_bits2: cmp r4,r9 bhs found_free_memory + .thumb_func end_scan: ldr r9,[sp],#4 lao r12,bit_counter,2 @@ -1994,6 +2098,7 @@ end_scan: lao r12,n_free_words_after_mark,2 sto r2,r12,n_free_words_after_mark,2 + .thumb_func no_scan: .endif @@ -2029,6 +2134,7 @@ no_mark3: ldmia sp!,{r0-r4,pc} + .thumb_func collect: mov r12,pc str r12,[sp,#-4]! @@ -2063,6 +2169,7 @@ collect: otoa r0,garbage_collect_string_3,0 bl ew_print_string + .thumb_func no_print_stack_sizes: lao r12,stack_p,2 ldo r4,r12,stack_p,2 @@ -2132,6 +2239,7 @@ no_print_stack_sizes: bl zero_bit_vector b end_zero_bit_vector + .thumb_func zero_all: lao r12,heap_copied_vector_size,3 ldo r4,r12,heap_copied_vector_size,3 @@ -2140,6 +2248,7 @@ zero_all: str r12,[sp,#-4]! bl zero_bit_vector + .thumb_func end_zero_bit_vector: .include "thumb2copy.s" @@ -2177,6 +2286,7 @@ end_zero_bit_vector: bhs no_mark_scan @ b no_mark_scan + .thumb_func switch_to_mark_scan: lao r12,heap_size_33,2 ldo r4,r12,heap_size_33,2 @@ -2191,6 +2301,7 @@ switch_to_mark_scan: cmp r6,r12 bcc vector_at_begin + .thumb_func vector_at_end: lao r12,heap_p3,2 sto r3,r12,heap_p3,2 @@ -2208,6 +2319,7 @@ vector_at_end: sto r3,r12,extra_heap_size,1 b switch_to_mark_scan_2 + .thumb_func vector_at_begin: lao r12,heap_vector,3 sto r3,r12,heap_vector,3 @@ -2268,6 +2380,7 @@ switch_to_mark_scan_2: .else b end_garbage_collect .endif + .thumb_func no_mark_scan: @ exchange the semi_spaces lao r12,heap_p1,5 @@ -2302,6 +2415,7 @@ no_mark_scan: add sp,sp,#8 ldr r4,[sp],#4 + .thumb_func no_pages: .endif @@ -2344,6 +2458,7 @@ no_small_heap1: lsl r4,r4,#2 .endif + .thumb_func end_garbage_collect: .if WRITE_HEAP lao r12,heap_end_write_heap,1 @@ -2351,6 +2466,7 @@ end_garbage_collect: lao r12,d3_flag_write_heap,1 mov r11,#0 sto r11,r12,d3_flag_write_heap,1 + .thumb_func end_garbage_collect_: .endif @@ -2374,6 +2490,7 @@ end_garbage_collect_: otoa r0,heap_use_after_gc_string_2,0 bl ew_print_string + .thumb_func no_heap_use_message: .if FINALIZERS @@ -2474,6 +2591,7 @@ gc1: ldr r8,[sp],#4 ldr r7,[sp],#4 ldr r6,[sp],#4 + .thumb_func no_write_heap: .endif @@ -2597,10 +2715,12 @@ no_write_heap: .endif .if FINALIZERS + .thumb_func call_finalizers: lao r12,free_finalizer_list,1 ldo r4,r12,free_finalizer_list,1 + .thumb_func call_finalizers_lp: laol r12,__Nil-4,__Nil_o_m4,1 otoa r12,__Nil_o_m4,1 @@ -2616,6 +2736,7 @@ call_finalizers_lp: add sp,sp,#4 ldr r4,[sp],#4 b call_finalizers_lp + .thumb_func end_call_finalizers: lao r12,free_finalizer_list,2 laol r11,__Nil-4,__Nil_o_m4,2 @@ -2625,6 +2746,7 @@ end_call_finalizers: .endif .if WRITE_HEAP + .thumb_func copy_to_compact_with_alloc_in_extra_heap: lao r12,heap2_begin_and_end,2 ldo r6,r12,heap2_begin_and_end,2 @@ -2644,6 +2766,7 @@ out_of_memory_4: otoa r8,out_of_memory_string_4,0 b print_error + .thumb_func zero_bit_vector: eor r7,r7,r7 tst r4,#1 @@ -2673,6 +2796,7 @@ zero_bits1_5: bhs zero_bits1_4 ldr pc,[sp],#4 + .thumb_func reorder: str r9,[sp,#-4]! str r8,[sp,#-4]! @@ -2690,6 +2814,7 @@ reorder: str r4,[sp,#-4]! b st_reorder_lp + .thumb_func reorder_lp: ldr r8,[r6] ldr r9,[r7,#-4] @@ -2703,13 +2828,16 @@ reorder_lp: ldr r4,[sp] ldr r12,[sp,#12] add r6,r6,r12 + .thumb_func next_b_in_element: subs r3,r3,#1 bne next_a_in_element ldr r3,[sp,#4] ldr r12,[sp,#8] subs r7,r7,r12 + .thumb_func next_a_in_element: + .thumb_func st_reorder_lp: cmp r7,r6 bhi reorder_lp @@ -2725,6 +2853,7 @@ st_reorder_lp: @ the sliding compacting garbage collector @ + .thumb_func compacting_collector: @ zero all mark bits @@ -2794,6 +2923,7 @@ zero_bits_5: tst r12,#64 beq no_mark5 .endif + .thumb_func no_zero_bits: lao r12,n_last_heap_free_bytes,0 ldo r4,r12,n_last_heap_free_bytes,0 @@ -2834,6 +2964,7 @@ no_zero_bits: bls no_smaller_heap b compact_gc + .thumb_func no_smaller_heap: .endif @@ -2845,6 +2976,7 @@ no_smaller_heap: lto n_free_words_after_mark,4 .endif + .thumb_func compact_gc: lao r12,zero_bits_before_mark,1 mov r11,#1 @@ -2893,6 +3025,7 @@ no_mark5: ldo r12,r12,heap_size,7 cmp r4,r12 bcc out_of_memory_4 + .thumb_func not_out_of_memory: .if MARK_GC || COMPACT_GC_ONLY @@ -3009,6 +3142,7 @@ vector_at_end_2: stob r11,r12,garbage_collect_flag,8 .endif + .thumb_func no_copy_garbage_collection: mov r12,pc str r12,[sp,#-4]! @@ -3023,6 +3157,7 @@ no_copy_garbage_collection: add r4,r4,r3,lsl #2 b end_garbage_collect + .thumb_func stack_overflow: mov r12,pc str r12,[sp,#-4]! @@ -3048,10 +3183,12 @@ IO_error: b halt + .thumb_func print_error: mov r0,r8 bl ew_print_string + .thumb_func halt: lao r12,halt_sp,3 ldo sp,r12,halt_sp,3 @@ -3109,7 +3246,9 @@ halt: .endif .ltorg + .thumb_func e__system__eaind: + .thumb_func eval_fill: str r6,[r9],#4 mov r6,r7 @@ -3138,7 +3277,9 @@ eval_fill: .long e__system__dind .endif .long -2 + .thumb_func e__system__nind: + .thumb_func __indirection: ldr r7,[r6,#4] ldr r4,[r7] @@ -3320,6 +3461,7 @@ eval_upd_6: eval_upd_7: mov r4,#0 mov r3,#20 + .thumb_func eval_upd_n: lao r12,e__system__nind,7 otoa r12,e__system__nind,7 @@ -3336,6 +3478,7 @@ eval_upd_n: str r3,[r9,#12] add r9,r9,#16 + .thumb_func eval_upd_n_lp: ldr r3,[r2,#-4]! str r3,[r9],#4 @@ -3701,6 +3844,7 @@ cat_string_11: gc_3: bl collect_2 b gc_r_3 + .thumb_func empty_string: lao r6,zero_length_string,0 otoa r6,zero_length_string,0 @@ -3817,6 +3961,7 @@ updateAC_after_copy_lp: gc_5: bl collect_1 b r_gc_5 + .thumb_func update_string_error: lao r8,high_index_string,0 otoa r8,high_index_string,0 @@ -3853,6 +3998,7 @@ equal_string_1: add r7,r7,#4 subs r4,r4,#1 bne equal_string_1 + .thumb_func equal_string_b: tst r3,#2 beq equal_string_2 @@ -3869,9 +4015,11 @@ equal_string_2: ldrb r12,[r7] cmp r3,r12 bne equal_string_ne + .thumb_func equal_string_eq: mov r4,#1 ldr pc,[sp],#4 + .thumb_func equal_string_ne: mov r4,#0 ldr pc,[sp],#4 @@ -3887,9 +4035,11 @@ cmpAC: bhi cmp_string_more mov r4,#0 b cmp_string_chars + .thumb_func cmp_string_more: mov r4,#1 b cmp_string_chars + .thumb_func cmp_string_less: mov r4,#-1 mov r3,r8 @@ -3902,9 +4052,11 @@ cmp_string_1: bne cmp_string_ne4 add r7,r7,#4 add r6,r6,#4 + .thumb_func cmp_string_chars: subs r3,r3,#4 bcs cmp_string_1 + .thumb_func cmp_string_b: @ to do compare bytes using and instead of ldrb tst r3,#2 @@ -3926,6 +4078,7 @@ cmp_string_2: ldrb r12,[r6] cmp r8,r12 bne cmp_string_ne + .thumb_func cmp_string_eq: ldr pc,[sp],#4 cmp_string_ne4: @@ -3945,6 +4098,7 @@ cmp_string_ne4: ldrb r3,[r7,#3] ldrb r12,[r6,#3] cmp r3,r12 + .thumb_func cmp_string_ne: bhi cmp_string_r1 mov r4,#-1 @@ -3954,6 +4108,7 @@ cmp_string_r1: ldr pc,[sp],#4 .section .text.string_to_string_node,"ax" + .thumb_func string_to_string_node: ldr r8,[r6],#4 @@ -3964,6 +4119,7 @@ string_to_string_node: subs r5,r5,r12 blo string_to_string_node_gc + .thumb_func string_to_string_node_r: laol r12,__STRING__+2,__STRING___o_2,4 otoa r12,__STRING___o_2,4 @@ -3983,6 +4139,7 @@ string_to_string_node_4: mov r6,r8 ldr pc,[sp],#4 + .thumb_func string_to_string_node_gc: stmdb sp!,{r6,r8} bl collect_0 @@ -3994,6 +4151,7 @@ string_to_string_node_gc: .endif .section .text.int_array_to_node,"ax" + .thumb_func int_array_to_node: ldr r4,[r6,#-8] @@ -4001,6 +4159,7 @@ int_array_to_node: subs r5,r5,r12 blo int_array_to_node_gc + .thumb_func int_array_to_node_r: laol r12,__ARRAY__+2,__ARRAY___o_2,0 otoa r12,__ARRAY___o_2,0 @@ -4023,6 +4182,7 @@ int_array_to_node_4: ldr pc,[sp],#4 + .thumb_func int_array_to_node_gc: str r6,[sp,#-4]! bl collect_0 @@ -4035,6 +4195,7 @@ int_array_to_node_gc: .endif .section .text.real_array_to_node,"ax" + .thumb_func real_array_to_node: ldr r4,[r6,#-8] @@ -4042,6 +4203,7 @@ real_array_to_node: subs r5,r5,r12 blo real_array_to_node_gc + .thumb_func real_array_to_node_r: tst r10,#4 orr r10,r10,#4 @@ -4072,6 +4234,7 @@ real_array_to_node_4: ldr pc,[sp],#4 + .thumb_func real_array_to_node_gc: str r6,[sp,#-4]! bl collect_0 @@ -4263,6 +4426,7 @@ no_collect_4580: @ r4: number of elements, r3: element descriptor @ r2: element size, r1: element a size, a0:a_element-> a0: array + .thumb_func _create_r_array: mul r12,r4,r2 add r12,r12,#3 @@ -4451,10 +4615,12 @@ create_arrayBCI: str r4,[r10],#4 b st_filli_array + .thumb_func filli_array: str r4,[r10] str r4,[r10,#4] add r10,r10,#8 + .thumb_func st_filli_array: subs r3,r3,#1 bcs filli_array @@ -4490,16 +4656,19 @@ no_collect_4579: str r12,[r10,#8] add r10,r10,#12 b st_fillr_array + .thumb_func fillr_array: str r3,[r10] str r7,[r10,#4] add r10,r10,#8 + .thumb_func st_fillr_array: subs r4,r4,#1 bcs fillr_array ldr pc,[sp],#4 + .thumb_func create_array: add r12,r4,#3 subs r5,r5,r12 @@ -4803,6 +4972,7 @@ st_fillr5_array: bx lr + .thumb_func repl_args_b: cmp r4,#0 ble repl_args_b_1 @@ -4832,6 +5002,7 @@ repl_args_b_4: repl_args_b_1: ldr pc,[sp],#4 + .thumb_func push_arg_b: cmp r3,#2 blo push_arg_b_1 @@ -4845,6 +5016,7 @@ push_arg_b_1: ldr r6,[r6,r3,lsl #2] ldr pc,[sp],#4 + .thumb_func del_args: ldr r3,[r6] subs r3,r3,r4 @@ -4873,6 +5045,7 @@ del_args_2: del_args_3: subs r5,r5,r4 blo del_args_gc + .thumb_func del_args_r_gc: str r3,[r7] str r10,[r7,#8] @@ -4880,6 +5053,7 @@ del_args_r_gc: ldr r6,[r6,#8] str r8,[r7,#4] + .thumb_func del_args_copy_args: ldr r8,[r6],#4 str r8,[r10],#4 @@ -4888,11 +5062,13 @@ del_args_copy_args: ldr pc,[sp],#4 + .thumb_func del_args_gc: bl collect_2 b del_args_r_gc .section .text.sin_real,"ax" + .thumb_func sin_real: .ifdef SOFT_FP_CC vmov r0,r1,d0 @@ -4904,6 +5080,7 @@ sin_real: ldr pc,[sp],#4 .section .text.cos_real,"ax" + .thumb_func cos_real: .ifdef SOFT_FP_CC vmov r0,r1,d0 @@ -4915,6 +5092,7 @@ cos_real: ldr pc,[sp],#4 .section .text.tan_real,"ax" + .thumb_func tan_real: .ifdef SOFT_FP_CC vmov r0,r1,d0 @@ -4926,6 +5104,7 @@ tan_real: ldr pc,[sp],#4 .section .text.asin_real,"ax" + .thumb_func asin_real: .ifdef SOFT_FP_CC vmov r0,r1,d0 @@ -4937,6 +5116,7 @@ asin_real: ldr pc,[sp],#4 .section .text.acos_real,"ax" + .thumb_func acos_real: .ifdef SOFT_FP_CC vmov r0,r1,d0 @@ -4948,6 +5128,7 @@ acos_real: ldr pc,[sp],#4 .section .text.atan_real,"ax" + .thumb_func atan_real: .ifdef SOFT_FP_CC vmov r0,r1,d0 @@ -4959,6 +5140,7 @@ atan_real: ldr pc,[sp],#4 .section .text.ln_real,"ax" + .thumb_func ln_real: .ifdef SOFT_FP_CC vmov r0,r1,d0 @@ -4981,6 +5163,7 @@ log10_real: ldr pc,[sp],#4 .section .text.exp_real,"ax" + .thumb_func exp_real: .ifdef SOFT_FP_CC vmov r0,r1,d0 @@ -4992,6 +5175,7 @@ exp_real: ldr pc,[sp],#4 .section .text.pow_real,"ax" + .thumb_func pow_real: .ifdef SOFT_FP_CC vmov r0,r1,d1 @@ -5008,6 +5192,7 @@ pow_real: ldr pc,[sp],#4 .section .text.entier_real,"ax" + .thumb_func entier_real: .ifdef SOFT_FP_CC vmov r0,r1,d0 @@ -5017,6 +5202,7 @@ entier_real: vmov d0,r0,r1 .endif + .thumb_func r_to_i_real: vcvtr.s32.f64 s0,d0 vmov r4,s0 |