summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamil Staps2016-10-02 12:10:25 +0000
committerCamil Staps2016-10-02 12:10:25 +0000
commit0f7f68df4aab8b32ebd701695850f2eafa4749a0 (patch)
treea1bbf8143aea3f23c9444764ce0d71813a16fe8f
parentUpdate Makefile (diff)
Fix storing the program counter as with 5effb5b in clean-code-generator
-rw-r--r--thumb2ap.s168
-rw-r--r--thumb2compact.s12
-rw-r--r--thumb2compact_rmark.s14
-rw-r--r--thumb2compact_rmarkr.s2
-rw-r--r--thumb2divmod.s24
-rw-r--r--thumb2fileIO3.s128
-rw-r--r--thumb2mark.s22
-rw-r--r--thumb2startup.s464
8 files changed, 552 insertions, 282 deletions
diff --git a/thumb2ap.s b/thumb2ap.s
index 8127222..16343ab 100644
--- a/thumb2ap.s
+++ b/thumb2ap.s
@@ -600,7 +600,7 @@ repl_args_5:
no_fast_ap32:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -615,7 +615,7 @@ no_fast_ap32:
no_fast_ap31:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -630,7 +630,7 @@ no_fast_ap31:
no_fast_ap30:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -645,7 +645,7 @@ no_fast_ap30:
no_fast_ap29:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -660,7 +660,7 @@ no_fast_ap29:
no_fast_ap28:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -675,7 +675,7 @@ no_fast_ap28:
no_fast_ap27:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -690,7 +690,7 @@ no_fast_ap27:
no_fast_ap26:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -705,7 +705,7 @@ no_fast_ap26:
no_fast_ap25:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -720,7 +720,7 @@ no_fast_ap25:
no_fast_ap24:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -735,7 +735,7 @@ no_fast_ap24:
no_fast_ap23:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -750,7 +750,7 @@ no_fast_ap23:
no_fast_ap22:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -765,7 +765,7 @@ no_fast_ap22:
no_fast_ap21:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -780,7 +780,7 @@ no_fast_ap21:
no_fast_ap20:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -795,7 +795,7 @@ no_fast_ap20:
no_fast_ap19:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -810,7 +810,7 @@ no_fast_ap19:
no_fast_ap18:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -825,7 +825,7 @@ no_fast_ap18:
no_fast_ap17:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -840,7 +840,7 @@ no_fast_ap17:
no_fast_ap16:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -855,7 +855,7 @@ no_fast_ap16:
no_fast_ap15:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -870,7 +870,7 @@ no_fast_ap15:
no_fast_ap14:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -885,7 +885,7 @@ no_fast_ap14:
no_fast_ap13:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -900,7 +900,7 @@ no_fast_ap13:
no_fast_ap12:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -915,7 +915,7 @@ no_fast_ap12:
no_fast_ap11:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -930,7 +930,7 @@ no_fast_ap11:
no_fast_ap10:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -945,7 +945,7 @@ no_fast_ap10:
no_fast_ap9:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -960,7 +960,7 @@ no_fast_ap9:
no_fast_ap8:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -975,7 +975,7 @@ no_fast_ap8:
no_fast_ap7:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -990,7 +990,7 @@ no_fast_ap7:
no_fast_ap6:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -1005,7 +1005,7 @@ no_fast_ap6:
no_fast_ap5:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -1020,7 +1020,7 @@ no_fast_ap5:
no_fast_ap4:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -1035,7 +1035,7 @@ no_fast_ap4:
no_fast_ap3:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r11,[r6]
@@ -1050,7 +1050,7 @@ no_fast_ap3:
no_fast_ap2:
ldr r12,[r11,#2]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
ldr r8,[r6]
@@ -1459,7 +1459,9 @@ yet_args_needed_0_gc_r:
mov r6,r10
add r4,r4,#8
str r4,[r10],#8
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
yet_args_needed_0_gc:
bl collect_2
@@ -1485,7 +1487,9 @@ yet_args_needed_1_gc_r:
ldr r3,[r7,#4]
str r3,[r10,#4]
add r10,r10,#12
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
yet_args_needed_1_gc:
bl collect_2
@@ -1499,7 +1503,9 @@ build_node_2_gc_r:
str r6,[r10,#8]
mov r6,r10
add r10,r10,#12
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
build_node_2_gc:
bl collect_2
@@ -1528,7 +1534,9 @@ gc_r_22:
str r8,[r10]
str r10,[r10,#16]
add r10,r10,#20
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
gc_22: bl collect_2
b gc_r_22
@@ -1546,7 +1554,9 @@ build_node_3_gc_r:
subs r9,r9,#4
str r8,[r10,#16]
add r10,r10,#20
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
build_node_3_gc:
bl collect_2
@@ -1578,7 +1588,9 @@ gc_r_23:
add r6,r10,#12
str r8,[r10,#4]
add r10,r10,#24
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
gc_23: bl collect_2
b gc_r_23
@@ -1598,7 +1610,9 @@ build_node_4_gc_r:
subs r9,r9,#8
str r8,[r10,#20]
add r10,r10,#24
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
build_node_4_gc:
bl collect_2
@@ -1632,7 +1646,9 @@ gc_r_24:
ldr r8,[r7,#8]
str r8,[r10,#8]
add r10,r10,#28
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
gc_24: bl collect_2
b gc_r_24
@@ -1654,7 +1670,9 @@ build_node_5_gc_r:
subs r9,r9,#12
str r8,[r10,#24]
add r10,r10,#28
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
build_node_5_gc:
bl collect_2
@@ -2025,7 +2043,9 @@ yet_args_needed_cp_a:
str r3,[r10,#8]
str r8,[r10,#12]
add r10,r10,#16
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
yet_args_needed_gc:
bl collect_2
@@ -2057,7 +2077,9 @@ build_node_cp_a:
subs r4,r4,#1
bne build_node_cp_a
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
build_node_gc:
bl collect_2
@@ -2243,7 +2265,7 @@ apupd_7:
ldr r8,[r9,#-28]
ldr r4,[r9,#-32]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_8
lao r12,e__system__nind,29
@@ -2264,7 +2286,7 @@ apupd_8:
ldr r8,[r9,#-32]
ldr r4,[r9,#-36]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_9
lao r12,e__system__nind,30
@@ -2285,7 +2307,7 @@ apupd_9:
ldr r8,[r9,#-36]
ldr r4,[r9,#-40]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_10
lao r12,e__system__nind,31
@@ -2306,7 +2328,7 @@ apupd_10:
ldr r8,[r9,#-40]
ldr r4,[r9,#-44]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_11
lao r12,e__system__nind,32
@@ -2327,7 +2349,7 @@ apupd_11:
ldr r8,[r9,#-44]
ldr r4,[r9,#-48]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_12
lao r12,e__system__nind,33
@@ -2348,7 +2370,7 @@ apupd_12:
ldr r8,[r9,#-48]
ldr r4,[r9,#-52]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_13
lao r12,e__system__nind,34
@@ -2369,7 +2391,7 @@ apupd_13:
ldr r8,[r9,#-52]
ldr r4,[r9,#-56]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_14
lao r12,e__system__nind,35
@@ -2390,7 +2412,7 @@ apupd_14:
ldr r8,[r9,#-56]
ldr r4,[r9,#-60]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_15
lao r12,e__system__nind,36
@@ -2411,7 +2433,7 @@ apupd_15:
ldr r8,[r9,#-60]
ldr r4,[r9,#-64]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_16
lao r12,e__system__nind,37
@@ -2432,7 +2454,7 @@ apupd_16:
ldr r8,[r9,#-64]
ldr r4,[r9,#-68]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_17
lao r12,e__system__nind,38
@@ -2453,7 +2475,7 @@ apupd_17:
ldr r8,[r9,#-68]
ldr r4,[r9,#-72]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_18
lao r12,e__system__nind,39
@@ -2474,7 +2496,7 @@ apupd_18:
ldr r8,[r9,#-72]
ldr r4,[r9,#-76]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_19
lao r12,e__system__nind,40
@@ -2495,7 +2517,7 @@ apupd_19:
ldr r8,[r9,#-76]
ldr r4,[r9,#-80]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_20
lao r12,e__system__nind,41
@@ -2516,7 +2538,7 @@ apupd_20:
ldr r8,[r9,#-80]
ldr r4,[r9,#-84]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_21
lao r12,e__system__nind,42
@@ -2537,7 +2559,7 @@ apupd_21:
ldr r8,[r9,#-84]
ldr r4,[r9,#-88]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_22
lao r12,e__system__nind,43
@@ -2558,7 +2580,7 @@ apupd_22:
ldr r8,[r9,#-88]
ldr r4,[r9,#-92]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_23
lao r12,e__system__nind,44
@@ -2579,7 +2601,7 @@ apupd_23:
ldr r8,[r9,#-92]
ldr r4,[r9,#-96]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_24
lao r12,e__system__nind,45
@@ -2600,7 +2622,7 @@ apupd_24:
ldr r8,[r9,#-96]
ldr r4,[r9,#-100]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_25
lao r12,e__system__nind,46
@@ -2621,7 +2643,7 @@ apupd_25:
ldr r8,[r9,#-100]
ldr r4,[r9,#-104]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_26
lao r12,e__system__nind,47
@@ -2642,7 +2664,7 @@ apupd_26:
ldr r8,[r9,#-104]
ldr r4,[r9,#-108]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_27
lao r12,e__system__nind,48
@@ -2663,7 +2685,7 @@ apupd_27:
ldr r8,[r9,#-108]
ldr r4,[r9,#-112]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_28
lao r12,e__system__nind,49
@@ -2684,7 +2706,7 @@ apupd_28:
ldr r8,[r9,#-112]
ldr r4,[r9,#-116]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_29
lao r12,e__system__nind,50
@@ -2705,7 +2727,7 @@ apupd_29:
ldr r8,[r9,#-116]
ldr r4,[r9,#-120]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_30
lao r12,e__system__nind,51
@@ -2726,7 +2748,7 @@ apupd_30:
ldr r8,[r9,#-120]
ldr r4,[r9,#-124]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_31
lao r12,e__system__nind,52
@@ -2747,7 +2769,7 @@ apupd_31:
ldr r8,[r9,#-124]
ldr r4,[r9,#-128]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_32
lao r12,e__system__nind,53
@@ -2768,7 +2790,7 @@ apupd_32:
ldr r8,[r9,#-128]
ldr r4,[r9,#-132]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl move_33
lao r12,e__system__nind,54
@@ -2815,7 +2837,7 @@ ap_32__u0:
add r8,r8,pc
.endif
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r8
apupd_upd:
@@ -2828,7 +2850,9 @@ apupd_upd:
ldr r4,[r6,#8]
mov r6,r7
str r4,[r7,#8]
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
move_33:
ldr r3,[r9,#-124]
@@ -2919,7 +2943,9 @@ move_7:
str r3,[r9,#-12]
ldr r3,[r9,#-4]
str r3,[r9,#-8]
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.ifdef PIC
lto apupd_upd,0
diff --git a/thumb2compact.s b/thumb2compact.s
index 33a214e..0e0bd7b 100644
--- a/thumb2compact.s
+++ b/thumb2compact.s
@@ -47,7 +47,7 @@ mark_cafs_lp:
sto r6,r12,end_vector,13
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
.if COMPACT_MARK_WITH_STACK
bl rmark_stack_nodes
@@ -74,7 +74,7 @@ end_mark_cafs:
lao r12,end_vector,14
sto r6,r12,end_vector,14
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
.if COMPACT_MARK_WITH_STACK
bl rmark_stack_nodes
@@ -84,7 +84,7 @@ end_mark_cafs:
.ifdef MEASURE_GC
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl add_mark_compact_garbage_collect_time
.endif
@@ -228,12 +228,12 @@ finalizer_list_empty:
sto r6,r12,end_vector,15
.if COMPACT_MARK_WITH_STACK
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl rmark_stack_nodes
.else
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl mark_stack_nodes
.endif
@@ -989,7 +989,7 @@ move_array_ab:
subs r4,r4,r3
add r7,r7,r6
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl reorder
diff --git a/thumb2compact_rmark.s b/thumb2compact_rmark.s
index 6dc8107..e67557c 100644
--- a/thumb2compact_rmark.s
+++ b/thumb2compact_rmark.s
@@ -36,7 +36,7 @@ rmark_more_stack_nodes:
ldr r4,[r6]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl rmark_stack_node
@@ -45,7 +45,9 @@ rmark_more_stack_nodes:
ldo r12,r12,end_vector,17
cmp r9,r12
bne rmark_more_stack_nodes
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
rmark_stack_node:
subs sp,sp,#8
@@ -695,7 +697,9 @@ rmark_next_node:
rmark_next_node_:
end_rmark_nodes:
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
rmark_lazy_node:
ldr r8,[r4,#-4]
@@ -859,7 +863,7 @@ rmark_ab_record_array:
add r6,r6,#4
add r7,r7,r6
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl reorder
@@ -966,7 +970,7 @@ rmark_array_nodes:
ldr r4,[r6]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl rmark_array_node
diff --git a/thumb2compact_rmarkr.s b/thumb2compact_rmarkr.s
index d684e3f..a1247e6 100644
--- a/thumb2compact_rmarkr.s
+++ b/thumb2compact_rmarkr.s
@@ -727,7 +727,7 @@ rmarkr_ab_record_array:
add r6,r6,#4
add r7,r7,r6
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl reorder
diff --git a/thumb2divmod.s b/thumb2divmod.s
index 3343db6..ec35a2b 100644
--- a/thumb2divmod.s
+++ b/thumb2divmod.s
@@ -48,7 +48,9 @@ divide:
cmp r12,#0
it lt
neglt r4,r4
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
divide_large_result:
@@ -64,11 +66,15 @@ divide_large_result:
cmp r12,#0
it lt
neglt r4,r4
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
divide_result_0:
mov r4,#0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
divide_by_small_number:
@@ -84,7 +90,9 @@ divide_by_small_number:
cmp r12,#0
it lt
neglt r4,r4
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.globl modulo
.thumb_func
@@ -138,7 +146,9 @@ modulo_divide_result_0:
cmp r12,#0
it lt
neglt r4,r4
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
modulo_of_small_number:
@@ -159,7 +169,9 @@ modulo_from_quotient:
cmp r12,#0
it lt
neglt r4,r4
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
div_mod_table:
diff --git a/thumb2fileIO3.s b/thumb2fileIO3.s
index da498ae..9981e61 100644
--- a/thumb2fileIO3.s
+++ b/thumb2fileIO3.s
@@ -99,7 +99,9 @@ stdioF:
mov r3,r0
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 0
@ jsr stderrF
@@ -114,7 +116,9 @@ stderrF:
mov r3,r0
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 1 1 i
@ jsr openF
@@ -136,7 +140,9 @@ openF:
movmi r2,#0
it pl
movpl r2,#1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 2 f
@ jsr closeF
@@ -150,7 +156,9 @@ closeF:
bl close_file
mov sp,r4
mov r4,r0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 3 f i
@ jsr reopenF
@@ -169,7 +177,9 @@ reopenF:
neg r2,r0
mov r3,r6
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 2 f
@ jsr readFC
@@ -191,12 +201,16 @@ readFC:
mov r2,r0
mov r1,#1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
readFC_eof:
mov r2,#0
mov r3,#0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 2 f
@ jsr readFI
@@ -218,7 +232,9 @@ readFI:
mov r3,r6
mov r4,#-1
neg r1,r0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 2 f
@ jsr readFR
@@ -238,7 +254,9 @@ readFR:
mov r3,r6
mov r4,#-1
neg r2,r0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 3 f i
@ jsr readFS
@@ -272,7 +290,9 @@ readFS_end:
add r10,r10,r2
sub r5,r5,r2,lsr #2
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
readFS_gc:
mov r5,r1
@@ -311,7 +331,9 @@ readFString:
ldr r2,[sp],#4
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
readFString_error:
lao r8,freadstring_error,0
@@ -411,7 +433,9 @@ st_copy_string1:
add r12,r4,#8+3
sub r5,r5,r12,lsr #2
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
readLineF_gc:
mov r5,r2
@@ -436,7 +460,9 @@ writeFC:
mov r3,r6
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 3 i f
@ jsr writeFI
@@ -455,7 +481,9 @@ writeFI:
mov r3,r6
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 4 r f
@ jsr writeFR
@@ -473,7 +501,9 @@ writeFR:
mov r3,r6
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 1 2 f
@ jsr writeFS
@@ -493,7 +523,9 @@ writeFS:
mov r3,r6
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 1 4 i i f
@ jsr writeFString
@@ -522,7 +554,9 @@ writeFString:
mov r3,r6
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
writeFString_error:
lao r8,fwritestring_error,0
@@ -546,7 +580,9 @@ endF:
neg r2,r0
mov r3,r6
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 2 f
@ jsr errorF
@@ -565,7 +601,9 @@ errorF:
neg r2,r0
mov r3,r6
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 2 f
@ jsr positionF
@@ -584,7 +622,9 @@ positionF:
mov r2,r0
mov r3,r6
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 4 f i i
@ jsr seekF
@@ -605,7 +645,9 @@ seekF:
neg r2,r0
mov r3,r6
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 2 f
@ jsr shareF
@@ -623,7 +665,9 @@ shareF:
mov r3,r6
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 1 1 i
@ jsr openSF
@@ -648,7 +692,9 @@ openSF:
mov r3,r6
mov r4,#0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 2 f
@ jsr readSFC
@@ -674,12 +720,16 @@ readSFC:
beq readSFC_eof
mov r1,#1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
readSFC_eof:
mov r2,#0
mov r1,#0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 2 f
@ jsr readSFI
@@ -703,7 +753,9 @@ readSFI:
ldr r2,[sp],#4
mov r3,r6
ldr r4,[sp],#4
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 2 f
@ jsr readSFR
@@ -727,7 +779,9 @@ readSFR:
mov r3,r6
ldr r4,[sp],#4
neg r2,r0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 3 f i
@ jsr readSFS
@@ -764,7 +818,9 @@ readSFS_end:
and r2,r2,#-4
add r10,r10,r2
sub r5,r5,r2,lsr #2
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
readSFS_gc:
mov r5,r2
@@ -871,7 +927,9 @@ st_copy_string2:
add r10,r10,r12
add r12,r2,#8+3
sub r5,r5,r12,lsr #2
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
readLineSF_gc:
mov r5,r2
@@ -894,7 +952,9 @@ endSF:
mov sp,r4
neg r4,r0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 2 f
@ jsr positionSF
@@ -911,7 +971,9 @@ positionSF:
mov sp,r4
mov r4,r0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ .d 0 4 f i i
@ jsr seekSF
@@ -934,7 +996,9 @@ seekSF:
neg r2,r0
ldr r4,[sp],#4
mov r3,r6
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.ifdef PIC
lto freadstring_error,0
diff --git a/thumb2mark.s b/thumb2mark.s
index a94235f..e5ff35f 100644
--- a/thumb2mark.s
+++ b/thumb2mark.s
@@ -53,7 +53,7 @@ _mark_cafs_lp:
sto r4,r12,end_vector,0
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl _mark_stack_nodes
@@ -71,7 +71,7 @@ _end_mark_cafs:
lao r12,end_vector,1
sto r9,r12,end_vector,1
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl _mark_stack_nodes
@@ -159,7 +159,7 @@ restore_lazy_array:
sub r4,r4,r8
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl reorder
@@ -234,7 +234,7 @@ end_finalizers_after_mark:
str r2,[sp,#-4]!
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl add_garbage_collect_time
@@ -343,7 +343,7 @@ _no_heap_use_message2:
.ifdef FINALIZERS
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl call_finalizers
.endif
@@ -946,7 +946,9 @@ _mark_next_node:
.thumb_func
_end_mark_nodes:
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
_mark_lazy_node:
@@ -1281,7 +1283,7 @@ _mark_ab_array:
lao r12,end_vector,5
sto r4,r12,end_vector,5
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl _mark_stack_nodes
@@ -1356,7 +1358,7 @@ _end_set_a_array_bits:
lao r12,end_vector,8
sto r4,r12,end_vector,8
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl _mark_stack_nodes
@@ -1421,7 +1423,7 @@ _end_set_lazy_array_bits:
lao r12,end_vector,11
sto r4,r12,end_vector,11
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl _mark_stack_nodes
@@ -2362,7 +2364,7 @@ __mark__ab__record__array:
add r7,r7,r6
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl reorder
diff --git a/thumb2startup.s b/thumb2startup.s
index 0bf6793..b753cf1 100644
--- a/thumb2startup.s
+++ b/thumb2startup.s
@@ -499,14 +499,14 @@ abc_main:
sto r4,r12,start_address,0
.endif
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl init_clean
tst r4,r4
bne init_error
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl init_timer
@@ -515,7 +515,7 @@ abc_main:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl init_profiler
.endif
@@ -524,12 +524,12 @@ abc_main:
lao r12,start_address,1
ldo r4,r12,start_address,1
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r4
.else
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl __start
.endif
@@ -537,7 +537,7 @@ abc_main:
.thumb_func
exit:
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl exit_clean
@@ -555,14 +555,14 @@ clean_init:
sto r0,r12,dll_initisialised,0
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl init_clean
tst r4,r4
bne init_dll_error
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl init_timer
@@ -571,7 +571,7 @@ clean_init:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl init_profiler
.endif
@@ -604,7 +604,7 @@ clean_fini:
ldo r9,r12,saved_a_stack_p,1
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl exit_clean
@@ -874,7 +874,9 @@ no_mark2:
.endif
mov r4,#0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
no_memory_2:
lao r0,out_of_memory_string_1,0
@@ -884,7 +886,9 @@ no_memory_2:
? movl $1,@execution_aborted
.endif
mov r0,#1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
no_memory_3:
lao r0,out_of_memory_string_1,1
@@ -899,12 +903,14 @@ no_memory_3:
bl free
mov r0,#1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
exit_clean:
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx add_execute_time
@@ -921,7 +927,7 @@ exit_clean:
ldo r4,r12,execute_time,0
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl print_time
@@ -933,7 +939,7 @@ exit_clean:
ldo r4,r12,garbage_collect_time,0
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl print_time
@@ -951,7 +957,7 @@ exit_clean:
add r4,r12
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl print_time
@@ -970,12 +976,14 @@ no_print_execution_time:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl write_profile_information
.endif
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
__driver:
@@ -1138,7 +1146,9 @@ print_time:
mov r0,r6
bl ew_print_text
.endif
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
print_sc:
@@ -1154,12 +1164,14 @@ print:
.thumb_func
end_print:
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
dump:
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl print
b halt
@@ -1256,19 +1268,25 @@ print_record:
.thumb_func
end_print_symbol:
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
print_int_node:
ldr r0,[r6,#4]
bl w_print_int
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
print_int:
mov r0,r4
bl w_print_int
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
print_char_denotation:
@@ -1287,20 +1305,26 @@ print_char_denotation:
mov r0,#0x27
bl w_print_char
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
print_char_node:
ldr r0,[r6,#4]
bl w_print_char
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
print_char:
str r4,[sp,#-4]!
bl w_print_char
add sp,sp,#4
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
print_bool:
@@ -1313,14 +1337,18 @@ print_true:
lao r0,true_c_string,0
otoa r0,true_c_string,0
bl w_print_string
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
print_false:
lao r0,false_c_string,0
otoa r0,false_c_string,0
bl w_print_string
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
print_real:
@@ -1343,13 +1371,17 @@ print_real_:
mov sp,lr
bl w_print_real
mov sp,r11
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
print_string_a2:
ldr r1,[r8]
add r0,r8,#4
bl w_print_text
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
print__chars__sc:
@@ -1365,7 +1397,9 @@ print__string__:
bl w_print_text
.thumb_func
no_print_chars:
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
push_a_r_args:
@@ -1488,7 +1522,9 @@ push_r_a_elements:
bcs push_r_a_elements_lp
ldr r4,[sp],#4
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
BtoAC:
tst r4,r4
@@ -1496,11 +1532,15 @@ BtoAC:
BtoAC_true:
lao r6,true_string,0
otoa r6,true_string,0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
BtoAC_false:
lao r6,false_string,0
otoa r6,false_string,0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
RtoAC:
.if USE_CLIB
@@ -1527,7 +1567,7 @@ ItoAC:
lao r6,sprintf_buffer,2
otoa r6,sprintf_buffer,2
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl int_to_string
@@ -1588,7 +1628,9 @@ reverse_digits:
mov r12,#0
strb r12,[r6]
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.else
mov r2,r4
lao r1,printf_int_string,0
@@ -1655,7 +1697,9 @@ D_to_S_cp_str_2:
bcs D_to_S_cp_str_1
mov r6,r8
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
eqD: ldr r4,[r6]
ldr r12,[r7]
@@ -1680,7 +1724,9 @@ eqD: ldr r4,[r6]
beq eqD_REAL
mov r4,#1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
eqD_CHAR:
eqD_INT:
@@ -1690,7 +1736,9 @@ eqD_INT:
cmp r3,r12
it eq
moveq r4,#1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
eqD_BOOL:
ldrb r3,[r6,#4]
@@ -1699,7 +1747,9 @@ eqD_BOOL:
cmp r3,r12
it eq
moveq r4,#1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
eqD_REAL:
vldr.f64 d0,[r6,#4]
@@ -1709,11 +1759,15 @@ eqD_REAL:
vmrs APSR_nzcv,fpscr
it eq
moveq r4,#1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
eqD_false:
mov r4,#0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@
@ the timer
@
@@ -1738,7 +1792,9 @@ init_timer:
lao r12,IO_time,1
sto r4,r12,IO_time,1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
get_time_diff:
@@ -1755,12 +1811,14 @@ get_time_diff:
ldr r7,[r6]
str r4,[r6]
subs r4,r4,r7
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
add_execute_time:
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl get_time_diff
lao r6,execute_time,3
@@ -1771,12 +1829,14 @@ add_time:
ldr r12,[r6]
add r4,r4,r12
str r4,[r6]
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
add_garbage_collect_time:
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl get_time_diff
lao r6,garbage_collect_time,3
@@ -1785,7 +1845,7 @@ add_garbage_collect_time:
add_IO_time:
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl get_time_diff
lao r6,IO_time,2
@@ -1897,7 +1957,7 @@ collect_3:
lao r8,garbage_collector_name,0
otoa r8,garbage_collector_name,0
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_s
.endif
@@ -1912,7 +1972,9 @@ collect_3:
.ifdef PROFILE
b profile_r
.else
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.endif
collect_2:
@@ -1921,7 +1983,7 @@ collect_2:
lao r8,garbage_collector_name,1
otoa r8,garbage_collector_name,1
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_s
.endif
@@ -1934,7 +1996,9 @@ collect_2:
.ifdef PROFILE
b profile_r
.else
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.endif
collect_1:
@@ -1943,7 +2007,7 @@ collect_1:
lao r8,garbage_collector_name,2
otoa r8,garbage_collector_name,2
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_s
.endif
@@ -1953,7 +2017,9 @@ collect_1:
.ifdef PROFILE
b profile_r
.else
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.endif
.ifdef PROFILE
@@ -1962,7 +2028,7 @@ collect_0:
lao r8,garbage_collector_name,3
otoa r8,garbage_collector_name,3
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_s
bl collect_0_
@@ -2135,7 +2201,7 @@ no_mark3:
.thumb_func
collect:
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl add_execute_time
@@ -2210,7 +2276,7 @@ no_print_stack_sizes:
add r4,r4,#63*4
lsr r4,r4,#8
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl zero_bit_vector
@@ -2235,7 +2301,7 @@ no_print_stack_sizes:
sto r14,r12,heap_end_after_copy_gc,3
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl zero_bit_vector
b end_zero_bit_vector
@@ -2246,7 +2312,7 @@ zero_all:
ldo r4,r12,heap_copied_vector_size,3
lsr r4,r4,#2
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl zero_bit_vector
@@ -2266,7 +2332,7 @@ end_zero_bit_vector:
ldr r9,[sp],#4
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl add_garbage_collect_time
@@ -2413,7 +2479,7 @@ no_mark_scan:
str r6,[sp,#-4]!
str r3,[sp,#-4]!
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl _munmap
add sp,sp,#8
@@ -2499,7 +2565,7 @@ no_heap_use_message:
.if FINALIZERS
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl call_finalizers
.endif
@@ -2747,7 +2813,9 @@ end_call_finalizers:
laol r11,__Nil-4,__Nil_o_m4,2
otoa r11,__Nil_o_m4,2
sto r11,r12,free_finalizer_list,2
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.endif
.if WRITE_HEAP
@@ -2764,7 +2832,7 @@ copy_to_compact_with_alloc_in_extra_heap:
out_of_memory_4:
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl add_garbage_collect_time
@@ -2800,7 +2868,9 @@ zero_bits1_2:
zero_bits1_5:
subs r4,r4,#1
bhs zero_bits1_4
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
reorder:
@@ -2853,7 +2923,9 @@ st_reorder_lp:
add sp,sp,#8
ldr r8,[sp],#4
ldr r9,[sp],#4
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@
@ the sliding compacting garbage collector
@@ -3151,7 +3223,7 @@ vector_at_end_2:
.thumb_func
no_copy_garbage_collection:
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl add_garbage_collect_time
@@ -3167,7 +3239,7 @@ no_copy_garbage_collection:
.thumb_func
stack_overflow:
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl add_execute_time
@@ -3203,7 +3275,7 @@ halt:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl write_profile_stack
.endif
@@ -3263,7 +3335,7 @@ eval_fill:
mov r6,r7
ldr r12,[r7]
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r12
mov r7,r6
@@ -3275,7 +3347,9 @@ eval_fill:
str r8,[r6,#4]
ldr r8,[r7,#8]
str r8,[r6,#8]
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.p2align 2
b e__system__eaind
@@ -3304,7 +3378,9 @@ __indirection:
str r8,[r6,#4]
ldr r8,[r7,#8]
str r8,[r6,#8]
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.if MARK_GC
eval_fill2:
@@ -3322,7 +3398,7 @@ eval_fill2:
mov r6,r7
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
blx r4
mov r7,r6
@@ -3334,12 +3410,14 @@ eval_fill2:
str r8,[r6,#4]
ldr r8,[r7,#8]
str r8,[r6,#8]
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.endif
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3353,7 +3431,7 @@ eval_upd_0:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3369,7 +3447,7 @@ eval_upd_1:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3385,7 +3463,7 @@ eval_upd_2:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3403,7 +3481,7 @@ eval_upd_3:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3424,7 +3502,7 @@ eval_upd_4:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3447,7 +3525,7 @@ eval_upd_5:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3472,7 +3550,7 @@ eval_upd_6:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3510,7 +3588,7 @@ eval_upd_n_lp:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3522,7 +3600,7 @@ eval_upd_8:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3534,7 +3612,7 @@ eval_upd_9:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3546,7 +3624,7 @@ eval_upd_10:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3558,7 +3636,7 @@ eval_upd_11:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3570,7 +3648,7 @@ eval_upd_12:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3582,7 +3660,7 @@ eval_upd_13:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3594,7 +3672,7 @@ eval_upd_14:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3606,7 +3684,7 @@ eval_upd_15:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3618,7 +3696,7 @@ eval_upd_16:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3630,7 +3708,7 @@ eval_upd_17:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3642,7 +3720,7 @@ eval_upd_18:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3654,7 +3732,7 @@ eval_upd_19:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3666,7 +3744,7 @@ eval_upd_20:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3678,7 +3756,7 @@ eval_upd_21:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3690,7 +3768,7 @@ eval_upd_22:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3702,7 +3780,7 @@ eval_upd_23:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3714,7 +3792,7 @@ eval_upd_24:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3726,7 +3804,7 @@ eval_upd_25:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3738,7 +3816,7 @@ eval_upd_26:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3750,7 +3828,7 @@ eval_upd_27:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3762,7 +3840,7 @@ eval_upd_28:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3774,7 +3852,7 @@ eval_upd_29:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3786,7 +3864,7 @@ eval_upd_30:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3798,7 +3876,7 @@ eval_upd_31:
.ifdef PROFILE
.align
- add lr,pc,#9
+ add lr,pc,#8
str lr,[sp,#-4]!
bl profile_n
mov r8,r4
@@ -3883,7 +3961,9 @@ cat_string_11:
@ align heap pointer
add r10,r10,#3
and r10,r10,#-4
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
gc_3: bl collect_2
b gc_r_3
@@ -3892,7 +3972,9 @@ gc_3: bl collect_2
empty_string:
lao r6,zero_length_string,0
otoa r6,zero_length_string,0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.ifdef PIC
ltol __STRING__+2,__STRING___o_2,1
@@ -3947,7 +4029,9 @@ sliceAC_copy_lp:
bne sliceAC_copy_lp
sliceAC_after_copy_lp:
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
gc_4:
bl collect_1
@@ -4000,7 +4084,9 @@ updateAC_copy_lp:
updateAC_after_copy_lp:
strb r4,[r3]
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
gc_5: bl collect_1
b r_gc_5
@@ -4062,11 +4148,15 @@ equal_string_2:
.thumb_func
equal_string_eq:
mov r4,#1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
equal_string_ne:
mov r4,#0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.section .text.cmpAC,"ax"
cmpAC:
@@ -4124,7 +4214,9 @@ cmp_string_2:
bne cmp_string_ne
.thumb_func
cmp_string_eq:
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
cmp_string_ne4:
@ to do compare bytes using and instead of ldrb
ldrb r3,[r7]
@@ -4146,10 +4238,14 @@ cmp_string_ne4:
cmp_string_ne:
bhi cmp_string_r1
mov r4,#-1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
cmp_string_r1:
mov r4,#1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.section .text.string_to_string_node,"ax"
.thumb_func
@@ -4181,7 +4277,9 @@ string_to_string_node_4:
bge string_to_string_node_2
mov r6,r8
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
string_to_string_node_gc:
@@ -4224,7 +4322,9 @@ int_array_to_node_4:
subs r4,r4,#1
bge int_array_to_node_2
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
int_array_to_node_gc:
@@ -4276,7 +4376,9 @@ real_array_to_node_4:
subs r4,r4,#1
bge real_array_to_node_2
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
real_array_to_node_gc:
@@ -4406,7 +4508,9 @@ no_collect_4574:
str r12,[r10,#8]
add r12,r10,#12
add r10,r12,r3,lsl #2
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
_create_arrayC:
add r3,r4,#3
@@ -4424,7 +4528,9 @@ no_collect_4573:
str r4,[r10,#4]
add r12,r10,#8
add r10,r12,r3,lsl #2
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
_create_arrayI:
add r12,r4,#3
@@ -4442,7 +4548,9 @@ no_collect_4572:
str r12,[r10,#8]
add r12,r10,#12
add r10,r12,r4,lsl #2
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
_create_arrayR:
add r12,r4,r4
@@ -4465,7 +4573,9 @@ no_collect_4580:
str r12,[r10,#8]
add r12,r10,#12
add r10,r12,r4,lsl #3
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
@ r4: number of elements, r3: element descriptor
@ r2: element size, r1: element a size, a0:a_element-> a0: array
@@ -4506,7 +4616,9 @@ _create_r_array_0:
lsl r2,r2,#2
mul r12,r4,r2
add r10,r10,r12
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
_create_r_array_1:
lsl r2,r2,#2
@@ -4517,7 +4629,9 @@ _fillr1_array:
_st_fillr1_array:
subs r4,r4,#1
bcs _fillr1_array
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
_create_r_array_2:
lsl r2,r2,#2
@@ -4529,7 +4643,9 @@ _fillr2_array:
_st_fillr2_array:
subs r4,r4,#1
bcs _fillr2_array
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
_create_r_array_3:
lsl r2,r2,#2
@@ -4542,7 +4658,9 @@ _fillr3_array:
_st_fillr3_array:
subs r4,r4,#1
bcs _fillr3_array
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
_create_r_array_4:
lsl r2,r2,#2
@@ -4556,7 +4674,9 @@ _fillr4_array:
_st_fillr4_array:
subs r4,r4,#1
bcs _fillr4_array
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
_create_r_array_5:
sub r2,r2,r1
@@ -4581,7 +4701,9 @@ _st_fillr5_array:
subs r4,r4,#1
bcs _fillr5_array
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
create_arrayB:
mov r7,r3
@@ -4669,7 +4791,9 @@ st_filli_array:
subs r3,r3,#1
bcs filli_array
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
create_arrayR:
add r12,r4,r4
@@ -4710,7 +4834,9 @@ st_fillr_array:
subs r4,r4,#1
bcs fillr_array
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
create_array:
@@ -4789,7 +4915,9 @@ st_fillr1_array_1:
subs r4,r4,#1
bcs fillr1_array_lp
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
create_R_array_2:
@ r4: number of elements, r3: element descriptor
@@ -4835,7 +4963,9 @@ st_fillr2_array:
subs r4,r4,#1
bcs fillr2_array_1
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
create_R_array_3:
@ r4: number of elements, r3: element descriptor
@@ -5044,7 +5174,9 @@ repl_args_b_4:
ldr r8,[r6,#4]
str r8,[r9],#4
repl_args_b_1:
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
push_arg_b:
@@ -5058,7 +5190,9 @@ push_arg_b_2:
subs r3,r3,#2
push_arg_b_1:
ldr r6,[r6,r3,lsl #2]
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
del_args:
@@ -5073,7 +5207,9 @@ del_args:
str r8,[r7,#4]
ldr r8,[r6,#8]
str r8,[r7,#8]
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
del_args_2:
bne del_args_3
@@ -5084,7 +5220,9 @@ del_args_2:
ldr r8,[r6,#8]
ldr r8,[r8]
str r8,[r7,#8]
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
del_args_3:
subs r5,r5,r4
@@ -5104,7 +5242,9 @@ del_args_copy_args:
subs r4,r4,#1
bgt del_args_copy_args
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.thumb_func
del_args_gc:
@@ -5121,7 +5261,9 @@ sin_real:
.ifdef SOFT_FP_CC
vmov d0,r0,r1
.endif
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.section .text.cos_real,"ax"
.thumb_func
@@ -5133,7 +5275,9 @@ cos_real:
.ifdef SOFT_FP_CC
vmov d0,r0,r1
.endif
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.section .text.tan_real,"ax"
.thumb_func
@@ -5145,7 +5289,9 @@ tan_real:
.ifdef SOFT_FP_CC
vmov d0,r0,r1
.endif
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.section .text.asin_real,"ax"
.thumb_func
@@ -5157,7 +5303,9 @@ asin_real:
.ifdef SOFT_FP_CC
vmov d0,r0,r1
.endif
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.section .text.acos_real,"ax"
.thumb_func
@@ -5169,7 +5317,9 @@ acos_real:
.ifdef SOFT_FP_CC
vmov d0,r0,r1
.endif
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.section .text.atan_real,"ax"
.thumb_func
@@ -5181,7 +5331,9 @@ atan_real:
.ifdef SOFT_FP_CC
vmov d0,r0,r1
.endif
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.section .text.ln_real,"ax"
.thumb_func
@@ -5193,7 +5345,9 @@ ln_real:
.ifdef SOFT_FP_CC
vmov d0,r0,r1
.endif
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.section .text.log10_real,"ax"
log10_real:
@@ -5204,7 +5358,9 @@ log10_real:
.ifdef SOFT_FP_CC
vmov d0,r0,r1
.endif
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.section .text.exp_real,"ax"
.thumb_func
@@ -5216,7 +5372,9 @@ exp_real:
.ifdef SOFT_FP_CC
vmov d0,r0,r1
.endif
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.section .text.pow_real,"ax"
.thumb_func
@@ -5233,7 +5391,9 @@ pow_real:
.ifdef SOFT_FP_CC
vmov d0,r0,r1
.endif
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.section .text.entier_real,"ax"
.thumb_func
@@ -5250,7 +5410,9 @@ entier_real:
r_to_i_real:
vcvtr.s32.f64 s0,d0
vmov r4,s0
- ldr pc,[sp],#4
+ ldr lr,[sp],#4
+ orr lr,lr,#1
+ mov pc,lr
.text