summaryrefslogtreecommitdiff
path: root/arm9
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-06-02 20:25:09 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-06-02 20:25:09 -0400
commit7673913ee13df86196d2054ba5861a0013e0aa48 (patch)
tree043069f27fc00d332fb3601f391962b0519afb88 /arm9
parent5c13e8c7426f71e128f370e86845a7b428d32892 (diff)
Split remaining runtime libs
Diffstat (limited to 'arm9')
-rw-r--r--arm9/arm9.lsf4
-rw-r--r--arm9/asm/RUNTIME_ARM_semihosted_console_io.s (renamed from arm9/asm/stdlibmwcc.s)233
-rw-r--r--arm9/asm/RUNTIME_CPLUS_StaticInitializers.s60
-rw-r--r--arm9/asm/RUNTIME_NITRO_eabi_init.s17
4 files changed, 164 insertions, 150 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 4d6c6220..7848df11 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -608,7 +608,9 @@ Static arm9
Object RUNTIME_u32_div_f.o
Object RUNTIME_d_div.o
Object RUNTIME_ieee_status.o
- Object stdlibmwcc.o
+ Object RUNTIME_ARM_semihosted_console_io.o
+ Object RUNTIME_CPLUS_StaticInitializers.o
+ Object RUNTIME_NITRO_eabi_init.o
}
Autoload ITCM
diff --git a/arm9/asm/stdlibmwcc.s b/arm9/asm/RUNTIME_ARM_semihosted_console_io.s
index 09737e92..7dbc699d 100644
--- a/arm9/asm/stdlibmwcc.s
+++ b/arm9/asm/RUNTIME_ARM_semihosted_console_io.s
@@ -1,149 +1,84 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .bss
-
- .global __global_destructor_chain
-__global_destructor_chain: ; 0x021D74C8
- .space 0x18
-
- .text
-
- arm_func_start sys_writec
-sys_writec: ; 0x020EC5D0
- str lr, [sp, #-0x4]!
- mov r1, r0
- mov r0, #0x3
- swi 0x123456
- ldr pc, [sp], #0x4
-
- arm_func_start sys_readc
-sys_readc: ; 0x020EC5E4
- str lr, [sp, #-0x4]!
- mov r1, #0x0
- mov r0, #0x7
- swi 0x123456
- ldr pc, [sp], #0x4
-
- arm_func_start sys_exit
-sys_exit: ; 0x020EC5F8
- mov r1, #0x0
- mov r0, #0x18
- swi 0x123456
- mov pc, lr
-
- arm_func_start __read_console
-__read_console: ; 0x020EC608
- stmdb sp!, {r3-r7,lr}
- mov r6, r2
- ldr r5, [r6, #0x0]
- mov r7, r1
- cmp r5, #0x0
- mov r4, #0x0
- bls _020EC650
-_020EC624:
- bl sys_readc
- and r1, r0, #0xff
- cmp r1, #0xd
- strb r0, [r7, r4]
- cmpne r1, #0xa
- addeq r0, r4, #0x1
- streq r0, [r6, #0x0]
- beq _020EC650
- add r4, r4, #0x1
- cmp r4, r5
- blo _020EC624
-_020EC650:
- mov r0, #0x0
- ldmia sp!, {r3-r7,pc}
-
- arm_func_start __write_console
-__write_console: ; 0x020EC658
- stmdb sp!, {r4-r6,lr}
- ldr r5, [r2, #0x0]
- mov r6, r1
- cmp r5, #0x0
- mov r4, #0x0
- bls _020EC684
-_020EC670:
- add r0, r6, r4
- bl sys_writec
- add r4, r4, #0x1
- cmp r4, r5
- blo _020EC670
-_020EC684:
- mov r0, #0x0
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start __close_console
-__close_console: ; 0x020EC68C
- mov r0, #0x0
- bx lr
-
- .extern __sinit__
- arm_func_start __call_static_initializers
-__call_static_initializers: ; 0x020EC694
- stmdb sp!, {r4,lr}
- ldr r4, _020EC6BC ; =__sinit__
- b _020EC6A8
-_020EC6A0:
- blx r0
- add r4, r4, #0x4
-_020EC6A8:
- cmp r4, #0x0
- ldrne r0, [r4, #0x0]
- cmpne r0, #0x0
- bne _020EC6A0
- ldmia sp!, {r4,pc}
- .balign 4
-_020EC6BC: .word __sinit__
-
- arm_func_start __destroy_global_chain
-__destroy_global_chain: ; 0x020EC6C0
- stmdb sp!, {r3-r5,lr}
- ldr r4, _020EC700 ; =__global_destructor_chain
- ldr r2, [r4, #0x0]
- cmp r2, #0x0
- ldmeqia sp!, {r3-r5,pc}
-_020EC6D4: ; 0x020EC6D4
- mvn r5, #0x0
-_020EC6D8:
- ldr r0, [r2, #0x0]
- mov r1, r5
- str r0, [r4, #0x0]
- ldr r0, [r2, #0x8]
- ldr r2, [r2, #0x4]
- blx r2
- ldr r2, [r4, #0x0]
- cmp r2, #0x0
- bne _020EC6D8
- ldmia sp!, {r3-r5,pc}
- .balign 4
-_020EC700: .word __global_destructor_chain
-
- arm_func_start _ExitProcess
-_ExitProcess: ; 0x020EC704
- ldr ip, _020EC70C ; =sys_exit
- bx r12
- .balign 4
-_020EC70C: .word sys_exit
-
- .section .exception,8
-
- .section .exceptix,4
-
- .word __read_console
- .short 81
- .word 0x00300F00
- .word __write_console
- .short 53
- .word 0x00200700
- .word __call_static_initializers
- .short 45
- .word 0x00100100
- .word __destroy_global_chain
- .short 69
- .word 0x00200300
- .word _ExitProcess
- .short 13
- .word 0x00000000
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start sys_writec
+sys_writec: ; 0x020EC5D0
+ str lr, [sp, #-0x4]!
+ mov r1, r0
+ mov r0, #0x3
+ swi 0x123456
+ ldr pc, [sp], #0x4
+
+ arm_func_start sys_readc
+sys_readc: ; 0x020EC5E4
+ str lr, [sp, #-0x4]!
+ mov r1, #0x0
+ mov r0, #0x7
+ swi 0x123456
+ ldr pc, [sp], #0x4
+
+ arm_func_start sys_exit
+sys_exit: ; 0x020EC5F8
+ mov r1, #0x0
+ mov r0, #0x18
+ swi 0x123456
+ mov pc, lr
+
+ arm_func_start __read_console
+__read_console: ; 0x020EC608
+ stmdb sp!, {r3-r7,lr}
+ mov r6, r2
+ ldr r5, [r6, #0x0]
+ mov r7, r1
+ cmp r5, #0x0
+ mov r4, #0x0
+ bls _020EC650
+_020EC624:
+ bl sys_readc
+ and r1, r0, #0xff
+ cmp r1, #0xd
+ strb r0, [r7, r4]
+ cmpne r1, #0xa
+ addeq r0, r4, #0x1
+ streq r0, [r6, #0x0]
+ beq _020EC650
+ add r4, r4, #0x1
+ cmp r4, r5
+ blo _020EC624
+_020EC650:
+ mov r0, #0x0
+ ldmia sp!, {r3-r7,pc}
+
+ arm_func_start __write_console
+__write_console: ; 0x020EC658
+ stmdb sp!, {r4-r6,lr}
+ ldr r5, [r2, #0x0]
+ mov r6, r1
+ cmp r5, #0x0
+ mov r4, #0x0
+ bls _020EC684
+_020EC670:
+ add r0, r6, r4
+ bl sys_writec
+ add r4, r4, #0x1
+ cmp r4, r5
+ blo _020EC670
+_020EC684:
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,pc}
+
+ arm_func_start __close_console
+__close_console: ; 0x020EC68C
+ mov r0, #0x0
+ bx lr
+
+ .section .exceptix,4
+
+ .word __read_console
+ .short 81
+ .word 0x00300F00
+ .word __write_console
+ .short 53
+ .word 0x00200700 \ No newline at end of file
diff --git a/arm9/asm/RUNTIME_CPLUS_StaticInitializers.s b/arm9/asm/RUNTIME_CPLUS_StaticInitializers.s
new file mode 100644
index 00000000..fc0a62bc
--- /dev/null
+++ b/arm9/asm/RUNTIME_CPLUS_StaticInitializers.s
@@ -0,0 +1,60 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .bss
+
+ .global __global_destructor_chain
+__global_destructor_chain: ; 0x021D74C8
+ .space 0x18
+
+ .text
+
+ .extern __sinit__
+ arm_func_start __call_static_initializers
+__call_static_initializers: ; 0x020EC694
+ stmdb sp!, {r4,lr}
+ ldr r4, _020EC6BC ; =__sinit__
+ b _020EC6A8
+_020EC6A0:
+ blx r0
+ add r4, r4, #0x4
+_020EC6A8:
+ cmp r4, #0x0
+ ldrne r0, [r4, #0x0]
+ cmpne r0, #0x0
+ bne _020EC6A0
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020EC6BC: .word __sinit__
+
+ arm_func_start __destroy_global_chain
+__destroy_global_chain: ; 0x020EC6C0
+ stmdb sp!, {r3-r5,lr}
+ ldr r4, _020EC700 ; =__global_destructor_chain
+ ldr r2, [r4, #0x0]
+ cmp r2, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+_020EC6D4: ; 0x020EC6D4
+ mvn r5, #0x0
+_020EC6D8:
+ ldr r0, [r2, #0x0]
+ mov r1, r5
+ str r0, [r4, #0x0]
+ ldr r0, [r2, #0x8]
+ ldr r2, [r2, #0x4]
+ blx r2
+ ldr r2, [r4, #0x0]
+ cmp r2, #0x0
+ bne _020EC6D8
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020EC700: .word __global_destructor_chain
+
+ .section .exceptix,4
+
+ .word __call_static_initializers
+ .short 45
+ .word 0x00100100
+ .word __destroy_global_chain
+ .short 69
+ .word 0x00200300
diff --git a/arm9/asm/RUNTIME_NITRO_eabi_init.s b/arm9/asm/RUNTIME_NITRO_eabi_init.s
new file mode 100644
index 00000000..ae7699fc
--- /dev/null
+++ b/arm9/asm/RUNTIME_NITRO_eabi_init.s
@@ -0,0 +1,17 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start _ExitProcess
+_ExitProcess: ; 0x020EC704
+ ldr ip, _020EC70C ; =sys_exit
+ bx r12
+ .balign 4
+_020EC70C: .word sys_exit
+
+ .section .exceptix,4
+
+ .word _ExitProcess
+ .short 13
+ .word 0x00000000