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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global __DBMtrHandler
__DBMtrHandler:
/* 801D9F70 001D5BD0 81 8D 9F F0 */ lwz r12, lbl_8063F2B0-_SDA_BASE_(r13)
/* 801D9F74 001D5BD4 38 00 00 01 */ li r0, 1
/* 801D9F78 001D5BD8 98 0D 9F F8 */ stb r0, lbl_8063F2B8-_SDA_BASE_(r13)
/* 801D9F7C 001D5BDC 2C 0C 00 00 */ cmpwi r12, 0
/* 801D9F80 001D5BE0 4D 82 00 20 */ beqlr
/* 801D9F84 001D5BE4 38 60 00 00 */ li r3, 0
/* 801D9F88 001D5BE8 7D 89 03 A6 */ mtctr r12
/* 801D9F8C 001D5BEC 4E 80 04 20 */ bctr
/* 801D9F90 001D5BF0 4E 80 00 20 */ blr
.global __DBIntrHandler
__DBIntrHandler:
/* 801D9F94 001D5BF4 38 00 10 00 */ li r0, 0x1000
/* 801D9F98 001D5BF8 3C A0 CC 00 */ lis r5, 0xCC003000@ha
/* 801D9F9C 001D5BFC 90 05 30 00 */ stw r0, 0xCC003000@l(r5)
/* 801D9FA0 001D5C00 81 8D 9F F4 */ lwz r12, lbl_8063F2B4-_SDA_BASE_(r13)
/* 801D9FA4 001D5C04 2C 0C 00 00 */ cmpwi r12, 0
/* 801D9FA8 001D5C08 4D 82 00 20 */ beqlr
/* 801D9FAC 001D5C0C 7D 89 03 A6 */ mtctr r12
/* 801D9FB0 001D5C10 4E 80 04 20 */ bctr
/* 801D9FB4 001D5C14 4E 80 00 20 */ blr
.global DBInitComm
DBInitComm:
/* 801D9FB8 001D5C18 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 801D9FBC 001D5C1C 7C 08 02 A6 */ mflr r0
/* 801D9FC0 001D5C20 90 01 00 24 */ stw r0, 0x24(r1)
/* 801D9FC4 001D5C24 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 801D9FC8 001D5C28 93 C1 00 18 */ stw r30, 0x18(r1)
/* 801D9FCC 001D5C2C 7C 9E 23 78 */ mr r30, r4
/* 801D9FD0 001D5C30 93 A1 00 14 */ stw r29, 0x14(r1)
/* 801D9FD4 001D5C34 7C 7D 1B 78 */ mr r29, r3
/* 801D9FD8 001D5C38 48 09 47 85 */ bl OSDisableInterrupts
/* 801D9FDC 001D5C3C 38 0D 9F F8 */ addi r0, r13, lbl_8063F2B8-_SDA_BASE_
/* 801D9FE0 001D5C40 7C 7F 1B 78 */ mr r31, r3
/* 801D9FE4 001D5C44 90 1D 00 00 */ stw r0, 0(r29)
/* 801D9FE8 001D5C48 93 CD 9F F0 */ stw r30, lbl_8063F2B0-_SDA_BASE_(r13)
/* 801D9FEC 001D5C4C 48 00 05 A1 */ bl __DBEXIInit
/* 801D9FF0 001D5C50 7F E3 FB 78 */ mr r3, r31
/* 801D9FF4 001D5C54 48 09 47 91 */ bl OSRestoreInterrupts
/* 801D9FF8 001D5C58 80 01 00 24 */ lwz r0, 0x24(r1)
/* 801D9FFC 001D5C5C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 801DA000 001D5C60 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 801DA004 001D5C64 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 801DA008 001D5C68 7C 08 03 A6 */ mtlr r0
/* 801DA00C 001D5C6C 38 21 00 20 */ addi r1, r1, 0x20
/* 801DA010 001D5C70 4E 80 00 20 */ blr
.global DBInitInterrupts
DBInitInterrupts:
/* 801DA014 001D5C74 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801DA018 001D5C78 7C 08 02 A6 */ mflr r0
/* 801DA01C 001D5C7C 3C 60 00 02 */ lis r3, 0x00018000@ha
/* 801DA020 001D5C80 90 01 00 14 */ stw r0, 0x14(r1)
/* 801DA024 001D5C84 38 63 80 00 */ addi r3, r3, 0x00018000@l
/* 801DA028 001D5C88 48 09 4A C5 */ bl __OSMaskInterrupts
/* 801DA02C 001D5C8C 38 60 00 40 */ li r3, 0x40
/* 801DA030 001D5C90 48 09 4A BD */ bl __OSMaskInterrupts
/* 801DA034 001D5C94 3C 60 80 1E */ lis r3, __DBMtrHandler@ha
/* 801DA038 001D5C98 3C 80 80 1E */ lis r4, __DBIntrHandler@ha
/* 801DA03C 001D5C9C 38 63 9F 70 */ addi r3, r3, __DBMtrHandler@l
/* 801DA040 001D5CA0 90 6D 9F F4 */ stw r3, lbl_8063F2B4-_SDA_BASE_(r13)
/* 801DA044 001D5CA4 38 84 9F 94 */ addi r4, r4, __DBIntrHandler@l
/* 801DA048 001D5CA8 38 60 00 19 */ li r3, 0x19
/* 801DA04C 001D5CAC 48 09 47 5D */ bl __OSSetInterruptHandler
/* 801DA050 001D5CB0 38 60 00 40 */ li r3, 0x40
/* 801DA054 001D5CB4 48 09 4B 19 */ bl __OSUnmaskInterrupts
/* 801DA058 001D5CB8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801DA05C 001D5CBC 7C 08 03 A6 */ mtlr r0
/* 801DA060 001D5CC0 38 21 00 10 */ addi r1, r1, 0x10
/* 801DA064 001D5CC4 4E 80 00 20 */ blr
.global DBQueryData
DBQueryData:
/* 801DA068 001D5CC8 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 801DA06C 001D5CCC 7C 08 02 A6 */ mflr r0
/* 801DA070 001D5CD0 38 60 00 00 */ li r3, 0
/* 801DA074 001D5CD4 90 01 00 24 */ stw r0, 0x24(r1)
/* 801DA078 001D5CD8 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 801DA07C 001D5CDC 80 0D A0 00 */ lwz r0, lbl_8063F2C0-_SDA_BASE_(r13)
/* 801DA080 001D5CE0 98 6D 9F F8 */ stb r3, lbl_8063F2B8-_SDA_BASE_(r13)
/* 801DA084 001D5CE4 2C 00 00 00 */ cmpwi r0, 0
/* 801DA088 001D5CE8 40 82 00 6C */ bne lbl_801DA0F4
/* 801DA08C 001D5CEC 48 09 46 D1 */ bl OSDisableInterrupts
/* 801DA090 001D5CF0 7C 7F 1B 78 */ mr r31, r3
/* 801DA094 001D5CF4 38 81 00 08 */ addi r4, r1, 8
/* 801DA098 001D5CF8 3C 60 34 00 */ lis r3, 0x3400
/* 801DA09C 001D5CFC 38 A0 00 01 */ li r5, 1
/* 801DA0A0 001D5D00 48 00 05 A9 */ bl __DBEXIReadReg
/* 801DA0A4 001D5D04 88 01 00 08 */ lbz r0, 8(r1)
/* 801DA0A8 001D5D08 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c
/* 801DA0AC 001D5D0C 40 82 00 40 */ bne lbl_801DA0EC
/* 801DA0B0 001D5D10 3C 60 34 00 */ lis r3, 0x34000200@ha
/* 801DA0B4 001D5D14 38 81 00 0C */ addi r4, r1, 0xc
/* 801DA0B8 001D5D18 38 63 02 00 */ addi r3, r3, 0x34000200@l
/* 801DA0BC 001D5D1C 38 A0 00 04 */ li r5, 4
/* 801DA0C0 001D5D20 48 00 05 89 */ bl __DBEXIReadReg
/* 801DA0C4 001D5D24 80 81 00 0C */ lwz r4, 0xc(r1)
/* 801DA0C8 001D5D28 54 83 00 CE */ rlwinm r3, r4, 0, 3, 7
/* 801DA0CC 001D5D2C 3C 03 E1 00 */ addis r0, r3, 0xe100
/* 801DA0D0 001D5D30 28 00 00 00 */ cmplwi r0, 0
/* 801DA0D4 001D5D34 40 82 00 18 */ bne lbl_801DA0EC
/* 801DA0D8 001D5D38 54 83 04 FE */ clrlwi r3, r4, 0x13
/* 801DA0DC 001D5D3C 38 00 00 01 */ li r0, 1
/* 801DA0E0 001D5D40 90 8D 9F FC */ stw r4, lbl_8063F2BC-_SDA_BASE_(r13)
/* 801DA0E4 001D5D44 90 6D A0 00 */ stw r3, lbl_8063F2C0-_SDA_BASE_(r13)
/* 801DA0E8 001D5D48 98 0D 9F F8 */ stb r0, lbl_8063F2B8-_SDA_BASE_(r13)
lbl_801DA0EC:
/* 801DA0EC 001D5D4C 7F E3 FB 78 */ mr r3, r31
/* 801DA0F0 001D5D50 48 09 46 95 */ bl OSRestoreInterrupts
lbl_801DA0F4:
/* 801DA0F4 001D5D54 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 801DA0F8 001D5D58 80 01 00 24 */ lwz r0, 0x24(r1)
/* 801DA0FC 001D5D5C 80 6D A0 00 */ lwz r3, lbl_8063F2C0-_SDA_BASE_(r13)
/* 801DA100 001D5D60 7C 08 03 A6 */ mtlr r0
/* 801DA104 001D5D64 38 21 00 20 */ addi r1, r1, 0x20
/* 801DA108 001D5D68 4E 80 00 20 */ blr
.global DBRead
DBRead:
/* 801DA10C 001D5D6C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801DA110 001D5D70 7C 08 02 A6 */ mflr r0
/* 801DA114 001D5D74 90 01 00 14 */ stw r0, 0x14(r1)
/* 801DA118 001D5D78 93 E1 00 0C */ stw r31, 0xc(r1)
/* 801DA11C 001D5D7C 7C 9F 23 78 */ mr r31, r4
/* 801DA120 001D5D80 93 C1 00 08 */ stw r30, 8(r1)
/* 801DA124 001D5D84 7C 7E 1B 78 */ mr r30, r3
/* 801DA128 001D5D88 48 09 46 35 */ bl OSDisableInterrupts
/* 801DA12C 001D5D8C 80 AD 9F FC */ lwz r5, lbl_8063F2BC-_SDA_BASE_(r13)
/* 801DA130 001D5D90 38 1F 00 03 */ addi r0, r31, 3
/* 801DA134 001D5D94 7C 7F 1B 78 */ mr r31, r3
/* 801DA138 001D5D98 7F C4 F3 78 */ mr r4, r30
/* 801DA13C 001D5D9C 54 A3 87 FE */ rlwinm r3, r5, 0x10, 0x1f, 0x1f
/* 801DA140 001D5DA0 54 05 00 3A */ rlwinm r5, r0, 0, 0, 0x1d
/* 801DA144 001D5DA4 7C 03 00 D0 */ neg r0, r3
/* 801DA148 001D5DA8 54 03 05 28 */ rlwinm r3, r0, 0, 0x14, 0x14
/* 801DA14C 001D5DAC 3C 63 00 D1 */ addis r3, r3, 0xd1
/* 801DA150 001D5DB0 38 03 10 00 */ addi r0, r3, 0x1000
/* 801DA154 001D5DB4 54 03 30 AE */ rlwinm r3, r0, 6, 2, 0x17
/* 801DA158 001D5DB8 48 00 07 19 */ bl __DBEXIReadRam
/* 801DA15C 001D5DBC 38 00 00 00 */ li r0, 0
/* 801DA160 001D5DC0 7F E3 FB 78 */ mr r3, r31
/* 801DA164 001D5DC4 90 0D A0 00 */ stw r0, lbl_8063F2C0-_SDA_BASE_(r13)
/* 801DA168 001D5DC8 98 0D 9F F8 */ stb r0, lbl_8063F2B8-_SDA_BASE_(r13)
/* 801DA16C 001D5DCC 48 09 46 19 */ bl OSRestoreInterrupts
/* 801DA170 001D5DD0 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 801DA174 001D5DD4 38 60 00 00 */ li r3, 0
/* 801DA178 001D5DD8 83 C1 00 08 */ lwz r30, 8(r1)
/* 801DA17C 001D5DDC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801DA180 001D5DE0 7C 08 03 A6 */ mtlr r0
/* 801DA184 001D5DE4 38 21 00 10 */ addi r1, r1, 0x10
/* 801DA188 001D5DE8 4E 80 00 20 */ blr
.global DBWrite
DBWrite:
/* 801DA18C 001D5DEC 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 801DA190 001D5DF0 7C 08 02 A6 */ mflr r0
/* 801DA194 001D5DF4 90 01 00 34 */ stw r0, 0x34(r1)
/* 801DA198 001D5DF8 39 61 00 30 */ addi r11, r1, 0x30
/* 801DA19C 001D5DFC 4B FE CF 8D */ bl _savegpr_27
/* 801DA1A0 001D5E00 7C 7B 1B 78 */ mr r27, r3
/* 801DA1A4 001D5E04 7C 9C 23 78 */ mr r28, r4
/* 801DA1A8 001D5E08 48 09 45 B5 */ bl OSDisableInterrupts
/* 801DA1AC 001D5E0C 7C 7F 1B 78 */ mr r31, r3
lbl_801DA1B0:
/* 801DA1B0 001D5E10 38 81 00 0A */ addi r4, r1, 0xa
/* 801DA1B4 001D5E14 3C 60 34 00 */ lis r3, 0x3400
/* 801DA1B8 001D5E18 38 A0 00 01 */ li r5, 1
/* 801DA1BC 001D5E1C 48 00 04 8D */ bl __DBEXIReadReg
/* 801DA1C0 001D5E20 88 01 00 0A */ lbz r0, 0xa(r1)
/* 801DA1C4 001D5E24 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 801DA1C8 001D5E28 40 82 FF E8 */ bne lbl_801DA1B0
/* 801DA1CC 001D5E2C 88 6D 84 08 */ lbz r3, lbl_8063D6C8-_SDA_BASE_(r13)
/* 801DA1D0 001D5E30 38 1C 00 03 */ addi r0, r28, 3
/* 801DA1D4 001D5E34 54 1D 00 3A */ rlwinm r29, r0, 0, 0, 0x1d
/* 801DA1D8 001D5E38 38 63 00 01 */ addi r3, r3, 1
/* 801DA1DC 001D5E3C 54 60 07 FE */ clrlwi r0, r3, 0x1f
/* 801DA1E0 001D5E40 98 6D 84 08 */ stb r3, lbl_8063D6C8-_SDA_BASE_(r13)
/* 801DA1E4 001D5E44 7C 00 00 D0 */ neg r0, r0
/* 801DA1E8 001D5E48 54 03 05 28 */ rlwinm r3, r0, 0, 0x14, 0x14
/* 801DA1EC 001D5E4C 3C 03 00 D1 */ addis r0, r3, 0xd1
/* 801DA1F0 001D5E50 54 00 30 AE */ rlwinm r0, r0, 6, 2, 0x17
/* 801DA1F4 001D5E54 64 1E 80 00 */ oris r30, r0, 0x8000
lbl_801DA1F8:
/* 801DA1F8 001D5E58 7F C3 F3 78 */ mr r3, r30
/* 801DA1FC 001D5E5C 7F 64 DB 78 */ mr r4, r27
/* 801DA200 001D5E60 7F A5 EB 78 */ mr r5, r29
/* 801DA204 001D5E64 48 00 07 4D */ bl __DBEXIWriteRam
/* 801DA208 001D5E68 2C 03 00 00 */ cmpwi r3, 0
/* 801DA20C 001D5E6C 41 82 FF EC */ beq lbl_801DA1F8
lbl_801DA210:
/* 801DA210 001D5E70 38 81 00 09 */ addi r4, r1, 9
/* 801DA214 001D5E74 3C 60 34 00 */ lis r3, 0x3400
/* 801DA218 001D5E78 38 A0 00 01 */ li r5, 1
/* 801DA21C 001D5E7C 48 00 04 2D */ bl __DBEXIReadReg
/* 801DA220 001D5E80 88 01 00 09 */ lbz r0, 9(r1)
/* 801DA224 001D5E84 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 801DA228 001D5E88 40 82 FF E8 */ bne lbl_801DA210
/* 801DA22C 001D5E8C 88 6D 84 08 */ lbz r3, lbl_8063D6C8-_SDA_BASE_(r13)
/* 801DA230 001D5E90 57 80 04 FE */ clrlwi r0, r28, 0x13
/* 801DA234 001D5E94 64 1D 1F 00 */ oris r29, r0, 0x1f00
/* 801DA238 001D5E98 3F C0 B4 00 */ lis r30, 0xB4000100@ha
/* 801DA23C 001D5E9C 50 7D 82 1E */ rlwimi r29, r3, 0x10, 8, 0xf
lbl_801DA240:
/* 801DA240 001D5EA0 93 A1 00 0C */ stw r29, 0xc(r1)
/* 801DA244 001D5EA4 38 7E 01 00 */ addi r3, r30, 0xB4000100@l
/* 801DA248 001D5EA8 38 81 00 0C */ addi r4, r1, 0xc
/* 801DA24C 001D5EAC 38 A0 00 04 */ li r5, 4
/* 801DA250 001D5EB0 48 00 05 1D */ bl __DBEXIWriteReg
/* 801DA254 001D5EB4 2C 03 00 00 */ cmpwi r3, 0
/* 801DA258 001D5EB8 41 82 FF E8 */ beq lbl_801DA240
lbl_801DA25C:
/* 801DA25C 001D5EBC 38 81 00 08 */ addi r4, r1, 8
/* 801DA260 001D5EC0 3C 60 34 00 */ lis r3, 0x3400
/* 801DA264 001D5EC4 38 A0 00 01 */ li r5, 1
/* 801DA268 001D5EC8 48 00 03 E1 */ bl __DBEXIReadReg
/* 801DA26C 001D5ECC 88 01 00 08 */ lbz r0, 8(r1)
/* 801DA270 001D5ED0 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 801DA274 001D5ED4 40 82 FF E8 */ bne lbl_801DA25C
/* 801DA278 001D5ED8 7F E3 FB 78 */ mr r3, r31
/* 801DA27C 001D5EDC 48 09 45 09 */ bl OSRestoreInterrupts
/* 801DA280 001D5EE0 39 61 00 30 */ addi r11, r1, 0x30
/* 801DA284 001D5EE4 38 60 00 00 */ li r3, 0
/* 801DA288 001D5EE8 4B FE CE ED */ bl _restgpr_27
/* 801DA28C 001D5EEC 80 01 00 34 */ lwz r0, 0x34(r1)
/* 801DA290 001D5EF0 7C 08 03 A6 */ mtlr r0
/* 801DA294 001D5EF4 38 21 00 30 */ addi r1, r1, 0x30
/* 801DA298 001D5EF8 4E 80 00 20 */ blr
.global DBOpen
DBOpen:
/* 801DA29C 001D5EFC 4E 80 00 20 */ blr
.global DBClose
DBClose:
/* 801DA2A0 001D5F00 4E 80 00 20 */ blr
|