summaryrefslogtreecommitdiff
path: root/asm/Dolphin/os/OSReset.s
blob: a7b42f7fadde967b592c5e3bf88dc77b1faeda98 (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
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
.include "macros.inc"

.section .text

.global func_80370400
.type func_80370400, @function
func_80370400:
/* 80370400 80ADCA70 */ lwz         r5, lbl_805c6890@sda21(0)
/* 80370404 48000008 */ b           lbl_8037040c
lbl_80370408:
/* 80370408 80A50008 */ lwz         r5, 8(r5)
lbl_8037040c:
/* 8037040C 28050000 */ cmplwi      r5, 0
/* 80370410 41820014 */ beq-        lbl_80370424
/* 80370414 80850004 */ lwz         r4, 4(r5)
/* 80370418 80030004 */ lwz         r0, 4(r3)
/* 8037041C 7C040040 */ cmplw       r4, r0
/* 80370420 4081FFE8 */ ble+        lbl_80370408
lbl_80370424:
/* 80370424 28050000 */ cmplwi      r5, 0
/* 80370428 40820034 */ bne-        lbl_8037045c
/* 8037042C 38ADCA70 */ addi        r5, 0, lbl_805c6890@sda21
/* 80370430 84850004 */ lwzu        r4, 4(r5)
/* 80370434 28040000 */ cmplwi      r4, 0
/* 80370438 4082000C */ bne-        lbl_80370444
/* 8037043C 906DCA70 */ stw         r3, lbl_805c6890@sda21(0)
/* 80370440 48000008 */ b           lbl_80370448
lbl_80370444:
/* 80370444 90640008 */ stw         r3, 8(r4)
lbl_80370448:
/* 80370448 9083000C */ stw         r4, 0xc(r3)
/* 8037044C 38000000 */ li          r0, 0x0
/* 80370450 90030008 */ stw         r0, 8(r3)
/* 80370454 90650000 */ stw         r3, 0(r5)
/* 80370458 4E800020 */ blr         
lbl_8037045c:
/* 8037045C 90A30008 */ stw         r5, 8(r3)
/* 80370460 8085000C */ lwz         r4, 0xc(r5)
/* 80370464 9065000C */ stw         r3, 0xc(r5)
/* 80370468 28040000 */ cmplwi      r4, 0
/* 8037046C 9083000C */ stw         r4, 0xc(r3)
/* 80370470 4082000C */ bne-        lbl_8037047c
/* 80370474 906DCA70 */ stw         r3, lbl_805c6890@sda21(0)
/* 80370478 4E800020 */ blr         
lbl_8037047c:
/* 8037047C 90640008 */ stw         r3, 8(r4)
/* 80370480 4E800020 */ blr         
.size func_80370400, . - func_80370400


.global func_80370484
.type func_80370484, @function
func_80370484:
/* 80370484 48000020 */ b           lbl_803704a4
lbl_80370488:
/* 80370488 7D10FAA6 */ mfspr       r8, 0x3f0
/* 8037048C 61080008 */ ori         r8, r8, 8
/* 80370490 7D10FBA6 */ mtspr       0x3f0, r8
/* 80370494 4C00012C */ isync       
/* 80370498 7C0004AC */ sync        0
/* 8037049C 60000000 */ nop         
/* 803704A0 48000008 */ b           lbl_803704a8
lbl_803704a4:
/* 803704A4 48000020 */ b           lbl_803704c4
lbl_803704a8:
/* 803704A8 7CAC42E6 */ mftb        r5, 0x10c
lbl_803704ac:
/* 803704AC 7CCC42E6 */ mftb        r6, 0x10c
/* 803704B0 7CE53050 */ subf        r7, r5, r6
/* 803704B4 28071124 */ cmplwi      r7, 0x1124
/* 803704B8 4180FFF4 */ blt+        lbl_803704ac
/* 803704BC 60000000 */ nop         
/* 803704C0 48000008 */ b           lbl_803704c8
lbl_803704c4:
/* 803704C4 48000020 */ b           lbl_803704e4
lbl_803704c8:
/* 803704C8 3D00CC00 */ lis         r8, 0xcc00
/* 803704CC 61083000 */ ori         r8, r8, 0x3000
/* 803704D0 38800003 */ li          r4, 0x3
/* 803704D4 90880024 */ stw         r4, 0x24(r8)
/* 803704D8 90680024 */ stw         r3, 0x24(r8)
/* 803704DC 60000000 */ nop         
/* 803704E0 48000008 */ b           lbl_803704e8
lbl_803704e4:
/* 803704E4 4800000C */ b           lbl_803704f0
lbl_803704e8:
/* 803704E8 60000000 */ nop         
/* 803704EC 4BFFFFFC */ b           lbl_803704e8
lbl_803704f0:
/* 803704F0 4BFFFF98 */ b           lbl_80370488
.size func_80370484, . - func_80370484


.global func_803704f4
.type func_803704f4, @function
func_803704f4:
/* 803704F4 7C0802A6 */ mflr        r0
/* 803704F8 90010004 */ stw         r0, 4(r1)
/* 803704FC 9421FFE8 */ stwu        r1, -0x18(r1)
/* 80370500 93E10014 */ stw         r31, 0x14(r1)
/* 80370504 7C7F1B78 */ mr          r31, r3
/* 80370508 4BFFE5CD */ bl          func_8036ead4
/* 8037050C 3C60CC00 */ lis         r3, 0xcc00
/* 80370510 38632000 */ addi        r3, r3, 0x2000
/* 80370514 38000000 */ li          r0, 0x0
/* 80370518 B0030002 */ sth         r0, 2(r3)
/* 8037051C 4BFFD4F5 */ bl          func_8036da10
/* 80370520 57E31838 */ slwi        r3, r31, 3
/* 80370524 4BFFFF61 */ bl          func_80370484
/* 80370528 8001001C */ lwz         r0, 0x1c(r1)
/* 8037052C 83E10014 */ lwz         r31, 0x14(r1)
/* 80370530 38210018 */ addi        r1, r1, 0x18
/* 80370534 7C0803A6 */ mtlr        r0
/* 80370538 4E800020 */ blr         
.size func_803704f4, . - func_803704f4


.global func_8037053c
.type func_8037053c, @function
func_8037053c:
/* 8037053C 7C0802A6 */ mflr        r0
/* 80370540 90010004 */ stw         r0, 4(r1)
/* 80370544 9421FFC0 */ stwu        r1, -0x40(r1)
/* 80370548 BF410028 */ stmw        r26, 0x28(r1)
/* 8037054C 7C7A1B78 */ mr          r26, r3
/* 80370550 7C9D2378 */ mr          r29, r4
/* 80370554 7CBE2B78 */ mr          r30, r5
/* 80370558 4800125D */ bl          func_803717b4
/* 8037055C 4BFFD299 */ bl          func_8036d7f4
/* 80370560 2C1A0002 */ cmpwi       r26, 0x2
/* 80370564 40820010 */ bne-        lbl_80370574
/* 80370568 38600001 */ li          r3, 0x1
/* 8037056C 4800AAC1 */ bl          func_8037b02c
/* 80370570 7C7F1B78 */ mr          r31, r3
lbl_80370574:
/* 80370574 48000004 */ b           lbl_80370578
lbl_80370578:
/* 80370578 48000004 */ b           lbl_8037057c
lbl_8037057c:
/* 8037057C 836DCA70 */ lwz         r27, lbl_805c6890@sda21(0)
/* 80370580 3B800000 */ li          r28, 0x0
/* 80370584 48000004 */ b           lbl_80370588
lbl_80370588:
/* 80370588 48000004 */ b           lbl_8037058c
lbl_8037058c:
/* 8037058C 48000024 */ b           lbl_803705b0
lbl_80370590:
/* 80370590 38600000 */ li          r3, 0x0
/* 80370594 819B0000 */ lwz         r12, 0(r27)
/* 80370598 7D8803A6 */ mtlr        r12
/* 8037059C 4E800021 */ blrl        
/* 803705A0 7C600034 */ cntlzw      r0, r3
/* 803705A4 837B0008 */ lwz         r27, 8(r27)
/* 803705A8 5400D97E */ srwi        r0, r0, 5
/* 803705AC 7F9C0378 */ or          r28, r28, r0
lbl_803705b0:
/* 803705B0 281B0000 */ cmplwi      r27, 0
/* 803705B4 4082FFDC */ bne+        lbl_80370590
/* 803705B8 48000C6D */ bl          func_80371224
/* 803705BC 7C600034 */ cntlzw      r0, r3
/* 803705C0 5400D97E */ srwi        r0, r0, 5
/* 803705C4 7F9C0378 */ or          r28, r28, r0
/* 803705C8 2C1C0000 */ cmpwi       r28, 0x0
/* 803705CC 4182000C */ beq-        lbl_803705d8
/* 803705D0 38000000 */ li          r0, 0x0
/* 803705D4 48000008 */ b           lbl_803705dc
lbl_803705d8:
/* 803705D8 38000001 */ li          r0, 0x1
lbl_803705dc:
/* 803705DC 2C000000 */ cmpwi       r0, 0x0
/* 803705E0 4182FF9C */ beq+        lbl_8037057c
/* 803705E4 2C1A0001 */ cmpwi       r26, 0x1
/* 803705E8 40820038 */ bne-        lbl_80370620
/* 803705EC 2C1E0000 */ cmpwi       r30, 0x0
/* 803705F0 41820030 */ beq-        lbl_80370620
/* 803705F4 48000829 */ bl          func_80370e1c
/* 803705F8 88030013 */ lbz         r0, 0x13(r3)
/* 803705FC 60000040 */ ori         r0, r0, 0x40
/* 80370600 98030013 */ stb         r0, 0x13(r3)
/* 80370604 38600001 */ li          r3, 0x1
/* 80370608 48000BD5 */ bl          func_803711dc
/* 8037060C 48000004 */ b           lbl_80370610
lbl_80370610:
/* 80370610 48000004 */ b           lbl_80370614
lbl_80370614:
/* 80370614 48000C11 */ bl          func_80371224
/* 80370618 2C030000 */ cmpwi       r3, 0x0
/* 8037061C 4182FFF8 */ beq+        lbl_80370614
lbl_80370620:
/* 80370620 4BFFE4B5 */ bl          func_8036ead4
/* 80370624 838DCA70 */ lwz         r28, lbl_805c6890@sda21(0)
/* 80370628 3B600000 */ li          r27, 0x0
/* 8037062C 48000004 */ b           lbl_80370630
lbl_80370630:
/* 80370630 48000004 */ b           lbl_80370634
lbl_80370634:
/* 80370634 48000024 */ b           lbl_80370658
lbl_80370638:
/* 80370638 38600001 */ li          r3, 0x1
/* 8037063C 819C0000 */ lwz         r12, 0(r28)
/* 80370640 7D8803A6 */ mtlr        r12
/* 80370644 4E800021 */ blrl        
/* 80370648 7C600034 */ cntlzw      r0, r3
/* 8037064C 839C0008 */ lwz         r28, 8(r28)
/* 80370650 5400D97E */ srwi        r0, r0, 5
/* 80370654 7F7B0378 */ or          r27, r27, r0
lbl_80370658:
/* 80370658 281C0000 */ cmplwi      r28, 0
/* 8037065C 4082FFDC */ bne+        lbl_80370638
/* 80370660 48000BC5 */ bl          func_80371224
/* 80370664 4BFFD4D5 */ bl          func_8036db38
/* 80370668 2C1A0001 */ cmpwi       r26, 0x1
/* 8037066C 40820028 */ bne-        lbl_80370694
/* 80370670 4BFFE465 */ bl          func_8036ead4
/* 80370674 3C60CC00 */ lis         r3, 0xcc00
/* 80370678 38632000 */ addi        r3, r3, 0x2000
/* 8037067C 38000000 */ li          r0, 0x0
/* 80370680 B0030002 */ sth         r0, 2(r3)
/* 80370684 4BFFD38D */ bl          func_8036da10
/* 80370688 57A31838 */ slwi        r3, r29, 3
/* 8037068C 4BFFFDF9 */ bl          func_80370484
/* 80370690 48000060 */ b           lbl_803706f0
lbl_80370694:
/* 80370694 2C1A0000 */ cmpwi       r26, 0x0
/* 80370698 40820058 */ bne-        lbl_803706f0
/* 8037069C 3C608000 */ lis         r3, 0x8000
/* 803706A0 806300DC */ lwz         r3, 0xdc(r3)
/* 803706A4 48000004 */ b           lbl_803706a8
lbl_803706a8:
/* 803706A8 48000004 */ b           lbl_803706ac
lbl_803706ac:
/* 803706AC 4800002C */ b           lbl_803706d8
lbl_803706b0:
/* 803706B0 A00302C8 */ lhz         r0, 0x2c8(r3)
/* 803706B4 836302FC */ lwz         r27, 0x2fc(r3)
/* 803706B8 2C000004 */ cmpwi       r0, 0x4
/* 803706BC 41820014 */ beq-        lbl_803706d0
/* 803706C0 40800014 */ bge-        lbl_803706d4
/* 803706C4 2C000001 */ cmpwi       r0, 0x1
/* 803706C8 41820008 */ beq-        lbl_803706d0
/* 803706CC 48000008 */ b           lbl_803706d4
lbl_803706d0:
/* 803706D0 48001889 */ bl          func_80371f58
lbl_803706d4:
/* 803706D4 7F63DB78 */ mr          r3, r27
lbl_803706d8:
/* 803706D8 28030000 */ cmplwi      r3, 0
/* 803706DC 4082FFD4 */ bne+        lbl_803706b0
/* 803706E0 48001115 */ bl          func_803717f4
/* 803706E4 7FA3EB78 */ mr          r3, r29
/* 803706E8 7FC4F378 */ mr          r4, r30
/* 803706EC 4BFFFB55 */ bl          func_80370240
lbl_803706f0:
/* 803706F0 3C608000 */ lis         r3, 0x8000
/* 803706F4 806300DC */ lwz         r3, 0xdc(r3)
/* 803706F8 48000004 */ b           lbl_803706fc
lbl_803706fc:
/* 803706FC 48000004 */ b           lbl_80370700
lbl_80370700:
/* 80370700 4800002C */ b           lbl_8037072c
lbl_80370704:
/* 80370704 A00302C8 */ lhz         r0, 0x2c8(r3)
/* 80370708 836302FC */ lwz         r27, 0x2fc(r3)
/* 8037070C 2C000004 */ cmpwi       r0, 0x4
/* 80370710 41820014 */ beq-        lbl_80370724
/* 80370714 40800014 */ bge-        lbl_80370728
/* 80370718 2C000001 */ cmpwi       r0, 0x1
/* 8037071C 41820008 */ beq-        lbl_80370724
/* 80370720 48000008 */ b           lbl_80370728
lbl_80370724:
/* 80370724 48001835 */ bl          func_80371f58
lbl_80370728:
/* 80370728 7F63DB78 */ mr          r3, r27
lbl_8037072c:
/* 8037072C 28030000 */ cmplwi      r3, 0
/* 80370730 4082FFD4 */ bne+        lbl_80370704
/* 80370734 3FA08000 */ lis         r29, 0x8000
/* 80370738 387D0040 */ addi        r3, r29, 0x40
/* 8037073C 38800000 */ li          r4, 0x0
/* 80370740 38A0008C */ li          r5, 0x8c
/* 80370744 4BC9DBF1 */ bl          func_8000e334
/* 80370748 387D00D4 */ addi        r3, r29, 0xd4
/* 8037074C 38800000 */ li          r4, 0x0
/* 80370750 38A00014 */ li          r5, 0x14
/* 80370754 4BC9DBE1 */ bl          func_8000e334
/* 80370758 387D00F4 */ addi        r3, r29, 0xf4
/* 8037075C 38800000 */ li          r4, 0x0
/* 80370760 38A00004 */ li          r5, 0x4
/* 80370764 4BC9DBD1 */ bl          func_8000e334
/* 80370768 387D3000 */ addi        r3, r29, 0x3000
/* 8037076C 38800000 */ li          r4, 0x0
/* 80370770 38A000C0 */ li          r5, 0xc0
/* 80370774 4BC9DBC1 */ bl          func_8000e334
/* 80370778 387D30C8 */ addi        r3, r29, 0x30c8
/* 8037077C 38800000 */ li          r4, 0x0
/* 80370780 38A0000C */ li          r5, 0xc
/* 80370784 4BC9DBB1 */ bl          func_8000e334
/* 80370788 387D30E2 */ addi        r3, r29, 0x30e2
/* 8037078C 38800000 */ li          r4, 0x0
/* 80370790 38A00001 */ li          r5, 0x1
/* 80370794 4BC9DBA1 */ bl          func_8000e334
/* 80370798 7FE3FB78 */ mr          r3, r31
/* 8037079C 4800A891 */ bl          func_8037b02c
/* 803707A0 BB410028 */ lmw         r26, 0x28(r1)
/* 803707A4 80010044 */ lwz         r0, 0x44(r1)
/* 803707A8 38210040 */ addi        r1, r1, 0x40
/* 803707AC 7C0803A6 */ mtlr        r0
/* 803707B0 4E800020 */ blr         
.size func_8037053c, . - func_8037053c


.global func_803707b4
.type func_803707b4, @function
func_803707b4:
/* 803707B4 3C608000 */ lis         r3, 0x8000
/* 803707B8 880330E2 */ lbz         r0, 0x30e2(r3)
/* 803707BC 28000000 */ cmplwi      r0, 0
/* 803707C0 4182000C */ beq-        lbl_803707cc
/* 803707C4 3C608000 */ lis         r3, 0x8000
/* 803707C8 48000018 */ b           lbl_803707e0
lbl_803707cc:
/* 803707CC 3C60CC00 */ lis         r3, 0xcc00
/* 803707D0 38633000 */ addi        r3, r3, 0x3000
/* 803707D4 80030024 */ lwz         r0, 0x24(r3)
/* 803707D8 54000038 */ rlwinm      r0, r0, 0, 0, 0x1c
/* 803707DC 5403E8FE */ srwi        r3, r0, 3
lbl_803707e0:
/* 803707E0 4E800020 */ blr         
.size func_803707b4, . - func_803707b4