libctru/libctru/source/system/stack_adjust.s

47 lines
688 B
ArmAsm
Raw Normal View History

#include <3ds/asminc.h>
2014-12-30 23:37:53 +01:00
BEGIN_ASM_FUNC initSystem, weak
2014-12-30 23:37:53 +01:00
ldr r2, =saved_stack
str sp, [r2]
str lr, [r2,#4]
bl __libctru_init
ldr r2, =fake_heap_start
ldr sp, [r2]
ldr r3, =__stacksize__
ldr r3, [r3]
2014-12-31 00:00:31 +01:00
add sp, sp, r3
add sp, sp, #7
2014-12-30 23:37:53 +01:00
bics sp, sp, #7
str sp, [r2]
2015-03-02 11:41:37 +01:00
bl __appInit
bl __libc_init_array
2014-12-30 23:37:53 +01:00
ldr r2, =saved_stack
ldr lr, [r2,#4]
bx lr
END_ASM_FUNC
2014-12-30 23:37:53 +01:00
BEGIN_ASM_FUNC __ctru_exit, weak
bl __libc_fini_array
2015-03-02 11:41:37 +01:00
bl __appExit
2014-12-30 23:37:53 +01:00
ldr r2, =saved_stack
ldr sp, [r2]
b __libctru_exit
END_ASM_FUNC
2014-12-30 23:37:53 +01:00
2020-06-12 14:15:18 +02:00
.section .data.__stacksize__, "aw"
2014-12-30 23:37:53 +01:00
.align 2
__stacksize__:
.word 32 * 1024
.weak __stacksize__
2020-06-12 14:15:18 +02:00
.section .bss.saved_stack.42, "aw", %nobits
2014-12-30 23:37:53 +01:00
.align 2
saved_stack:
.space 8