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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global EUARTInit
EUARTInit:
/* 802B38B0 002AF510 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802B38B4 002AF514 7C 08 02 A6 */ mflr r0
/* 802B38B8 002AF518 90 01 00 24 */ stw r0, 0x24(r1)
/* 802B38BC 002AF51C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802B38C0 002AF520 80 0D AE 88 */ lwz r0, lbl_80640148-_SDA_BASE_(r13)
/* 802B38C4 002AF524 2C 00 00 00 */ cmpwi r0, 0
/* 802B38C8 002AF528 41 82 00 0C */ beq lbl_802B38D4
/* 802B38CC 002AF52C 38 60 00 01 */ li r3, 1
/* 802B38D0 002AF530 48 00 00 C8 */ b lbl_802B3998
lbl_802B38D4:
/* 802B38D4 002AF534 4B FB 4C 59 */ bl OSGetConsoleType
/* 802B38D8 002AF538 54 60 00 C7 */ rlwinm. r0, r3, 0, 3, 3
/* 802B38DC 002AF53C 40 82 00 14 */ bne lbl_802B38F0
/* 802B38E0 002AF540 38 00 00 02 */ li r0, 2
/* 802B38E4 002AF544 38 60 00 00 */ li r3, 0
/* 802B38E8 002AF548 90 0D AE 8C */ stw r0, lbl_8064014C-_SDA_BASE_(r13)
/* 802B38EC 002AF54C 48 00 00 AC */ b lbl_802B3998
lbl_802B38F0:
/* 802B38F0 002AF550 4B FB AE 6D */ bl OSDisableInterrupts
/* 802B38F4 002AF554 38 00 00 F2 */ li r0, 0xf2
/* 802B38F8 002AF558 7C 7F 1B 78 */ mr r31, r3
/* 802B38FC 002AF55C 98 01 00 08 */ stb r0, 8(r1)
/* 802B3900 002AF560 38 C1 00 08 */ addi r6, r1, 8
/* 802B3904 002AF564 38 60 00 00 */ li r3, 0
/* 802B3908 002AF568 38 80 00 01 */ li r4, 1
/* 802B390C 002AF56C 3C A0 B0 00 */ lis r5, 0xb000
/* 802B3910 002AF570 38 E0 00 01 */ li r7, 1
/* 802B3914 002AF574 4B FC 28 0D */ bl EXIWriteReg
/* 802B3918 002AF578 2C 03 00 00 */ cmpwi r3, 0
/* 802B391C 002AF57C 40 82 00 1C */ bne lbl_802B3938
/* 802B3920 002AF580 38 00 00 05 */ li r0, 5
/* 802B3924 002AF584 7F E3 FB 78 */ mr r3, r31
/* 802B3928 002AF588 90 0D AE 8C */ stw r0, lbl_8064014C-_SDA_BASE_(r13)
/* 802B392C 002AF58C 4B FB AE 59 */ bl OSRestoreInterrupts
/* 802B3930 002AF590 38 60 00 00 */ li r3, 0
/* 802B3934 002AF594 48 00 00 64 */ b lbl_802B3998
lbl_802B3938:
/* 802B3938 002AF598 38 00 00 F3 */ li r0, 0xf3
/* 802B393C 002AF59C 38 C1 00 08 */ addi r6, r1, 8
/* 802B3940 002AF5A0 98 01 00 08 */ stb r0, 8(r1)
/* 802B3944 002AF5A4 38 60 00 00 */ li r3, 0
/* 802B3948 002AF5A8 38 80 00 01 */ li r4, 1
/* 802B394C 002AF5AC 3C A0 B0 00 */ lis r5, 0xb000
/* 802B3950 002AF5B0 38 E0 00 01 */ li r7, 1
/* 802B3954 002AF5B4 4B FC 27 CD */ bl EXIWriteReg
/* 802B3958 002AF5B8 2C 03 00 00 */ cmpwi r3, 0
/* 802B395C 002AF5BC 40 82 00 1C */ bne lbl_802B3978
/* 802B3960 002AF5C0 38 00 00 05 */ li r0, 5
/* 802B3964 002AF5C4 7F E3 FB 78 */ mr r3, r31
/* 802B3968 002AF5C8 90 0D AE 8C */ stw r0, lbl_8064014C-_SDA_BASE_(r13)
/* 802B396C 002AF5CC 4B FB AE 19 */ bl OSRestoreInterrupts
/* 802B3970 002AF5D0 38 60 00 00 */ li r3, 0
/* 802B3974 002AF5D4 48 00 00 24 */ b lbl_802B3998
lbl_802B3978:
/* 802B3978 002AF5D8 7F E3 FB 78 */ mr r3, r31
/* 802B397C 002AF5DC 4B FB AE 09 */ bl OSRestoreInterrupts
/* 802B3980 002AF5E0 38 00 00 00 */ li r0, 0
/* 802B3984 002AF5E4 38 60 00 01 */ li r3, 1
/* 802B3988 002AF5E8 90 6D AE 88 */ stw r3, lbl_80640148-_SDA_BASE_(r13)
/* 802B398C 002AF5EC 38 60 00 01 */ li r3, 1
/* 802B3990 002AF5F0 90 0D AE 8C */ stw r0, lbl_8064014C-_SDA_BASE_(r13)
/* 802B3994 002AF5F4 90 0D AE 90 */ stw r0, lbl_80640150-_SDA_BASE_(r13)
lbl_802B3998:
/* 802B3998 002AF5F8 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802B399C 002AF5FC 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 802B39A0 002AF600 7C 08 03 A6 */ mtlr r0
/* 802B39A4 002AF604 38 21 00 20 */ addi r1, r1, 0x20
/* 802B39A8 002AF608 4E 80 00 20 */ blr
.global InitializeUART
InitializeUART:
/* 802B39AC 002AF60C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802B39B0 002AF610 7C 08 02 A6 */ mflr r0
/* 802B39B4 002AF614 90 01 00 14 */ stw r0, 0x14(r1)
/* 802B39B8 002AF618 4B FB 4B 75 */ bl OSGetConsoleType
/* 802B39BC 002AF61C 54 60 00 C7 */ rlwinm. r0, r3, 0, 3, 3
/* 802B39C0 002AF620 40 82 00 14 */ bne lbl_802B39D4
/* 802B39C4 002AF624 38 00 00 00 */ li r0, 0
/* 802B39C8 002AF628 38 60 00 02 */ li r3, 2
/* 802B39CC 002AF62C 90 0D AE 94 */ stw r0, lbl_80640154-_SDA_BASE_(r13)
/* 802B39D0 002AF630 48 00 00 14 */ b lbl_802B39E4
lbl_802B39D4:
/* 802B39D4 002AF634 3C 80 A5 FF */ lis r4, 0xA5FF005A@ha
/* 802B39D8 002AF638 38 60 00 00 */ li r3, 0
/* 802B39DC 002AF63C 38 04 00 5A */ addi r0, r4, 0xA5FF005A@l
/* 802B39E0 002AF640 90 0D AE 94 */ stw r0, lbl_80640154-_SDA_BASE_(r13)
lbl_802B39E4:
/* 802B39E4 002AF644 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802B39E8 002AF648 7C 08 03 A6 */ mtlr r0
/* 802B39EC 002AF64C 38 21 00 10 */ addi r1, r1, 0x10
/* 802B39F0 002AF650 4E 80 00 20 */ blr
.global WriteUARTN
WriteUARTN:
/* 802B39F4 002AF654 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 802B39F8 002AF658 7C 08 02 A6 */ mflr r0
/* 802B39FC 002AF65C 90 01 00 34 */ stw r0, 0x34(r1)
/* 802B3A00 002AF660 39 61 00 30 */ addi r11, r1, 0x30
/* 802B3A04 002AF664 4B F1 37 21 */ bl _savegpr_26
/* 802B3A08 002AF668 80 AD AE 94 */ lwz r5, lbl_80640154-_SDA_BASE_(r13)
/* 802B3A0C 002AF66C 7C 7E 1B 78 */ mr r30, r3
/* 802B3A10 002AF670 7C 9F 23 78 */ mr r31, r4
/* 802B3A14 002AF674 3C 05 5A 01 */ addis r0, r5, 0x5a01
/* 802B3A18 002AF678 28 00 00 5A */ cmplwi r0, 0x5a
/* 802B3A1C 002AF67C 41 82 00 0C */ beq lbl_802B3A28
/* 802B3A20 002AF680 38 60 00 02 */ li r3, 2
/* 802B3A24 002AF684 48 00 01 E4 */ b lbl_802B3C08
lbl_802B3A28:
/* 802B3A28 002AF688 80 0D AE 88 */ lwz r0, lbl_80640148-_SDA_BASE_(r13)
/* 802B3A2C 002AF68C 2C 00 00 00 */ cmpwi r0, 0
/* 802B3A30 002AF690 40 82 00 18 */ bne lbl_802B3A48
/* 802B3A34 002AF694 4B FF FE 7D */ bl EUARTInit
/* 802B3A38 002AF698 2C 03 00 00 */ cmpwi r3, 0
/* 802B3A3C 002AF69C 40 82 00 0C */ bne lbl_802B3A48
/* 802B3A40 002AF6A0 38 60 00 02 */ li r3, 2
/* 802B3A44 002AF6A4 48 00 01 C4 */ b lbl_802B3C08
lbl_802B3A48:
/* 802B3A48 002AF6A8 80 0D AE 88 */ lwz r0, lbl_80640148-_SDA_BASE_(r13)
/* 802B3A4C 002AF6AC 2C 00 00 00 */ cmpwi r0, 0
/* 802B3A50 002AF6B0 40 82 00 14 */ bne lbl_802B3A64
/* 802B3A54 002AF6B4 38 00 00 01 */ li r0, 1
/* 802B3A58 002AF6B8 38 60 00 02 */ li r3, 2
/* 802B3A5C 002AF6BC 90 0D AE 8C */ stw r0, lbl_8064014C-_SDA_BASE_(r13)
/* 802B3A60 002AF6C0 48 00 01 A8 */ b lbl_802B3C08
lbl_802B3A64:
/* 802B3A64 002AF6C4 38 60 00 00 */ li r3, 0
/* 802B3A68 002AF6C8 38 80 00 01 */ li r4, 1
/* 802B3A6C 002AF6CC 38 A0 00 00 */ li r5, 0
/* 802B3A70 002AF6D0 4B FC 1D D5 */ bl EXILock
/* 802B3A74 002AF6D4 2C 03 00 00 */ cmpwi r3, 0
/* 802B3A78 002AF6D8 40 82 00 0C */ bne lbl_802B3A84
/* 802B3A7C 002AF6DC 38 60 00 00 */ li r3, 0
/* 802B3A80 002AF6E0 48 00 01 88 */ b lbl_802B3C08
lbl_802B3A84:
/* 802B3A84 002AF6E4 7F C4 F3 78 */ mr r4, r30
/* 802B3A88 002AF6E8 38 60 00 0D */ li r3, 0xd
/* 802B3A8C 002AF6EC 48 00 00 18 */ b lbl_802B3AA4
lbl_802B3A90:
/* 802B3A90 002AF6F0 88 04 00 00 */ lbz r0, 0(r4)
/* 802B3A94 002AF6F4 2C 00 00 0A */ cmpwi r0, 0xa
/* 802B3A98 002AF6F8 40 82 00 08 */ bne lbl_802B3AA0
/* 802B3A9C 002AF6FC 98 64 00 00 */ stb r3, 0(r4)
lbl_802B3AA0:
/* 802B3AA0 002AF700 38 84 00 01 */ addi r4, r4, 1
lbl_802B3AA4:
/* 802B3AA4 002AF704 7C 1E 20 50 */ subf r0, r30, r4
/* 802B3AA8 002AF708 7C 00 F8 40 */ cmplw r0, r31
/* 802B3AAC 002AF70C 41 80 FF E4 */ blt lbl_802B3A90
/* 802B3AB0 002AF710 3C 60 B0 00 */ lis r3, 0xB0000100@ha
/* 802B3AB4 002AF714 83 82 A0 68 */ lwz r28, lbl_80642668-_SDA2_BASE_(r2)
/* 802B3AB8 002AF718 38 03 01 00 */ addi r0, r3, 0xB0000100@l
/* 802B3ABC 002AF71C 3B 40 00 00 */ li r26, 0
/* 802B3AC0 002AF720 90 01 00 14 */ stw r0, 0x14(r1)
/* 802B3AC4 002AF724 3F A0 30 00 */ lis r29, 0x3000
/* 802B3AC8 002AF728 48 00 01 2C */ b lbl_802B3BF4
lbl_802B3ACC:
/* 802B3ACC 002AF72C 7F 85 E3 78 */ mr r5, r28
/* 802B3AD0 002AF730 38 60 00 00 */ li r3, 0
/* 802B3AD4 002AF734 38 80 00 01 */ li r4, 1
/* 802B3AD8 002AF738 4B FC 15 D9 */ bl EXISelect
/* 802B3ADC 002AF73C 2C 03 00 00 */ cmpwi r3, 0
/* 802B3AE0 002AF740 40 82 00 0C */ bne lbl_802B3AEC
/* 802B3AE4 002AF744 3B 60 FF FF */ li r27, -1
/* 802B3AE8 002AF748 48 00 00 60 */ b lbl_802B3B48
lbl_802B3AEC:
/* 802B3AEC 002AF74C 38 1D 01 00 */ addi r0, r29, 0x100
/* 802B3AF0 002AF750 38 81 00 08 */ addi r4, r1, 8
/* 802B3AF4 002AF754 90 01 00 08 */ stw r0, 8(r1)
/* 802B3AF8 002AF758 38 60 00 00 */ li r3, 0
/* 802B3AFC 002AF75C 38 A0 00 04 */ li r5, 4
/* 802B3B00 002AF760 38 C0 00 01 */ li r6, 1
/* 802B3B04 002AF764 38 E0 00 00 */ li r7, 0
/* 802B3B08 002AF768 4B FC 0B 41 */ bl EXIImm
/* 802B3B0C 002AF76C 38 60 00 00 */ li r3, 0
/* 802B3B10 002AF770 4B FC 0F 51 */ bl EXISync
/* 802B3B14 002AF774 38 81 00 0C */ addi r4, r1, 0xc
/* 802B3B18 002AF778 38 60 00 00 */ li r3, 0
/* 802B3B1C 002AF77C 38 A0 00 04 */ li r5, 4
/* 802B3B20 002AF780 38 C0 00 00 */ li r6, 0
/* 802B3B24 002AF784 38 E0 00 00 */ li r7, 0
/* 802B3B28 002AF788 4B FC 0B 21 */ bl EXIImm
/* 802B3B2C 002AF78C 38 60 00 00 */ li r3, 0
/* 802B3B30 002AF790 4B FC 0F 31 */ bl EXISync
/* 802B3B34 002AF794 38 60 00 00 */ li r3, 0
/* 802B3B38 002AF798 4B FC 16 A9 */ bl EXIDeselect
/* 802B3B3C 002AF79C 80 01 00 0C */ lwz r0, 0xc(r1)
/* 802B3B40 002AF7A0 54 00 46 BE */ rlwinm r0, r0, 8, 0x1a, 0x1f
/* 802B3B44 002AF7A4 23 60 00 20 */ subfic r27, r0, 0x20
lbl_802B3B48:
/* 802B3B48 002AF7A8 2C 1B 00 00 */ cmpwi r27, 0
/* 802B3B4C 002AF7AC 40 80 00 0C */ bge lbl_802B3B58
/* 802B3B50 002AF7B0 3B 40 00 03 */ li r26, 3
/* 802B3B54 002AF7B4 48 00 00 A8 */ b lbl_802B3BFC
lbl_802B3B58:
/* 802B3B58 002AF7B8 2C 1B 00 20 */ cmpwi r27, 0x20
/* 802B3B5C 002AF7BC 40 82 00 98 */ bne lbl_802B3BF4
/* 802B3B60 002AF7C0 7F 85 E3 78 */ mr r5, r28
/* 802B3B64 002AF7C4 38 60 00 00 */ li r3, 0
/* 802B3B68 002AF7C8 38 80 00 01 */ li r4, 1
/* 802B3B6C 002AF7CC 4B FC 15 45 */ bl EXISelect
/* 802B3B70 002AF7D0 2C 03 00 00 */ cmpwi r3, 0
/* 802B3B74 002AF7D4 40 82 00 0C */ bne lbl_802B3B80
/* 802B3B78 002AF7D8 3B 40 00 03 */ li r26, 3
/* 802B3B7C 002AF7DC 48 00 00 80 */ b lbl_802B3BFC
lbl_802B3B80:
/* 802B3B80 002AF7E0 38 81 00 14 */ addi r4, r1, 0x14
/* 802B3B84 002AF7E4 38 60 00 00 */ li r3, 0
/* 802B3B88 002AF7E8 38 A0 00 04 */ li r5, 4
/* 802B3B8C 002AF7EC 38 C0 00 01 */ li r6, 1
/* 802B3B90 002AF7F0 38 E0 00 00 */ li r7, 0
/* 802B3B94 002AF7F4 4B FC 0A B5 */ bl EXIImm
/* 802B3B98 002AF7F8 38 60 00 00 */ li r3, 0
/* 802B3B9C 002AF7FC 4B FC 0E C5 */ bl EXISync
/* 802B3BA0 002AF800 48 00 00 3C */ b lbl_802B3BDC
lbl_802B3BA4:
/* 802B3BA4 002AF804 88 1E 00 00 */ lbz r0, 0(r30)
/* 802B3BA8 002AF808 38 81 00 10 */ addi r4, r1, 0x10
/* 802B3BAC 002AF80C 38 60 00 00 */ li r3, 0
/* 802B3BB0 002AF810 38 A0 00 04 */ li r5, 4
/* 802B3BB4 002AF814 54 00 C0 0E */ slwi r0, r0, 0x18
/* 802B3BB8 002AF818 38 C0 00 01 */ li r6, 1
/* 802B3BBC 002AF81C 90 01 00 10 */ stw r0, 0x10(r1)
/* 802B3BC0 002AF820 38 E0 00 00 */ li r7, 0
/* 802B3BC4 002AF824 4B FC 0A 85 */ bl EXIImm
/* 802B3BC8 002AF828 38 60 00 00 */ li r3, 0
/* 802B3BCC 002AF82C 4B FC 0E 95 */ bl EXISync
/* 802B3BD0 002AF830 3B DE 00 01 */ addi r30, r30, 1
/* 802B3BD4 002AF834 3B 7B FF FF */ addi r27, r27, -1
/* 802B3BD8 002AF838 3B FF FF FF */ addi r31, r31, -1
lbl_802B3BDC:
/* 802B3BDC 002AF83C 2C 1B 00 00 */ cmpwi r27, 0
/* 802B3BE0 002AF840 40 81 00 0C */ ble lbl_802B3BEC
/* 802B3BE4 002AF844 2C 1F 00 00 */ cmpwi r31, 0
/* 802B3BE8 002AF848 40 82 FF BC */ bne lbl_802B3BA4
lbl_802B3BEC:
/* 802B3BEC 002AF84C 38 60 00 00 */ li r3, 0
/* 802B3BF0 002AF850 4B FC 15 F1 */ bl EXIDeselect
lbl_802B3BF4:
/* 802B3BF4 002AF854 2C 1F 00 00 */ cmpwi r31, 0
/* 802B3BF8 002AF858 40 82 FE D4 */ bne lbl_802B3ACC
lbl_802B3BFC:
/* 802B3BFC 002AF85C 38 60 00 00 */ li r3, 0
/* 802B3C00 002AF860 4B FC 1D 41 */ bl EXIUnlock
/* 802B3C04 002AF864 7F 43 D3 78 */ mr r3, r26
lbl_802B3C08:
/* 802B3C08 002AF868 39 61 00 30 */ addi r11, r1, 0x30
/* 802B3C0C 002AF86C 4B F1 35 65 */ bl _restgpr_26
/* 802B3C10 002AF870 80 01 00 34 */ lwz r0, 0x34(r1)
/* 802B3C14 002AF874 7C 08 03 A6 */ mtlr r0
/* 802B3C18 002AF878 38 21 00 30 */ addi r1, r1, 0x30
/* 802B3C1C 002AF87C 4E 80 00 20 */ blr
|