mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-16 10:43:29 +00:00
runtime: copy stack scan assembly for GBA
The GC stack scanning code was implemented in the Cortex-M assembly, which meant that it was not available on the GBA which is pre-cortex. This change adds a copy of the relevant code into a new asembly file which is used on the GBA.
This commit is contained in:
@@ -0,0 +1,19 @@
|
|||||||
|
.section .text.tinygo_scanCurrentStack
|
||||||
|
.global tinygo_scanCurrentStack
|
||||||
|
.type tinygo_scanCurrentStack, %function
|
||||||
|
tinygo_scanCurrentStack:
|
||||||
|
// Save callee-saved registers onto the stack.
|
||||||
|
mov r0, r8
|
||||||
|
mov r1, r9
|
||||||
|
mov r2, r10
|
||||||
|
mov r3, r11
|
||||||
|
push {r0-r3, lr}
|
||||||
|
push {r4-r7}
|
||||||
|
|
||||||
|
// Scan the stack.
|
||||||
|
mov r0, sp
|
||||||
|
bl tinygo_scanstack
|
||||||
|
|
||||||
|
// Restore stack state and return.
|
||||||
|
add sp, #32
|
||||||
|
pop {pc}
|
||||||
@@ -25,7 +25,8 @@
|
|||||||
],
|
],
|
||||||
"linkerscript": "targets/gameboy-advance.ld",
|
"linkerscript": "targets/gameboy-advance.ld",
|
||||||
"extra-files": [
|
"extra-files": [
|
||||||
"targets/gameboy-advance.s"
|
"targets/gameboy-advance.s",
|
||||||
|
"src/runtime/scheduler_gba.S"
|
||||||
],
|
],
|
||||||
"gdb": "gdb-multiarch",
|
"gdb": "gdb-multiarch",
|
||||||
"emulator": ["mgba", "-3"]
|
"emulator": ["mgba", "-3"]
|
||||||
|
|||||||
Reference in New Issue
Block a user