diff --git a/libctru/source/system/ctru_exit.c b/libctru/source/system/ctru_exit.c index 6cd4a38..a65cc4e 100644 --- a/libctru/source/system/ctru_exit.c +++ b/libctru/source/system/ctru_exit.c @@ -15,8 +15,6 @@ void __attribute__((weak)) __attribute__((noreturn)) __libctru_exit(int rc) { u32 tmp=0; - __appExit(); - // Unmap the linear heap svcControlMemory(&tmp, __linear_heap, 0x0, __linear_heap_size, MEMOP_FREE, 0x0); diff --git a/libctru/source/system/initSystem.c b/libctru/source/system/initSystem.c index 4f1c597..b0cde6c 100644 --- a/libctru/source/system/initSystem.c +++ b/libctru/source/system/initSystem.c @@ -32,6 +32,4 @@ void __attribute__((weak)) __libctru_init(void (*retAddr)(void)) // Build argc/argv if present __system_initArgv(); - __appInit(); - } diff --git a/libctru/source/system/stack_adjust.s b/libctru/source/system/stack_adjust.s index 03513f0..2d15767 100644 --- a/libctru/source/system/stack_adjust.s +++ b/libctru/source/system/stack_adjust.s @@ -22,6 +22,8 @@ initSystem: bics sp, sp, #7 str sp, [r2] + + bl __appInit bl __libc_init_array ldr r2, =saved_stack @@ -34,6 +36,7 @@ initSystem: __ctru_exit: bl __libc_fini_array + bl __appExit ldr r2, =saved_stack ldr sp, [r2]