From 9d63932b3d82752e83281dacead20d412b9e34bb Mon Sep 17 00:00:00 2001 From: Damien <damien.p.george@gmail.com> Date: Tue, 22 Oct 2013 21:13:59 +0100 Subject: [PATCH] Add gchelper.s, to load registers and clean stack for GC. --- stm/gchelper.s | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 stm/gchelper.s diff --git a/stm/gchelper.s b/stm/gchelper.s new file mode 100644 index 0000000000..af19cc9116 --- /dev/null +++ b/stm/gchelper.s @@ -0,0 +1,36 @@ + .syntax unified + .cpu cortex-m4 + .thumb + .text + .align 2 + +@ void gc_helper_get_regs_and_clean_stack(r0=uint regs[10], r1=heap_end) + .global gc_helper_get_regs_and_clean_stack + .thumb + .thumb_func + .type gc_helper_get_regs_and_clean_stack, %function +gc_helper_get_regs_and_clean_stack: + @ store registers into given array + str r4, [r0], #4 + str r5, [r0], #4 + str r6, [r0], #4 + str r7, [r0], #4 + str r8, [r0], #4 + str r9, [r0], #4 + str r10, [r0], #4 + str r11, [r0], #4 + str r12, [r0], #4 + str r13, [r0], #4 + + @ clean the stack from given pointer up to current sp + movs r0, #0 + mov r2, sp + b .entry +.loop: + str r0, [r1], #4 +.entry: + cmp r1, r2 + bcc .loop + bx lr + + .size gc_helper_get_regs_and_clean_stack, .-gc_helper_get_regs_and_clean_stack -- GitLab