summaryrefslogtreecommitdiff
path: root/asmrun/arm.S
diff options
context:
space:
mode:
Diffstat (limited to 'asmrun/arm.S')
-rw-r--r--asmrun/arm.S11
1 files changed, 8 insertions, 3 deletions
diff --git a/asmrun/arm.S b/asmrun/arm.S
index c32b4b6674..98fdfcfe32 100644
--- a/asmrun/arm.S
+++ b/asmrun/arm.S
@@ -91,11 +91,13 @@ caml_allocN:
/* Record return address and desired size */
ldr alloc_limit, .Lcaml_last_return_address
str lr, [alloc_limit, #0]
- str r10, .Lcaml_requested_size
+ ldr alloc_limit, .LLcaml_requested_size
+ str r10, [alloc_limit, #0]
/* Invoke GC */
bl .Linvoke_gc
/* Try again */
- ldr r10, .Lcaml_requested_size
+ ldr r10, .LLcaml_requested_size
+ ldr r10, [r10, #0]
b caml_allocN
/* Shared code to invoke the GC */
@@ -323,9 +325,12 @@ caml_ml_array_bound_error:
.LLtrap_handler: .word .Ltrap_handler
.Lcaml_apply2: .word caml_apply2
.Lcaml_apply3: .word caml_apply3
-.Lcaml_requested_size: .word 0
+.LLcaml_requested_size: .word .Lcaml_requested_size
.Lcaml_array_bound_error: .word caml_array_bound_error
+.data
+.Lcaml_requested_size: .word 0
+
/* GC roots for callback */
.data