summaryrefslogtreecommitdiff
path: root/thumb2startup.s
diff options
context:
space:
mode:
Diffstat (limited to 'thumb2startup.s')
-rw-r--r--thumb2startup.s186
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