| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- .syntax unified
- .cpu cortex-m4
- .thumb
- .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
- .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.n .entry
- .loop:
- str r0, [r1], #4
- .entry:
- cmp r1, r2
- bcc.n .loop
- bx lr
- .size gc_helper_get_regs_and_clean_stack, .-gc_helper_get_regs_and_clean_stack
|