summaryrefslogtreecommitdiff
path: root/thumb2copy.s
diff options
context:
space:
mode:
Diffstat (limited to 'thumb2copy.s')
-rw-r--r--thumb2copy.s91
1 files changed, 44 insertions, 47 deletions
diff --git a/thumb2copy.s b/thumb2copy.s
index 604107f..1a255bc 100644
--- a/thumb2copy.s
+++ b/thumb2copy.s
@@ -1,7 +1,7 @@
ZERO_ARITY_DESCRIPTOR_OFFSET = -4
COPY_RECORDS_WITHOUT_POINTERS_TO_END_OF_HEAP = 1
- str ASTACK_PTR,[sp,#-4]!
+ str ASTACK_PTR,[BSTACK_PTR,#-4]!
lao SCRATCH_REG,heap_p2,9
ldo HEAP_PTR,SCRATCH_REG,heap_p2,9
@@ -27,7 +27,7 @@ COPY_RECORDS_WITHOUT_POINTERS_TO_END_OF_HEAP = 1
sto ASTACK_PTR,SCRATCH_REG,heap2_begin_and_end_o_4,0
.endif
- sub sp,sp,#16
+ sub BSTACK_PTR,BSTACK_PTR,#16
lao SCRATCH_REG,caf_list,0
ldo BSTACK_0,SCRATCH_REG,caf_list,0
@@ -36,19 +36,19 @@ COPY_RECORDS_WITHOUT_POINTERS_TO_END_OF_HEAP = 1
copy_cafs_lp:
ldr SCRATCH_REG,[BSTACK_0,#-4]
- str SCRATCH_REG,[sp,#-4]!
+ str SCRATCH_REG,[BSTACK_PTR,#-4]!
add ASTACK_2,BSTACK_0,#4
ldr BSTACK_1,[BSTACK_0]
mov BSTACK_2,#-2
bl copy_lp2
- ldr BSTACK_0,[sp],#4
+ ldr BSTACK_0,[BSTACK_PTR],#4
cmp BSTACK_0,#0
bne copy_cafs_lp
end_copy_cafs:
- ldr BSTACK_1,[sp,#16]
+ ldr BSTACK_1,[BSTACK_PTR,#16]
lao SCRATCH_REG,stack_p,4
ldo ASTACK_2,SCRATCH_REG,stack_p,4
sub BSTACK_1,BSTACK_1,ASTACK_2
@@ -64,7 +64,7 @@ end_copy0:
bl copy_lp1
- add sp,sp,#16
+ add BSTACK_PTR,BSTACK_PTR,#16
lao SCRATCH_REG,heap_end_after_gc,10
sto ASTACK_PTR,SCRATCH_REG,heap_end_after_gc,10
@@ -391,7 +391,7 @@ copy_record_node2_3:
cmp SCRATCH_REG,#1
bls copy_record_node2_3_ab_or_b
- str BSTACK_0,[sp,#-4]!
+ str BSTACK_0,[BSTACK_PTR,#-4]!
add BSTACK_0,HEAP_PTR,#1
str BSTACK_0,[ASTACK_1]
@@ -410,7 +410,7 @@ copy_record_node2_3:
add ASTACK_1,HEAP_PTR,#12
- ldr BSTACK_0,[sp],#4
+ ldr BSTACK_0,[BSTACK_PTR],#4
str ASTACK_1,[HEAP_PTR,#8]
add HEAP_PTR,HEAP_PTR,#13
@@ -436,7 +436,7 @@ cp_record_arg_lp2:
record_arguments_already_copied_2:
ldr ASTACK_1,[ASTACK_0]
- ldr BSTACK_0,[sp],#4
+ ldr BSTACK_0,[BSTACK_PTR],#4
str ASTACK_1,[HEAP_PTR,#8]
add HEAP_PTR,HEAP_PTR,#12
@@ -450,7 +450,7 @@ copy_record_node2_3_ab_or_b:
blo copy_record_node2_3_b
copy_record_node2_3_ab:
- str BSTACK_0,[sp,#-4]!
+ str BSTACK_0,[BSTACK_PTR,#-4]!
add BSTACK_0,HEAP_PTR,#1
lao SCRATCH_REG,heap_p1,9
@@ -491,14 +491,14 @@ copy_record_node2_3_ab:
orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
str SCRATCH_REG,[ASTACK_1]
- ldr BSTACK_0,[sp],#4
+ ldr BSTACK_0,[BSTACK_PTR],#4
sub ASTACK_PTR,ASTACK_PTR,#4
lsl BSTACK_0,BSTACK_0,#2
sub ASTACK_PTR,ASTACK_PTR,BSTACK_0
- str ASTACK_PTR,[sp,#-4]!
+ str ASTACK_PTR,[BSTACK_PTR,#-4]!
add ASTACK_PTR,ASTACK_PTR,#1
str ASTACK_PTR,[HEAP_PTR,#8]
@@ -508,7 +508,7 @@ copy_record_node2_3_ab:
b cp_record_arg_lp3_c
copy_record_node2_3_b:
- str BSTACK_0,[sp,#-4]!
+ str BSTACK_0,[BSTACK_PTR,#-4]!
add BSTACK_0,ASTACK_PTR,#-12+1
lao SCRATCH_REG,heap_p1,10
@@ -550,7 +550,7 @@ copy_record_node2_3_b:
orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
str SCRATCH_REG,[ASTACK_1]
- ldr BSTACK_0,[sp],#4
+ ldr BSTACK_0,[BSTACK_PTR],#4
mov ASTACK_1,ASTACK_PTR
sub ASTACK_PTR,ASTACK_PTR,#4
@@ -562,7 +562,7 @@ copy_record_node2_3_b:
ldr ASTACK_1,[ASTACK_0]
- str ASTACK_PTR,[sp,#-4]!
+ str ASTACK_PTR,[BSTACK_PTR,#-4]!
add ASTACK_PTR,ASTACK_PTR,#1
cp_record_arg_lp3_c:
@@ -579,7 +579,7 @@ cp_record_arg_lp3:
subs BSTACK_0,BSTACK_0,#4
bne cp_record_arg_lp3
- ldr ASTACK_PTR,[sp],#4
+ ldr ASTACK_PTR,[BSTACK_PTR],#4
subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
@@ -588,7 +588,7 @@ cp_record_arg_lp3:
record_arguments_already_copied_3_b:
ldr ASTACK_1,[ASTACK_0]
- ldr BSTACK_0,[sp],#4
+ ldr BSTACK_0,[BSTACK_PTR],#4
sub ASTACK_1,ASTACK_1,#1
str ASTACK_1,[ASTACK_PTR,#8]
@@ -632,7 +632,7 @@ cp_arg_lp2:
b copy_lp1
copy_arity_1_node2__:
- ldr BSTACK_1,[sp],#4
+ ldr BSTACK_1,[BSTACK_PTR],#4
copy_arity_1_node2:
copy_arity_1_node2_:
str HEAP_PTR,[HEAP_FREE]
@@ -699,7 +699,7 @@ copy_selector_2:
ldr BSTACK_0,[ASTACK_1,#4]
- str BSTACK_1,[sp,#-4]!
+ str BSTACK_1,[BSTACK_PTR,#-4]!
ldr BSTACK_1,[BSTACK_0]
tst BSTACK_1,#2
@@ -733,21 +733,21 @@ copy_selector_2:
sub BSTACK_1,BSTACK_1,#12
ldr ASTACK_0,[ASTACK_0,BSTACK_1]
- ldr BSTACK_1,[sp],#4
+ ldr BSTACK_1,[BSTACK_PTR],#4
str ASTACK_0,[ASTACK_1,#4]
mov ASTACK_1,ASTACK_0
b continue_after_selector_2
copy_selector_2_1:
ldr ASTACK_0,[BSTACK_0,#4]
- ldr BSTACK_1,[sp],#4
+ ldr BSTACK_1,[BSTACK_PTR],#4
str ASTACK_0,[ASTACK_1,#4]
mov ASTACK_1,ASTACK_0
b continue_after_selector_2
copy_selector_2_2:
ldr ASTACK_0,[BSTACK_1]
- ldr BSTACK_1,[sp],#4
+ ldr BSTACK_1,[BSTACK_PTR],#4
str ASTACK_0,[ASTACK_1,#4]
mov ASTACK_1,ASTACK_0
b continue_after_selector_2
@@ -757,7 +757,7 @@ copy_selector_2_:
add ASTACK_3,ASTACK_0,#-9+4
.endif
ldr ASTACK_0,[ASTACK_0,#-9]
- ldr BSTACK_1,[sp],#4
+ ldr BSTACK_1,[BSTACK_PTR],#4
lao SCRATCH_REG,e__system__nind,9
.ifdef PIC
@@ -794,7 +794,7 @@ copy_record_selector_2:
lao SCRATCH_REG,heap_p1,11
ldr BSTACK_0,[ASTACK_1,#4]
- str ASTACK_1,[sp,#-4]!
+ str ASTACK_1,[BSTACK_PTR,#-4]!
ldo SCRATCH_REG,SCRATCH_REG,heap_p1,11
@@ -819,7 +819,7 @@ copy_record_selector_2:
ldr SCRATCH_REG,[ASTACK_1]
ands BSTACK_0,BSTACK_0,SCRATCH_REG
- ldr ASTACK_1,[sp],#4
+ ldr ASTACK_1,[BSTACK_PTR],#4
beq copy_record_selector_2_
b copy_arity_1_node2_
copy_selector_2__:
@@ -880,7 +880,7 @@ copy_strict_record_selector_2_b:
lao SCRATCH_REG,heap_p1,12
ldr BSTACK_0,[ASTACK_1,#4]
- str ASTACK_1,[sp,#-4]!
+ str ASTACK_1,[BSTACK_PTR,#-4]!
ldo SCRATCH_REG,SCRATCH_REG,heap_p1,12
@@ -905,7 +905,7 @@ copy_strict_record_selector_2_b:
ldr SCRATCH_REG,[ASTACK_1]
ands BSTACK_0,BSTACK_0,SCRATCH_REG
- ldr ASTACK_1,[sp],#4
+ ldr ASTACK_1,[BSTACK_PTR],#4
bne copy_arity_1_node2_
@@ -915,7 +915,7 @@ copy_strict_record_selector_2_:
.endif
ldr BSTACK_0,[ASTACK_0,#-9]
- str BSTACK_1,[sp,#-4]!
+ str BSTACK_1,[BSTACK_PTR,#-4]!
ldr ASTACK_0,[ASTACK_1,#4]
.ifdef PIC
@@ -956,7 +956,7 @@ copy_strict_record_selector_6:
ldr ASTACK_0,[BSTACK_0,#-4]
.endif
str ASTACK_0,[ASTACK_1]
- ldr BSTACK_1,[sp],#4
+ ldr BSTACK_1,[BSTACK_PTR],#4
tst ASTACK_0,#2
bne in_hnf_2
hlt: b hlt
@@ -965,13 +965,10 @@ copy_arity_0_node2_:
blt copy_selector_2
str ASTACK_0,[ASTACK_PTR,#-12]!
- str ASTACK_PTR,[HEAP_FREE]
- add BSTACK_0,ASTACK_PTR,#1
- @str BSTACK_0,[HEAP_FREE]
- @sub BSTACK_0,BSTACK_0,#1
- @mov BSTACK_0,ASTACK_PTR
+ str ASTACK_PTR,[ASTACK_1]
+ @add BSTACK_0,ASTACK_PTR,#1
- str BSTACK_0,[ASTACK_1]
+ str ASTACK_PTR,[HEAP_FREE]
subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
@@ -1005,7 +1002,7 @@ copy_string_2:
ldr ASTACK_1,[ASTACK_0,#4]
add ASTACK_1,ASTACK_1,#3
- str BSTACK_1,[sp,#-4]!
+ str BSTACK_1,[BSTACK_PTR,#-4]!
lsr BSTACK_0,ASTACK_1,#2
and ASTACK_1,ASTACK_1,#-4
@@ -1030,7 +1027,7 @@ cp_s_arg_lp2:
subs BSTACK_0,BSTACK_0,#1
bge cp_s_arg_lp2
- ldr BSTACK_1,[sp],#4
+ ldr BSTACK_1,[BSTACK_PTR],#4
subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
mov ASTACK_2,BSTACK_2
@@ -1046,7 +1043,7 @@ copy_array_2:
cmp ASTACK_1,SCRATCH_REG
bhs copy_string_or_array_constant
- str BSTACK_1,[sp,#-4]!
+ str BSTACK_1,[BSTACK_PTR,#-4]!
ldr BSTACK_0,[ASTACK_0,#8]
cmp BSTACK_0,#0
@@ -1277,14 +1274,14 @@ copy_array_21_ab:
cmp SCRATCH_REG,#0
beq copy_lp1
- str SCRATCH_REG,[sp,#0]
+ str SCRATCH_REG,[BSTACK_PTR,#0]
lsl BSTACK_0,BSTACK_0,#2
- str BSTACK_1,[sp,#8]
- str BSTACK_0,[sp,#4]
+ str BSTACK_1,[BSTACK_PTR,#8]
+ str BSTACK_0,[BSTACK_PTR,#4]
copy_array_21_lp_ab:
add BSTACK_2,ASTACK_2,BSTACK_0
- str BSTACK_2,[sp,#12]
+ str BSTACK_2,[BSTACK_PTR,#12]
mov BSTACK_2,#-1
b copy_lp2
@@ -1294,12 +1291,12 @@ end_copy1:
bxne lr
copy_array_21_lp_ab_next:
- ldr ASTACK_2,[sp,#12]
- ldr SCRATCH_REG,[sp]
- ldr BSTACK_1,[sp,#8]
- ldr BSTACK_0,[sp,#4]
+ ldr ASTACK_2,[BSTACK_PTR,#12]
+ ldr SCRATCH_REG,[BSTACK_PTR]
+ ldr BSTACK_1,[BSTACK_PTR,#8]
+ ldr BSTACK_0,[BSTACK_PTR,#4]
subs SCRATCH_REG,SCRATCH_REG,#1
- str SCRATCH_REG,[sp]
+ str SCRATCH_REG,[BSTACK_PTR]
bne copy_array_21_lp_ab
b copy_lp1