diff options
author | Damien George <damien.p.george@gmail.com> | 2014-02-10 22:50:44 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-02-10 22:50:44 +0000 |
commit | ed378cd12f05c78c735dffe1c0a6b3cb4337e67d (patch) | |
tree | 51681fb36fef80a6e5ec401872bfed172171f57a /stm/gchelper.s | |
parent | d46ca25757b9021809946bb7274376c410b699eb (diff) | |
download | micropython-ed378cd12f05c78c735dffe1c0a6b3cb4337e67d.tar.gz micropython-ed378cd12f05c78c735dffe1c0a6b3cb4337e67d.zip |
stm: Tidy up memory labels; optimise GC root scanning.
Addresses issues #272 and #273.
Diffstat (limited to 'stm/gchelper.s')
-rw-r--r-- | stm/gchelper.s | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/stm/gchelper.s b/stm/gchelper.s index f8735d2830..6baedcdd0e 100644 --- a/stm/gchelper.s +++ b/stm/gchelper.s @@ -4,6 +4,32 @@ .text .align 2 +@ uint gc_helper_get_regs_and_sp(r0=uint regs[10]) + .global gc_helper_get_regs_and_sp + .thumb + .thumb_func + .type gc_helper_get_regs_and_sp, %function +gc_helper_get_regs_and_sp: + @ 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 + + @ return the sp + mov r0, sp + bx lr + + +@ this next function is now obsolete + + .size gc_helper_get_regs_and_clean_stack, .-gc_helper_get_regs_and_clean_stack @ void gc_helper_get_regs_and_clean_stack(r0=uint regs[10], r1=heap_end) .global gc_helper_get_regs_and_clean_stack .thumb |