]> Chaos Git - corbenik/ctrulib.git/commitdiff
allow user configurable stack
authorDave Murphy <davem@devkitpro.org>
Tue, 30 Dec 2014 22:37:53 +0000 (22:37 +0000)
committerDave Murphy <davem@devkitpro.org>
Tue, 30 Dec 2014 22:45:55 +0000 (22:45 +0000)
libctru/source/system/ctru_exit.c
libctru/source/system/initSystem.c
libctru/source/system/stack_adjust.s [new file with mode: 0644]

index 058ea7caa263e31ce1ebaccb4eb355cdfd5b692d..f4c99f1dc78fbe38d7bcee6cdb3f71e5be9f3766 100644 (file)
@@ -11,7 +11,7 @@ void __appExit();
 
 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;
 
index 080d1258c7fdf7a81f08d5ef6b342f9adacde5f2..501cfaabe8077c1d12c47749adea90193f162bed 100644 (file)
@@ -18,7 +18,7 @@ void __libc_init_array(void);
 
 void __ctru_exit(int rc);
 
-void __attribute__((weak)) initSystem(void (*retAddr)(void))
+void __attribute__((weak)) __libctru_init(void (*retAddr)(void))
 {
 
        // Register newlib exit() syscall
diff --git a/libctru/source/system/stack_adjust.s b/libctru/source/system/stack_adjust.s
new file mode 100644 (file)
index 0000000..e2d9b37
--- /dev/null
@@ -0,0 +1,49 @@
+
+       .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
+
+