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.
Этот коммит содержится в:
родитель
16c2d84c49
коммит
ceeba528e7
2 изменённых файлов: 21 добавлений и 1 удалений
19
src/runtime/scheduler_gba.S
Обычный файл
19
src/runtime/scheduler_gba.S
Обычный файл
|
@ -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",
|
||||
"extra-files": [
|
||||
"targets/gameboy-advance.s"
|
||||
"targets/gameboy-advance.s",
|
||||
"src/runtime/scheduler_gba.S"
|
||||
],
|
||||
"gdb": "gdb-multiarch",
|
||||
"emulator": ["mgba", "-3"]
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче