summaryrefslogtreecommitdiff
path: root/asm/NdevExi2A/DebuggerDriver.s
blob: bf83ef92a2418f2a82a177d5109d7f22aec2f9d9 (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
.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