diff options
author | John van Groningen | 2015-11-02 12:27:31 +0000 |
---|---|---|
committer | John van Groningen | 2015-11-02 12:27:31 +0000 |
commit | f91fa5c17963865f91576a9f19a4fc03dae99702 (patch) | |
tree | 891a7cbe32f3e4fa5caf87437b4abbc9bd1fcd78 | |
parent | remove import or export of __eaind (diff) |
fix clean_init and clean_fini on ARM
-rw-r--r-- | armstartup.s | 13 |
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 |