summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--armstartup.s13
1 files changed, 8 insertions, 5 deletions
diff --git a/armstartup.s b/armstartup.s
index b65db94..ef6d1e0 100644
--- a/armstartup.s
+++ b/armstartup.s
@@ -520,7 +520,7 @@ init_error:
.globl clean_init
clean_init:
- stmdb sp!,{r4-r11}
+ stmdb sp!,{r4-r11,lr}
lao r12,dll_initisialised,0
mov r0,#1
@@ -543,7 +543,9 @@ clean_init:
.endif
lao r12,saved_heap_p,0
- sto r10,r12,saved_heap_p,0
+ otoa r12,saved_heap_p,0
+ str r10,[r12]
+ str r5,[r12,#4]
lao r12,saved_a_stack_p,0
sto r9,r12,saved_a_stack_p,0
@@ -556,10 +558,12 @@ init_dll_error:
.globl clean_fini
clean_fini:
- stmdb sp!,{r4-r11}
+ stmdb sp!,{r4-r11,lr}
lao r12,saved_heap_p,1
- ldo r10,r12,saved_heap_p,1
+ otoa r12,saved_heap_p,1
+ ldr r10,[r12]
+ ldr r5,[r12,#4]
lao r12,saved_a_stack_p,1
ldo r9,r12,saved_a_stack_p,1
@@ -3043,7 +3047,6 @@ halt:
.ltorg
e__system__eaind:
-__eaind:
eval_fill:
str r6,[r9],#4
mov r6,r7