arm7 sbss section

This commit is contained in:
PikalaxALT
2020-04-26 16:09:45 -04:00
parent b6ba429e8c
commit 03e5371132
3 changed files with 147 additions and 144 deletions
+8 -1
View File
@@ -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
-143
View File
@@ -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
+139
View File
@@ -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