mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-04 02:57:46 +00:00
bfa29f17da
Instead of putting tinygo_scanCurrentStack in scheduler_*.S files, put
them in dedicated files. The function tinygo_scanCurrentStack has
nothing to do with scheduling and so doesn't belong there. Additionally,
while scheduling code is made specific for the Cortex-M, the
tinygo_scanCurrentStack is generic to all ARM targets so this move
removes some duplication there.
Specifically:
* tinygo_scanCurrentStack is moved out of scheduler_cortexm.S as it
isn't really part of the scheduler. It is now gc_arm.S.
* Same for the AVR target.
* Same for the RISCV target.
* scheduler_gba.S is removed, using gc_arm.S instead as it only
contains tinygo_scanCurrentStack.
34 lines
785 B
ArmAsm
34 lines
785 B
ArmAsm
// Only generate .debug_frame, don't generate .eh_frame.
|
|
.cfi_sections .debug_frame
|
|
|
|
.section .text.tinygo_scanCurrentStack
|
|
.global tinygo_scanCurrentStack
|
|
.type tinygo_scanCurrentStack, %function
|
|
tinygo_scanCurrentStack:
|
|
.cfi_startproc
|
|
// Save callee-saved registers onto the stack.
|
|
#if defined(__thumb2__)
|
|
push {r4-r11, lr}
|
|
.cfi_def_cfa_offset 9*4
|
|
#else
|
|
mov r0, r8
|
|
mov r1, r9
|
|
mov r2, r10
|
|
mov r3, r11
|
|
push {r0-r3, lr}
|
|
.cfi_def_cfa_offset 5*4
|
|
push {r4-r7}
|
|
.cfi_def_cfa_offset 4*4
|
|
#endif
|
|
|
|
// Scan the stack.
|
|
mov r0, sp
|
|
bl tinygo_scanstack
|
|
|
|
// Restore stack state and return.
|
|
add sp, #32
|
|
.cfi_def_cfa_offset 1*4
|
|
pop {pc}
|
|
.cfi_endproc
|
|
.size tinygo_scanCurrentStack, .-tinygo_scanCurrentStack
|