summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-04-26 16:09:45 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2020-04-26 16:09:45 -0400
commit03e537113245d91ea32ee899cbbddc083a2c3023 (patch)
tree10b5e9c901126493e271ba96bab0e04caf3f0cde
parentb6ba429e8c355db4c79044e9b07a652019cade95 (diff)
arm7 sbss section
-rw-r--r--arm7/arm7.lcf9
-rw-r--r--arm7/asm/arm7_rom.s143
-rw-r--r--arm7/asm/crt0.s139
3 files changed, 147 insertions, 144 deletions
diff --git a/arm7/arm7.lcf b/arm7/arm7.lcf
index 5552835b..fdffb4d0 100644
--- a/arm7/arm7.lcf
+++ b/arm7/arm7.lcf
@@ -1,5 +1,6 @@
MEMORY {
.text (RX) : ORIGIN=0x02380000, LENGTH=0
+ .sbss (RWX) : ORIGIN=AFTER(.text), LENGTH=0
.itcm (RWX) : ORIGIN=0x027E0000, LENGTH=0
.dtcm (RWX) : ORIGIN=0x037F8000, LENGTH=0
.ewram (RW) : ORIGIN=0x06000000, LENGTH=0
@@ -9,9 +10,15 @@ MEMORY {
SECTIONS {
#include "undefined_syms.txt"
.text : AT (0x0) {
- arm7_rom.o (.text)
+ crt0.o (.text)
} > .text
+ .sbss : {
+ SDK_STATIC_BSS_START = .;
+ SDK_STATIC_BSS_END = .;
+ } > .sbss
+
+ SDK_AUTOLOAD_START = .;
.itcm : AT (0x1b0) {
arm7_rom.o (.itcm)
} > .itcm
diff --git a/arm7/asm/arm7_rom.s b/arm7/asm/arm7_rom.s
index 6691475b..d22e0d18 100644
--- a/arm7/asm/arm7_rom.s
+++ b/arm7/asm/arm7_rom.s
@@ -1,150 +1,7 @@
/* arm7_rom.s TODO: Disassemble */
.include "asm/macros.inc"
.include "global.inc"
- .global ARM7AutoLoad
- .section .text
- arm_func_start _start
-
-_start:
- mov ip, #67108864 ; 0x4000000
- str ip, [ip, #520] ; 0x208
- ldr r1, _23800cc
- mov r0, #58720256 ; 0x3800000
- cmp r0, r1
- movpl r1, r0
- ldr r2, _23800d0
- mov r0, #0
-_02380020:
- cmp r1, r2
- stmltia r1!, {r0}
- blt _02380020
- mov r0, #19
- msr CPSR_c, r0
- ldr sp, _23800d4
- mov r0, #18
- msr CPSR_c, r0
- ldr r0, _23800d8
- mov sp, r0
- ldr r1, _23800dc
- sub r1, r0, r1
- mov r0, #31
- msr CPSR_fsxc, r0
- sub sp, r1, #4
- ldr r0, _23800e0
- ldr r1, _23800e4
- add r2, r1, #352 ; 0x160
-_02380068:
- ldr r3, [r0], #4
- str r3, [r1], #4
- cmp r1, r2
- bmi _02380068
- ldr r0, _23800e8
- add r2, r1, #32
-_02380080:
- ldr r3, [r0], #4
- str r3, [r1], #4
- cmp r1, r2
- bmi _02380080
- bl FUN_2380100
- ldr r0, _23800ec
- ldr r1, [r0, #12]
- ldr r2, [r0, #16]
- mov r0, #0
-_023800a4:
- cmp r1, r2
- strcc r0, [r1], #4
- bcc _023800a4
- bl FUN_238015C
- ldr r1, _23800f0
- ldr r0, _23800f4
- str r0, [r1]
- ldr r1, _23800f8
- ldr lr, _23800fc
- bx r1
-_23800cc: .word SDK_STATIC_BSS_START
-_23800d0: .word 0x0380ff00
-_23800d4: .word 0x0380ffc0
-_23800d8: .word 0x0380ff80
-_23800dc: .word 0x00000400
-_23800e0: .word 0x023fe940
-_23800e4: .word 0x027ffa80
-_23800e8: .word 0x023fe904
-_23800ec: .word _2380198
-_23800f0: .word 0x0380fffc
-_23800f4: .word 0x037f853c
-_23800f8: .word 0x037f8468
-_23800fc: .word 0xffff0000
- arm_func_end _start
-
- arm_func_start FUN_2380100
-FUN_2380100:
- ldr r0, _2380154
- ldr r1, [r0]
- ldr r2, [r0, #4]
- ldr r3, [r0, #8]
-_02380110:
- cmp r1, r2
- beq _02380150
- ldr r4, [r1], #4
- ldr r5, [r1], #4
- add r6, r4, r5
-_02380124:
- cmp r4, r6
- ldrmi r7, [r3], #4
- strmi r7, [r4], #4
- bmi _02380124
- ldr r5, [r1], #4
- add r6, r4, r5
- mov r7, #0
-_02380140:
- cmp r4, r6
- strcc r7, [r4], #4
- bcc _02380140
- beq _02380110
-_02380150:
- b ARM7AutoLoad
-_2380154: .word _2380198
-ARM7AutoLoad:
- bx lr
- arm_func_end FUN_2380100
-
- arm_func_start FUN_238015C
-FUN_238015C:
- mov r0, #1
- mov r1, #0
- ldr r2, _2380194
- sub r3, r2, #4194304 ; 0x400000
-_0238016c:
- strh r1, [r2]
- ldrh ip, [r3]
- cmp r1, ip
- movne r0, #2
- bne _0238018c
- add r1, r1, #1
- cmp r1, #2
- bne _0238016c
-_0238018c:
- strh r0, [r2]
- bx lr
-_2380194: .word 0x027ffffa
-_2380198:
- .word SDK_AUTOLOAD_LIST
- .word SDK_AUTOLOAD_LIST_END
- .word SDK_AUTOLOAD_START
- .word SDK_STATIC_BSS_START
- .word SDK_STATIC_BSS_END
- arm_func_end FUN_238015C
-
- .balign 16, 0
-
- .global SDK_STATIC_BSS_START
- .global SDK_STATIC_BSS_END
-SDK_STATIC_BSS_START:
-SDK_STATIC_BSS_END:
-
- .global SDK_AUTOLOAD_START
-SDK_AUTOLOAD_START:
.section .itcm
.incbin "baserom.nds", 0x30D1B0, 0xDC
diff --git a/arm7/asm/crt0.s b/arm7/asm/crt0.s
new file mode 100644
index 00000000..d25a70dd
--- /dev/null
+++ b/arm7/asm/crt0.s
@@ -0,0 +1,139 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .global ARM7AutoLoad
+
+ .section .text
+ arm_func_start _start
+
+_start:
+ mov ip, #67108864 ; 0x4000000
+ str ip, [ip, #520] ; 0x208
+ ldr r1, _23800cc
+ mov r0, #58720256 ; 0x3800000
+ cmp r0, r1
+ movpl r1, r0
+ ldr r2, _23800d0
+ mov r0, #0
+_02380020:
+ cmp r1, r2
+ stmltia r1!, {r0}
+ blt _02380020
+ mov r0, #19
+ msr CPSR_c, r0
+ ldr sp, _23800d4
+ mov r0, #18
+ msr CPSR_c, r0
+ ldr r0, _23800d8
+ mov sp, r0
+ ldr r1, _23800dc
+ sub r1, r0, r1
+ mov r0, #31
+ msr CPSR_fsxc, r0
+ sub sp, r1, #4
+ ldr r0, _23800e0
+ ldr r1, _23800e4
+ add r2, r1, #352 ; 0x160
+_02380068:
+ ldr r3, [r0], #4
+ str r3, [r1], #4
+ cmp r1, r2
+ bmi _02380068
+ ldr r0, _23800e8
+ add r2, r1, #32
+_02380080:
+ ldr r3, [r0], #4
+ str r3, [r1], #4
+ cmp r1, r2
+ bmi _02380080
+ bl FUN_2380100
+ ldr r0, _23800ec
+ ldr r1, [r0, #12]
+ ldr r2, [r0, #16]
+ mov r0, #0
+_023800a4:
+ cmp r1, r2
+ strcc r0, [r1], #4
+ bcc _023800a4
+ bl FUN_238015C
+ ldr r1, _23800f0
+ ldr r0, _23800f4
+ str r0, [r1]
+ ldr r1, _23800f8
+ ldr lr, _23800fc
+ bx r1
+_23800cc: .word SDK_STATIC_BSS_START
+_23800d0: .word 0x0380ff00
+_23800d4: .word 0x0380ffc0
+_23800d8: .word 0x0380ff80
+_23800dc: .word 0x00000400
+_23800e0: .word 0x023fe940
+_23800e4: .word 0x027ffa80
+_23800e8: .word 0x023fe904
+_23800ec: .word _2380198
+_23800f0: .word 0x0380fffc
+_23800f4: .word 0x037f853c
+_23800f8: .word 0x037f8468
+_23800fc: .word 0xffff0000
+ arm_func_end _start
+
+ arm_func_start FUN_2380100
+FUN_2380100:
+ ldr r0, _2380154
+ ldr r1, [r0]
+ ldr r2, [r0, #4]
+ ldr r3, [r0, #8]
+_02380110:
+ cmp r1, r2
+ beq _02380150
+ ldr r4, [r1], #4
+ ldr r5, [r1], #4
+ add r6, r4, r5
+_02380124:
+ cmp r4, r6
+ ldrmi r7, [r3], #4
+ strmi r7, [r4], #4
+ bmi _02380124
+ ldr r5, [r1], #4
+ add r6, r4, r5
+ mov r7, #0
+_02380140:
+ cmp r4, r6
+ strcc r7, [r4], #4
+ bcc _02380140
+ beq _02380110
+_02380150:
+ b ARM7AutoLoad
+_2380154: .word _2380198
+ARM7AutoLoad:
+ bx lr
+ arm_func_end FUN_2380100
+
+ arm_func_start FUN_238015C
+FUN_238015C:
+ mov r0, #1
+ mov r1, #0
+ ldr r2, _2380194
+ sub r3, r2, #4194304 ; 0x400000
+_0238016c:
+ strh r1, [r2]
+ ldrh ip, [r3]
+ cmp r1, ip
+ movne r0, #2
+ bne _0238018c
+ add r1, r1, #1
+ cmp r1, #2
+ bne _0238016c
+_0238018c:
+ strh r0, [r2]
+ bx lr
+_2380194: .word 0x027ffffa
+ arm_func_end FUN_238015C
+
+_2380198:
+ .word SDK_AUTOLOAD_LIST
+ .word SDK_AUTOLOAD_LIST_END
+ .word SDK_AUTOLOAD_START
+ .word SDK_STATIC_BSS_START
+ .word SDK_STATIC_BSS_END
+
+ .balign 16, 0