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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global InitMetroTRK
InitMetroTRK:
/* 801D9138 001D4D98 38 21 FF FC */ addi r1, r1, -4
/* 801D913C 001D4D9C 90 61 00 00 */ stw r3, 0(r1)
/* 801D9140 001D4DA0 3C 60 80 49 */ lis r3, lbl_80490898@h
/* 801D9144 001D4DA4 60 63 08 98 */ ori r3, r3, lbl_80490898@l
/* 801D9148 001D4DA8 BC 03 00 00 */ stmw r0, 0(r3)
/* 801D914C 001D4DAC 80 81 00 00 */ lwz r4, 0(r1)
/* 801D9150 001D4DB0 38 21 00 04 */ addi r1, r1, 4
/* 801D9154 001D4DB4 90 23 00 04 */ stw r1, 4(r3)
/* 801D9158 001D4DB8 90 83 00 0C */ stw r4, 0xc(r3)
/* 801D915C 001D4DBC 7C 88 02 A6 */ mflr r4
/* 801D9160 001D4DC0 90 83 00 84 */ stw r4, 0x84(r3)
/* 801D9164 001D4DC4 90 83 00 80 */ stw r4, 0x80(r3)
/* 801D9168 001D4DC8 7C 80 00 26 */ mfcr r4
/* 801D916C 001D4DCC 90 83 00 88 */ stw r4, 0x88(r3)
/* 801D9170 001D4DD0 7C 80 00 A6 */ mfmsr r4
/* 801D9174 001D4DD4 60 83 80 00 */ ori r3, r4, 0x8000
/* 801D9178 001D4DD8 68 63 80 00 */ xori r3, r3, 0x8000
/* 801D917C 001D4DDC 7C 60 01 24 */ mtmsr r3
/* 801D9180 001D4DE0 7C 9B 03 A6 */ mtspr 0x1b, r4
/* 801D9184 001D4DE4 4B FF FA CD */ bl TRKSaveExtended1Block
/* 801D9188 001D4DE8 3C 60 80 49 */ lis r3, lbl_80490898@h
/* 801D918C 001D4DEC 60 63 08 98 */ ori r3, r3, lbl_80490898@l
/* 801D9190 001D4DF0 B8 03 00 00 */ .4byte 0xB8030000 /* illegal lmw r0, 0(r3) */
/* 801D9194 001D4DF4 38 00 00 00 */ li r0, 0
/* 801D9198 001D4DF8 7C 12 FB A6 */ mtspr 0x3f2, r0
/* 801D919C 001D4DFC 7C 15 FB A6 */ mtspr 0x3f5, r0
/* 801D91A0 001D4E00 3C 20 80 65 */ lis r1, 0x80655050@h
/* 801D91A4 001D4E04 60 21 50 50 */ ori r1, r1, 0x80655050@l
/* 801D91A8 001D4E08 7C A3 2B 78 */ mr r3, r5
/* 801D91AC 001D4E0C 48 00 05 A1 */ bl InitMetroTRKCommTable
/* 801D91B0 001D4E10 2C 03 00 01 */ cmpwi r3, 1
/* 801D91B4 001D4E14 40 82 00 14 */ bne lbl_801D91C8
/* 801D91B8 001D4E18 80 83 00 84 */ lwz r4, 0x84(r3)
/* 801D91BC 001D4E1C 7C 88 03 A6 */ mtlr r4
/* 801D91C0 001D4E20 B8 03 00 00 */ .4byte 0xB8030000 /* illegal lmw r0, 0(r3) */
/* 801D91C4 001D4E24 4E 80 00 20 */ blr
lbl_801D91C8:
/* 801D91C8 001D4E28 48 00 02 8C */ b TRK_main
/* 801D91CC 001D4E2C 4E 80 00 20 */ blr
.global InitMetroTRK_BBA
InitMetroTRK_BBA:
/* 801D91D0 001D4E30 38 21 FF FC */ addi r1, r1, -4
/* 801D91D4 001D4E34 90 61 00 00 */ stw r3, 0(r1)
/* 801D91D8 001D4E38 3C 60 80 49 */ lis r3, lbl_80490898@h
/* 801D91DC 001D4E3C 60 63 08 98 */ ori r3, r3, lbl_80490898@l
/* 801D91E0 001D4E40 BC 03 00 00 */ stmw r0, 0(r3)
/* 801D91E4 001D4E44 80 81 00 00 */ lwz r4, 0(r1)
/* 801D91E8 001D4E48 38 21 00 04 */ addi r1, r1, 4
/* 801D91EC 001D4E4C 90 23 00 04 */ stw r1, 4(r3)
/* 801D91F0 001D4E50 90 83 00 0C */ stw r4, 0xc(r3)
/* 801D91F4 001D4E54 7C 88 02 A6 */ mflr r4
/* 801D91F8 001D4E58 90 83 00 84 */ stw r4, 0x84(r3)
/* 801D91FC 001D4E5C 90 83 00 80 */ stw r4, 0x80(r3)
/* 801D9200 001D4E60 7C 80 00 26 */ mfcr r4
/* 801D9204 001D4E64 90 83 00 88 */ stw r4, 0x88(r3)
/* 801D9208 001D4E68 7C 80 00 A6 */ mfmsr r4
/* 801D920C 001D4E6C 60 83 80 00 */ ori r3, r4, 0x8000
/* 801D9210 001D4E70 7C 60 01 24 */ mtmsr r3
/* 801D9214 001D4E74 7C 9B 03 A6 */ mtspr 0x1b, r4
/* 801D9218 001D4E78 4B FF FA 39 */ bl TRKSaveExtended1Block
/* 801D921C 001D4E7C 3C 60 80 49 */ lis r3, lbl_80490898@h
/* 801D9220 001D4E80 60 63 08 98 */ ori r3, r3, lbl_80490898@l
/* 801D9224 001D4E84 B8 03 00 00 */ .4byte 0xB8030000 /* illegal lmw r0, 0(r3) */
/* 801D9228 001D4E88 38 00 00 00 */ li r0, 0
/* 801D922C 001D4E8C 7C 12 FB A6 */ mtspr 0x3f2, r0
/* 801D9230 001D4E90 7C 15 FB A6 */ mtspr 0x3f5, r0
/* 801D9234 001D4E94 3C 20 80 65 */ lis r1, 0x80655050@h
/* 801D9238 001D4E98 60 21 50 50 */ ori r1, r1, 0x80655050@l
/* 801D923C 001D4E9C 38 60 00 02 */ li r3, 2
/* 801D9240 001D4EA0 48 00 05 0D */ bl InitMetroTRKCommTable
/* 801D9244 001D4EA4 2C 03 00 01 */ cmpwi r3, 1
/* 801D9248 001D4EA8 40 82 00 14 */ bne lbl_801D925C
/* 801D924C 001D4EAC 80 83 00 84 */ lwz r4, 0x84(r3)
/* 801D9250 001D4EB0 7C 88 03 A6 */ mtlr r4
/* 801D9254 001D4EB4 B8 03 00 00 */ .4byte 0xB8030000 /* illegal lmw r0, 0(r3) */
/* 801D9258 001D4EB8 4E 80 00 20 */ blr
lbl_801D925C:
/* 801D925C 001D4EBC 48 00 01 F8 */ b TRK_main
/* 801D9260 001D4EC0 4E 80 00 20 */ blr
.global TRKInitializeTarget
TRKInitializeTarget:
/* 801D9264 001D4EC4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801D9268 001D4EC8 7C 08 02 A6 */ mflr r0
/* 801D926C 001D4ECC 3C 60 80 49 */ lis r3, lbl_804907F4@ha
/* 801D9270 001D4ED0 90 01 00 14 */ stw r0, 0x14(r1)
/* 801D9274 001D4ED4 38 00 00 01 */ li r0, 1
/* 801D9278 001D4ED8 38 63 07 F4 */ addi r3, r3, lbl_804907F4@l
/* 801D927C 001D4EDC 90 03 00 98 */ stw r0, 0x98(r3)
/* 801D9280 001D4EE0 4B FF DF 91 */ bl __TRK_get_MSR
/* 801D9284 001D4EE4 3C A0 80 49 */ lis r5, lbl_804907F4@ha
/* 801D9288 001D4EE8 3C 80 80 49 */ lis r4, lbl_80490D70@ha
/* 801D928C 001D4EEC 38 A5 07 F4 */ addi r5, r5, lbl_804907F4@l
/* 801D9290 001D4EF0 3C 00 E0 00 */ lis r0, 0xe000
/* 801D9294 001D4EF4 90 65 00 8C */ stw r3, 0x8c(r5)
/* 801D9298 001D4EF8 38 60 00 00 */ li r3, 0
/* 801D929C 001D4EFC 90 04 0D 70 */ stw r0, lbl_80490D70@l(r4)
/* 801D92A0 001D4F00 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801D92A4 001D4F04 7C 08 03 A6 */ mtlr r0
/* 801D92A8 001D4F08 38 21 00 10 */ addi r1, r1, 0x10
/* 801D92AC 001D4F0C 4E 80 00 20 */ blr
.global __TRK_copy_vectors
__TRK_copy_vectors:
/* 801D92B0 001D4F10 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 801D92B4 001D4F14 7C 08 02 A6 */ mflr r0
/* 801D92B8 001D4F18 3C 60 80 49 */ lis r3, lbl_80490D70@ha
/* 801D92BC 001D4F1C 90 01 00 24 */ stw r0, 0x24(r1)
/* 801D92C0 001D4F20 38 63 0D 70 */ addi r3, r3, lbl_80490D70@l
/* 801D92C4 001D4F24 BF 61 00 0C */ stmw r27, 0xc(r1)
/* 801D92C8 001D4F28 80 63 00 00 */ lwz r3, 0(r3)
/* 801D92CC 001D4F2C 28 03 00 44 */ cmplwi r3, 0x44
/* 801D92D0 001D4F30 41 81 00 2C */ bgt lbl_801D92FC
/* 801D92D4 001D4F34 38 03 40 00 */ addi r0, r3, 0x4000
/* 801D92D8 001D4F38 28 00 00 44 */ cmplwi r0, 0x44
/* 801D92DC 001D4F3C 40 81 00 20 */ ble lbl_801D92FC
/* 801D92E0 001D4F40 3C 60 80 49 */ lis r3, lbl_80490898@ha
/* 801D92E4 001D4F44 38 63 08 98 */ addi r3, r3, lbl_80490898@l
/* 801D92E8 001D4F48 80 03 02 38 */ lwz r0, 0x238(r3)
/* 801D92EC 001D4F4C 54 00 07 BF */ clrlwi. r0, r0, 0x1e
/* 801D92F0 001D4F50 41 82 00 0C */ beq lbl_801D92FC
/* 801D92F4 001D4F54 38 A0 00 44 */ li r5, 0x44
/* 801D92F8 001D4F58 48 00 00 0C */ b lbl_801D9304
lbl_801D92FC:
/* 801D92FC 001D4F5C 3C 60 80 00 */ lis r3, 0x80000044@ha
/* 801D9300 001D4F60 38 A3 00 44 */ addi r5, r3, 0x80000044@l
lbl_801D9304:
/* 801D9304 001D4F64 3C 80 80 42 */ lis r4, lbl_80423260@ha
/* 801D9308 001D4F68 3C 60 80 49 */ lis r3, lbl_80490898@ha
/* 801D930C 001D4F6C 83 A5 00 00 */ lwz r29, 0(r5)
/* 801D9310 001D4F70 3B E4 32 60 */ addi r31, r4, lbl_80423260@l
/* 801D9314 001D4F74 3B 83 08 98 */ addi r28, r3, lbl_80490898@l
/* 801D9318 001D4F78 3B C0 00 00 */ li r30, 0
lbl_801D931C:
/* 801D931C 001D4F7C 38 00 00 01 */ li r0, 1
/* 801D9320 001D4F80 7C 00 F0 30 */ slw r0, r0, r30
/* 801D9324 001D4F84 7F A0 00 39 */ and. r0, r29, r0
/* 801D9328 001D4F88 41 82 00 90 */ beq lbl_801D93B8
/* 801D932C 001D4F8C 2C 1E 00 04 */ cmpwi r30, 4
/* 801D9330 001D4F90 41 82 00 88 */ beq lbl_801D93B8
/* 801D9334 001D4F94 3C 60 80 49 */ lis r3, lbl_80490D70@ha
/* 801D9338 001D4F98 80 DF 00 00 */ lwz r6, 0(r31)
/* 801D933C 001D4F9C 38 63 0D 70 */ addi r3, r3, lbl_80490D70@l
/* 801D9340 001D4FA0 80 63 00 00 */ lwz r3, 0(r3)
/* 801D9344 001D4FA4 7C 06 18 40 */ cmplw r6, r3
/* 801D9348 001D4FA8 41 80 00 24 */ blt lbl_801D936C
/* 801D934C 001D4FAC 38 03 40 00 */ addi r0, r3, 0x4000
/* 801D9350 001D4FB0 7C 06 00 40 */ cmplw r6, r0
/* 801D9354 001D4FB4 40 80 00 18 */ bge lbl_801D936C
/* 801D9358 001D4FB8 80 1C 02 38 */ lwz r0, 0x238(r28)
/* 801D935C 001D4FBC 54 00 07 BF */ clrlwi. r0, r0, 0x1e
/* 801D9360 001D4FC0 41 82 00 0C */ beq lbl_801D936C
/* 801D9364 001D4FC4 7C DB 33 78 */ mr r27, r6
/* 801D9368 001D4FC8 48 00 00 2C */ b lbl_801D9394
lbl_801D936C:
/* 801D936C 001D4FCC 3C 00 7E 00 */ lis r0, 0x7e00
/* 801D9370 001D4FD0 7C 06 00 40 */ cmplw r6, r0
/* 801D9374 001D4FD4 41 80 00 18 */ blt lbl_801D938C
/* 801D9378 001D4FD8 3C 00 80 00 */ lis r0, 0x8000
/* 801D937C 001D4FDC 7C 06 00 40 */ cmplw r6, r0
/* 801D9380 001D4FE0 41 81 00 0C */ bgt lbl_801D938C
/* 801D9384 001D4FE4 7C DB 33 78 */ mr r27, r6
/* 801D9388 001D4FE8 48 00 00 0C */ b lbl_801D9394
lbl_801D938C:
/* 801D938C 001D4FEC 54 C0 00 BE */ clrlwi r0, r6, 2
/* 801D9390 001D4FF0 64 1B 80 00 */ oris r27, r0, 0x8000
lbl_801D9394:
/* 801D9394 001D4FF4 3C 80 80 00 */ lis r4, lbl_80004188@ha
/* 801D9398 001D4FF8 7F 63 DB 78 */ mr r3, r27
/* 801D939C 001D4FFC 38 04 41 88 */ addi r0, r4, lbl_80004188@l
/* 801D93A0 001D5000 38 A0 01 00 */ li r5, 0x100
/* 801D93A4 001D5004 7C 80 32 14 */ add r4, r0, r6
/* 801D93A8 001D5008 4B E2 AD BD */ bl TRK_memcpy
/* 801D93AC 001D500C 7F 63 DB 78 */ mr r3, r27
/* 801D93B0 001D5010 38 80 01 00 */ li r4, 0x100
/* 801D93B4 001D5014 4B FF DD 51 */ bl TRK_flush_cache
lbl_801D93B8:
/* 801D93B8 001D5018 3B DE 00 01 */ addi r30, r30, 1
/* 801D93BC 001D501C 3B FF 00 04 */ addi r31, r31, 4
/* 801D93C0 001D5020 2C 1E 00 0E */ cmpwi r30, 0xe
/* 801D93C4 001D5024 40 81 FF 58 */ ble lbl_801D931C
/* 801D93C8 001D5028 BB 61 00 0C */ lmw r27, 0xc(r1)
/* 801D93CC 001D502C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 801D93D0 001D5030 7C 08 03 A6 */ mtlr r0
/* 801D93D4 001D5034 38 21 00 20 */ addi r1, r1, 0x20
/* 801D93D8 001D5038 4E 80 00 20 */ blr
.global TRKTargetTranslate
TRKTargetTranslate:
/* 801D93DC 001D503C 3C 80 80 49 */ lis r4, lbl_80490D70@ha
/* 801D93E0 001D5040 38 84 0D 70 */ addi r4, r4, lbl_80490D70@l
/* 801D93E4 001D5044 80 84 00 00 */ lwz r4, 0(r4)
/* 801D93E8 001D5048 7C 03 20 40 */ cmplw r3, r4
/* 801D93EC 001D504C 41 80 00 24 */ blt lbl_801D9410
/* 801D93F0 001D5050 38 04 40 00 */ addi r0, r4, 0x4000
/* 801D93F4 001D5054 7C 03 00 40 */ cmplw r3, r0
/* 801D93F8 001D5058 40 80 00 18 */ bge lbl_801D9410
/* 801D93FC 001D505C 3C 80 80 49 */ lis r4, lbl_80490898@ha
/* 801D9400 001D5060 38 84 08 98 */ addi r4, r4, lbl_80490898@l
/* 801D9404 001D5064 80 04 02 38 */ lwz r0, 0x238(r4)
/* 801D9408 001D5068 54 00 07 BF */ clrlwi. r0, r0, 0x1e
/* 801D940C 001D506C 4C 82 00 20 */ bnelr
lbl_801D9410:
/* 801D9410 001D5070 3C 00 7E 00 */ lis r0, 0x7e00
/* 801D9414 001D5074 7C 03 00 40 */ cmplw r3, r0
/* 801D9418 001D5078 41 80 00 10 */ blt lbl_801D9428
/* 801D941C 001D507C 3C 00 80 00 */ lis r0, 0x8000
/* 801D9420 001D5080 7C 03 00 40 */ cmplw r3, r0
/* 801D9424 001D5084 4C 81 00 20 */ blelr
lbl_801D9428:
/* 801D9428 001D5088 54 60 00 BE */ clrlwi r0, r3, 2
/* 801D942C 001D508C 64 03 80 00 */ oris r3, r0, 0x8000
/* 801D9430 001D5090 4E 80 00 20 */ blr
.global EnableMetroTRKInterrupts
EnableMetroTRKInterrupts:
/* 801D9434 001D5094 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801D9438 001D5098 7C 08 02 A6 */ mflr r0
/* 801D943C 001D509C 90 01 00 14 */ stw r0, 0x14(r1)
/* 801D9440 001D50A0 48 00 02 75 */ bl EnableEXI2Interrupts
/* 801D9444 001D50A4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801D9448 001D50A8 7C 08 03 A6 */ mtlr r0
/* 801D944C 001D50AC 38 21 00 10 */ addi r1, r1, 0x10
/* 801D9450 001D50B0 4E 80 00 20 */ blr
|