summaryrefslogtreecommitdiff
path: root/asm/SDK/OS/OSNandbootInfo.s
blob: 4e008f28d70ff33f685055fe82f97696247d95b7 (plain)
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global __OSWriteNandbootInfo
__OSWriteNandbootInfo:
/* 802741B4 0026FE14  94 21 FF 60 */	stwu r1, -0xa0(r1)
/* 802741B8 0026FE18  7C 08 02 A6 */	mflr r0
/* 802741BC 0026FE1C  39 03 00 04 */	addi r8, r3, 4
/* 802741C0 0026FE20  38 E0 00 00 */	li r7, 0
/* 802741C4 0026FE24  90 01 00 A4 */	stw r0, 0xa4(r1)
/* 802741C8 0026FE28  38 00 00 40 */	li r0, 0x40
/* 802741CC 0026FE2C  93 E1 00 9C */	stw r31, 0x9c(r1)
/* 802741D0 0026FE30  7C 7F 1B 78 */	mr r31, r3
/* 802741D4 0026FE34  7C 09 03 A6 */	mtctr r0
lbl_802741D8:
/* 802741D8 0026FE38  80 88 00 00 */	lwz r4, 0(r8)
/* 802741DC 0026FE3C  80 08 00 04 */	lwz r0, 4(r8)
/* 802741E0 0026FE40  7C E7 22 14 */	add r7, r7, r4
/* 802741E4 0026FE44  80 88 00 08 */	lwz r4, 8(r8)
/* 802741E8 0026FE48  7C E7 02 14 */	add r7, r7, r0
/* 802741EC 0026FE4C  80 08 00 0C */	lwz r0, 0xc(r8)
/* 802741F0 0026FE50  7C E7 22 14 */	add r7, r7, r4
/* 802741F4 0026FE54  80 88 00 10 */	lwz r4, 0x10(r8)
/* 802741F8 0026FE58  7C E7 02 14 */	add r7, r7, r0
/* 802741FC 0026FE5C  80 08 00 14 */	lwz r0, 0x14(r8)
/* 80274200 0026FE60  7C E7 22 14 */	add r7, r7, r4
/* 80274204 0026FE64  80 88 00 18 */	lwz r4, 0x18(r8)
/* 80274208 0026FE68  7C E7 02 14 */	add r7, r7, r0
/* 8027420C 0026FE6C  80 08 00 1C */	lwz r0, 0x1c(r8)
/* 80274210 0026FE70  7C E7 22 14 */	add r7, r7, r4
/* 80274214 0026FE74  80 88 00 20 */	lwz r4, 0x20(r8)
/* 80274218 0026FE78  7C E7 02 14 */	add r7, r7, r0
/* 8027421C 0026FE7C  80 08 00 24 */	lwz r0, 0x24(r8)
/* 80274220 0026FE80  7C E7 22 14 */	add r7, r7, r4
/* 80274224 0026FE84  80 88 00 28 */	lwz r4, 0x28(r8)
/* 80274228 0026FE88  7C E7 02 14 */	add r7, r7, r0
/* 8027422C 0026FE8C  80 08 00 2C */	lwz r0, 0x2c(r8)
/* 80274230 0026FE90  7C E7 22 14 */	add r7, r7, r4
/* 80274234 0026FE94  80 88 00 30 */	lwz r4, 0x30(r8)
/* 80274238 0026FE98  7C E7 02 14 */	add r7, r7, r0
/* 8027423C 0026FE9C  80 08 00 34 */	lwz r0, 0x34(r8)
/* 80274240 0026FEA0  7C E7 22 14 */	add r7, r7, r4
/* 80274244 0026FEA4  80 88 00 38 */	lwz r4, 0x38(r8)
/* 80274248 0026FEA8  7C E7 02 14 */	add r7, r7, r0
/* 8027424C 0026FEAC  80 08 00 3C */	lwz r0, 0x3c(r8)
/* 80274250 0026FEB0  7C E7 22 14 */	add r7, r7, r4
/* 80274254 0026FEB4  39 08 00 40 */	addi r8, r8, 0x40
/* 80274258 0026FEB8  7C E7 02 14 */	add r7, r7, r0
/* 8027425C 0026FEBC  42 00 FF 7C */	bdnz lbl_802741D8
/* 80274260 0026FEC0  80 08 00 00 */	lwz r0, 0(r8)
/* 80274264 0026FEC4  3C C0 80 43 */	lis r6, lbl_80433F08@ha
/* 80274268 0026FEC8  80 A8 00 04 */	lwz r5, 4(r8)
/* 8027426C 0026FECC  38 81 00 08 */	addi r4, r1, 8
/* 80274270 0026FED0  7C E7 02 14 */	add r7, r7, r0
/* 80274274 0026FED4  80 08 00 08 */	lwz r0, 8(r8)
/* 80274278 0026FED8  7C E7 2A 14 */	add r7, r7, r5
/* 8027427C 0026FEDC  80 A8 00 0C */	lwz r5, 0xc(r8)
/* 80274280 0026FEE0  7C E7 02 14 */	add r7, r7, r0
/* 80274284 0026FEE4  80 08 00 10 */	lwz r0, 0x10(r8)
/* 80274288 0026FEE8  7C E7 2A 14 */	add r7, r7, r5
/* 8027428C 0026FEEC  80 A8 00 14 */	lwz r5, 0x14(r8)
/* 80274290 0026FEF0  7C E7 02 14 */	add r7, r7, r0
/* 80274294 0026FEF4  80 08 00 18 */	lwz r0, 0x18(r8)
/* 80274298 0026FEF8  7C E7 2A 14 */	add r7, r7, r5
/* 8027429C 0026FEFC  38 A0 00 02 */	li r5, 2
/* 802742A0 0026FF00  7C E7 02 14 */	add r7, r7, r0
/* 802742A4 0026FF04  90 E3 00 00 */	stw r7, 0(r3)
/* 802742A8 0026FF08  38 66 3F 08 */	addi r3, r6, lbl_80433F08@l
/* 802742AC 0026FF0C  48 07 41 E9 */	bl NANDPrivateOpen
/* 802742B0 0026FF10  2C 03 00 00 */	cmpwi r3, 0
/* 802742B4 0026FF14  40 82 00 40 */	bne lbl_802742F4
/* 802742B8 0026FF18  7F E4 FB 78 */	mr r4, r31
/* 802742BC 0026FF1C  38 61 00 08 */	addi r3, r1, 8
/* 802742C0 0026FF20  38 A0 10 20 */	li r5, 0x1020
/* 802742C4 0026FF24  48 07 36 DD */	bl NANDWrite
/* 802742C8 0026FF28  28 03 10 20 */	cmplwi r3, 0x1020
/* 802742CC 0026FF2C  41 82 00 14 */	beq lbl_802742E0
/* 802742D0 0026FF30  38 61 00 08 */	addi r3, r1, 8
/* 802742D4 0026FF34  48 07 43 B5 */	bl NANDClose
/* 802742D8 0026FF38  38 60 00 00 */	li r3, 0
/* 802742DC 0026FF3C  48 00 00 1C */	b lbl_802742F8
lbl_802742E0:
/* 802742E0 0026FF40  38 61 00 08 */	addi r3, r1, 8
/* 802742E4 0026FF44  48 07 43 A5 */	bl NANDClose
/* 802742E8 0026FF48  7C 60 00 34 */	cntlzw r0, r3
/* 802742EC 0026FF4C  54 03 D9 7E */	srwi r3, r0, 5
/* 802742F0 0026FF50  48 00 00 08 */	b lbl_802742F8
lbl_802742F4:
/* 802742F4 0026FF54  38 60 00 00 */	li r3, 0
lbl_802742F8:
/* 802742F8 0026FF58  80 01 00 A4 */	lwz r0, 0xa4(r1)
/* 802742FC 0026FF5C  83 E1 00 9C */	lwz r31, 0x9c(r1)
/* 80274300 0026FF60  7C 08 03 A6 */	mtlr r0
/* 80274304 0026FF64  38 21 00 A0 */	addi r1, r1, 0xa0
/* 80274308 0026FF68  4E 80 00 20 */	blr

# Still unsure of label for this function 
# (not mentioned in BBA map and not found in Brawl)
.global func_8027430C
func_8027430C:
/* 8027430C 0026FF6C  94 21 FF 60 */	stwu r1, -0xa0(r1)
/* 80274310 0026FF70  7C 08 02 A6 */	mflr r0
/* 80274314 0026FF74  3C 80 80 43 */	lis r4, lbl_80433F08@ha
/* 80274318 0026FF78  38 A0 00 01 */	li r5, 1
/* 8027431C 0026FF7C  90 01 00 A4 */	stw r0, 0xa4(r1)
/* 80274320 0026FF80  93 E1 00 9C */	stw r31, 0x9c(r1)
/* 80274324 0026FF84  7C 7F 1B 78 */	mr r31, r3
/* 80274328 0026FF88  38 64 3F 08 */	addi r3, r4, lbl_80433F08@l
/* 8027432C 0026FF8C  38 81 00 08 */	addi r4, r1, 8
/* 80274330 0026FF90  93 C1 00 98 */	stw r30, 0x98(r1)
/* 80274334 0026FF94  48 07 41 61 */	bl NANDPrivateOpen
/* 80274338 0026FF98  2C 03 00 00 */	cmpwi r3, 0
/* 8027433C 0026FF9C  40 82 00 40 */	bne lbl_8027437C
/* 80274340 0026FFA0  7F E4 FB 78 */	mr r4, r31
/* 80274344 0026FFA4  38 61 00 08 */	addi r3, r1, 8
/* 80274348 0026FFA8  38 A0 10 20 */	li r5, 0x1020
/* 8027434C 0026FFAC  48 07 35 75 */	bl NANDRead
/* 80274350 0026FFB0  7C 7E 1B 78 */	mr r30, r3
/* 80274354 0026FFB4  38 61 00 08 */	addi r3, r1, 8
/* 80274358 0026FFB8  48 07 43 31 */	bl NANDClose
/* 8027435C 0026FFBC  28 1E 10 20 */	cmplwi r30, 0x1020
/* 80274360 0026FFC0  41 82 00 34 */	beq lbl_80274394
/* 80274364 0026FFC4  7F E3 FB 78 */	mr r3, r31
/* 80274368 0026FFC8  38 80 00 00 */	li r4, 0
/* 8027436C 0026FFCC  38 A0 10 20 */	li r5, 0x1020
/* 80274370 0026FFD0  4B D8 FD 95 */	bl memset
/* 80274374 0026FFD4  38 60 00 00 */	li r3, 0
/* 80274378 0026FFD8  48 00 01 14 */	b lbl_8027448C
lbl_8027437C:
/* 8027437C 0026FFDC  7F E3 FB 78 */	mr r3, r31
/* 80274380 0026FFE0  38 80 00 00 */	li r4, 0
/* 80274384 0026FFE4  38 A0 10 20 */	li r5, 0x1020
/* 80274388 0026FFE8  4B D8 FD 7D */	bl memset
/* 8027438C 0026FFEC  38 60 00 00 */	li r3, 0
/* 80274390 0026FFF0  48 00 00 FC */	b lbl_8027448C
lbl_80274394:
/* 80274394 0026FFF4  38 00 00 40 */	li r0, 0x40
/* 80274398 0026FFF8  38 BF 00 04 */	addi r5, r31, 4
/* 8027439C 0026FFFC  38 80 00 00 */	li r4, 0
/* 802743A0 00270000  7C 09 03 A6 */	mtctr r0
lbl_802743A4:
/* 802743A4 00270004  80 65 00 00 */	lwz r3, 0(r5)
/* 802743A8 00270008  80 05 00 04 */	lwz r0, 4(r5)
/* 802743AC 0027000C  7C 84 1A 14 */	add r4, r4, r3
/* 802743B0 00270010  80 65 00 08 */	lwz r3, 8(r5)
/* 802743B4 00270014  7C 84 02 14 */	add r4, r4, r0
/* 802743B8 00270018  80 05 00 0C */	lwz r0, 0xc(r5)
/* 802743BC 0027001C  7C 84 1A 14 */	add r4, r4, r3
/* 802743C0 00270020  80 65 00 10 */	lwz r3, 0x10(r5)
/* 802743C4 00270024  7C 84 02 14 */	add r4, r4, r0
/* 802743C8 00270028  80 05 00 14 */	lwz r0, 0x14(r5)
/* 802743CC 0027002C  7C 84 1A 14 */	add r4, r4, r3
/* 802743D0 00270030  80 65 00 18 */	lwz r3, 0x18(r5)
/* 802743D4 00270034  7C 84 02 14 */	add r4, r4, r0
/* 802743D8 00270038  80 05 00 1C */	lwz r0, 0x1c(r5)
/* 802743DC 0027003C  7C 84 1A 14 */	add r4, r4, r3
/* 802743E0 00270040  80 65 00 20 */	lwz r3, 0x20(r5)
/* 802743E4 00270044  7C 84 02 14 */	add r4, r4, r0
/* 802743E8 00270048  80 05 00 24 */	lwz r0, 0x24(r5)
/* 802743EC 0027004C  7C 84 1A 14 */	add r4, r4, r3
/* 802743F0 00270050  80 65 00 28 */	lwz r3, 0x28(r5)
/* 802743F4 00270054  7C 84 02 14 */	add r4, r4, r0
/* 802743F8 00270058  80 05 00 2C */	lwz r0, 0x2c(r5)
/* 802743FC 0027005C  7C 84 1A 14 */	add r4, r4, r3
/* 80274400 00270060  80 65 00 30 */	lwz r3, 0x30(r5)
/* 80274404 00270064  7C 84 02 14 */	add r4, r4, r0
/* 80274408 00270068  80 05 00 34 */	lwz r0, 0x34(r5)
/* 8027440C 0027006C  7C 84 1A 14 */	add r4, r4, r3
/* 80274410 00270070  80 65 00 38 */	lwz r3, 0x38(r5)
/* 80274414 00270074  7C 84 02 14 */	add r4, r4, r0
/* 80274418 00270078  80 05 00 3C */	lwz r0, 0x3c(r5)
/* 8027441C 0027007C  7C 84 1A 14 */	add r4, r4, r3
/* 80274420 00270080  38 A5 00 40 */	addi r5, r5, 0x40
/* 80274424 00270084  7C 84 02 14 */	add r4, r4, r0
/* 80274428 00270088  42 00 FF 7C */	bdnz lbl_802743A4
/* 8027442C 0027008C  80 65 00 00 */	lwz r3, 0(r5)
/* 80274430 00270090  80 05 00 04 */	lwz r0, 4(r5)
/* 80274434 00270094  7C 84 1A 14 */	add r4, r4, r3
/* 80274438 00270098  80 65 00 08 */	lwz r3, 8(r5)
/* 8027443C 0027009C  7C 84 02 14 */	add r4, r4, r0
/* 80274440 002700A0  80 05 00 0C */	lwz r0, 0xc(r5)
/* 80274444 002700A4  7C 84 1A 14 */	add r4, r4, r3
/* 80274448 002700A8  80 65 00 10 */	lwz r3, 0x10(r5)
/* 8027444C 002700AC  7C 84 02 14 */	add r4, r4, r0
/* 80274450 002700B0  80 05 00 14 */	lwz r0, 0x14(r5)
/* 80274454 002700B4  7C 84 1A 14 */	add r4, r4, r3
/* 80274458 002700B8  80 65 00 18 */	lwz r3, 0x18(r5)
/* 8027445C 002700BC  7C 84 02 14 */	add r4, r4, r0
/* 80274460 002700C0  80 1F 00 00 */	lwz r0, 0(r31)
/* 80274464 002700C4  7C 84 1A 14 */	add r4, r4, r3
/* 80274468 002700C8  7C 00 20 40 */	cmplw r0, r4
/* 8027446C 002700CC  41 82 00 1C */	beq lbl_80274488
/* 80274470 002700D0  7F E3 FB 78 */	mr r3, r31
/* 80274474 002700D4  38 80 00 00 */	li r4, 0
/* 80274478 002700D8  38 A0 10 20 */	li r5, 0x1020
/* 8027447C 002700DC  4B D8 FC 89 */	bl memset
/* 80274480 002700E0  38 60 00 00 */	li r3, 0
/* 80274484 002700E4  48 00 00 08 */	b lbl_8027448C
lbl_80274488:
/* 80274488 002700E8  38 60 00 01 */	li r3, 1
lbl_8027448C:
/* 8027448C 002700EC  80 01 00 A4 */	lwz r0, 0xa4(r1)
/* 80274490 002700F0  83 E1 00 9C */	lwz r31, 0x9c(r1)
/* 80274494 002700F4  83 C1 00 98 */	lwz r30, 0x98(r1)
/* 80274498 002700F8  7C 08 03 A6 */	mtlr r0
/* 8027449C 002700FC  38 21 00 A0 */	addi r1, r1, 0xa0
/* 802744A0 00270100  4E 80 00 20 */	blr