1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
.include "asm/macros.inc"
.include "global.inc"
.global _start_AutoloadDoneCallback
.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 do_autoload
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 detect_main_memory_size
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 _start_ModuleParams
_23800f0: .word 0x0380fffc
_23800f4: .word OS_IrqHandler
_23800f8: .word NitroSpMain
_23800fc: .word 0xffff0000
arm_func_end _start
arm_func_start do_autoload
do_autoload:
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 _start_AutoloadDoneCallback
_2380154: .word _start_ModuleParams
arm_func_end do_autoload
arm_func_start _start_AutoloadDoneCallback
_start_AutoloadDoneCallback:
bx lr
arm_func_end _start_AutoloadDoneCallback
arm_func_start detect_main_memory_size
detect_main_memory_size:
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 detect_main_memory_size
_start_ModuleParams:
.word SDK_AUTOLOAD_LIST
.word SDK_AUTOLOAD_LIST_END
.word SDK_AUTOLOAD_START
.word SDK_STATIC_BSS_START
.word SDK_STATIC_BSS_END
|