void __libc_fini_array(void);
-void __attribute__((weak)) __attribute__((noreturn)) __ctru_exit(int rc)
+void __attribute__((weak)) __attribute__((noreturn)) __libctru_exit(int rc)
{
u32 tmp=0;
void __ctru_exit(int rc);
-void __attribute__((weak)) initSystem(void (*retAddr)(void))
+void __attribute__((weak)) __libctru_init(void (*retAddr)(void))
{
// Register newlib exit() syscall
--- /dev/null
+
+ .arm
+ .align 2
+
+ .global initSystem
+ .type initSystem, %function
+
+initSystem:
+ 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]
+ add sp, r3, #7
+ bics sp, sp, #7
+ str sp, [r2]
+
+ ldr r2, =saved_stack
+ ldr lr, [r2,#4]
+ bx lr
+
+
+ .global __ctru_exit
+ .type __ctru_exit, %function
+
+__ctru_exit:
+ ldr r2, =saved_stack
+ ldr sp, [r2]
+ b __libctru_exit
+
+ .data
+ .align 2
+__stacksize__:
+ .word 32 * 1024
+ .weak __stacksize__
+
+
+ .bss
+ .align 2
+saved_stack:
+ .space 8
+
+