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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global DSPCheckMailToDSP
DSPCheckMailToDSP:
/* 8029ADF8 00296A58 3C 60 CC 00 */ lis r3, 0xCC005000@ha
/* 8029ADFC 00296A5C A0 03 50 00 */ lhz r0, 0xCC005000@l(r3)
/* 8029AE00 00296A60 54 03 8F FE */ rlwinm r3, r0, 0x11, 0x1f, 0x1f
/* 8029AE04 00296A64 4E 80 00 20 */ blr
.global DSPCheckMailFromDSP
DSPCheckMailFromDSP:
/* 8029AE08 00296A68 3C 60 CC 00 */ lis r3, 0xCC005004@ha
/* 8029AE0C 00296A6C A0 03 50 04 */ lhz r0, 0xCC005004@l(r3)
/* 8029AE10 00296A70 54 03 8F FE */ rlwinm r3, r0, 0x11, 0x1f, 0x1f
/* 8029AE14 00296A74 4E 80 00 20 */ blr
.global DSPReadMailFromDSP
DSPReadMailFromDSP:
/* 8029AE18 00296A78 3C 60 CC 00 */ lis r3, 0xCC005004@ha
/* 8029AE1C 00296A7C A0 03 50 04 */ lhz r0, 0xCC005004@l(r3)
/* 8029AE20 00296A80 A0 63 50 06 */ lhz r3, 0x5006(r3)
/* 8029AE24 00296A84 50 03 80 1E */ rlwimi r3, r0, 0x10, 0, 0xf
/* 8029AE28 00296A88 4E 80 00 20 */ blr
.global DSPSendMailToDSP
DSPSendMailToDSP:
/* 8029AE2C 00296A8C 3C 80 CC 00 */ lis r4, 0xCC005000@ha
/* 8029AE30 00296A90 54 60 84 3E */ srwi r0, r3, 0x10
/* 8029AE34 00296A94 B0 04 50 00 */ sth r0, 0xCC005000@l(r4)
/* 8029AE38 00296A98 B0 64 50 02 */ sth r3, 0x5002(r4)
/* 8029AE3C 00296A9C 4E 80 00 20 */ blr
.global DSPInit
DSPInit:
/* 8029AE40 00296AA0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8029AE44 00296AA4 7C 08 02 A6 */ mflr r0
/* 8029AE48 00296AA8 3C A0 80 44 */ lis r5, lbl_8043BD00@ha
/* 8029AE4C 00296AAC 90 01 00 14 */ stw r0, 0x14(r1)
/* 8029AE50 00296AB0 38 A5 BD 00 */ addi r5, r5, lbl_8043BD00@l
/* 8029AE54 00296AB4 38 65 00 48 */ addi r3, r5, 0x48
/* 8029AE58 00296AB8 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8029AE5C 00296ABC 38 85 00 68 */ addi r4, r5, 0x68
/* 8029AE60 00296AC0 38 A5 00 74 */ addi r5, r5, 0x74
/* 8029AE64 00296AC4 4C C6 31 82 */ crclr 6
/* 8029AE68 00296AC8 48 00 01 CD */ bl __DSP_debug_printf
/* 8029AE6C 00296ACC 80 0D AC 68 */ lwz r0, lbl_8063FF28-_SDA_BASE_(r13)
/* 8029AE70 00296AD0 2C 00 00 01 */ cmpwi r0, 1
/* 8029AE74 00296AD4 41 82 00 78 */ beq lbl_8029AEEC
/* 8029AE78 00296AD8 80 6D 89 00 */ lwz r3, lbl_8063DBC0-_SDA_BASE_(r13)
/* 8029AE7C 00296ADC 4B FC E7 D5 */ bl OSRegisterVersion
/* 8029AE80 00296AE0 4B FD 38 DD */ bl OSDisableInterrupts
/* 8029AE84 00296AE4 3C 80 80 2A */ lis r4, __DSPHandler@ha
/* 8029AE88 00296AE8 7C 7F 1B 78 */ mr r31, r3
/* 8029AE8C 00296AEC 38 84 B0 84 */ addi r4, r4, __DSPHandler@l
/* 8029AE90 00296AF0 38 60 00 07 */ li r3, 7
/* 8029AE94 00296AF4 4B FD 39 15 */ bl __OSSetInterruptHandler
/* 8029AE98 00296AF8 3C 60 01 00 */ lis r3, 0x100
/* 8029AE9C 00296AFC 4B FD 3C D1 */ bl __OSUnmaskInterrupts
/* 8029AEA0 00296B00 3C E0 CC 00 */ lis r7, 0xCC00500A@ha
/* 8029AEA4 00296B04 38 60 FF 57 */ li r3, -169
/* 8029AEA8 00296B08 A0 C7 50 0A */ lhz r6, 0xCC00500A@l(r7)
/* 8029AEAC 00296B0C 38 A0 FF 53 */ li r5, -173
/* 8029AEB0 00296B10 38 80 00 00 */ li r4, 0
/* 8029AEB4 00296B14 38 00 00 01 */ li r0, 1
/* 8029AEB8 00296B18 7C C3 18 38 */ and r3, r6, r3
/* 8029AEBC 00296B1C 60 63 08 00 */ ori r3, r3, 0x800
/* 8029AEC0 00296B20 B0 67 50 0A */ sth r3, 0x500a(r7)
/* 8029AEC4 00296B24 7F E3 FB 78 */ mr r3, r31
/* 8029AEC8 00296B28 A0 C7 50 0A */ lhz r6, 0x500a(r7)
/* 8029AECC 00296B2C 7C C5 28 38 */ and r5, r6, r5
/* 8029AED0 00296B30 B0 A7 50 0A */ sth r5, 0x500a(r7)
/* 8029AED4 00296B34 90 8D AC 78 */ stw r4, lbl_8063FF38-_SDA_BASE_(r13)
/* 8029AED8 00296B38 90 8D AC 84 */ stw r4, lbl_8063FF44-_SDA_BASE_(r13)
/* 8029AEDC 00296B3C 90 8D AC 7C */ stw r4, lbl_8063FF3C-_SDA_BASE_(r13)
/* 8029AEE0 00296B40 90 8D AC 80 */ stw r4, lbl_8063FF40-_SDA_BASE_(r13)
/* 8029AEE4 00296B44 90 0D AC 68 */ stw r0, lbl_8063FF28-_SDA_BASE_(r13)
/* 8029AEE8 00296B48 4B FD 38 9D */ bl OSRestoreInterrupts
lbl_8029AEEC:
/* 8029AEEC 00296B4C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8029AEF0 00296B50 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8029AEF4 00296B54 7C 08 03 A6 */ mtlr r0
/* 8029AEF8 00296B58 38 21 00 10 */ addi r1, r1, 0x10
/* 8029AEFC 00296B5C 4E 80 00 20 */ blr
.global DSPCheckInit
DSPCheckInit:
/* 8029AF00 00296B60 80 6D AC 68 */ lwz r3, lbl_8063FF28-_SDA_BASE_(r13)
/* 8029AF04 00296B64 4E 80 00 20 */ blr
.global DSPAddTask
DSPAddTask:
/* 8029AF08 00296B68 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8029AF0C 00296B6C 7C 08 02 A6 */ mflr r0
/* 8029AF10 00296B70 90 01 00 14 */ stw r0, 0x14(r1)
/* 8029AF14 00296B74 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8029AF18 00296B78 93 C1 00 08 */ stw r30, 8(r1)
/* 8029AF1C 00296B7C 7C 7E 1B 78 */ mr r30, r3
/* 8029AF20 00296B80 4B FD 38 3D */ bl OSDisableInterrupts
/* 8029AF24 00296B84 7C 7F 1B 78 */ mr r31, r3
/* 8029AF28 00296B88 7F C3 F3 78 */ mr r3, r30
/* 8029AF2C 00296B8C 48 00 08 BD */ bl __DSP_insert_task
/* 8029AF30 00296B90 38 60 00 00 */ li r3, 0
/* 8029AF34 00296B94 38 00 00 01 */ li r0, 1
/* 8029AF38 00296B98 90 7E 00 00 */ stw r3, 0(r30)
/* 8029AF3C 00296B9C 7F E3 FB 78 */ mr r3, r31
/* 8029AF40 00296BA0 90 1E 00 08 */ stw r0, 8(r30)
/* 8029AF44 00296BA4 4B FD 38 41 */ bl OSRestoreInterrupts
/* 8029AF48 00296BA8 80 0D AC 80 */ lwz r0, lbl_8063FF40-_SDA_BASE_(r13)
/* 8029AF4C 00296BAC 7C 1E 00 40 */ cmplw r30, r0
/* 8029AF50 00296BB0 40 82 00 0C */ bne lbl_8029AF5C
/* 8029AF54 00296BB4 7F C3 F3 78 */ mr r3, r30
/* 8029AF58 00296BB8 48 00 07 05 */ bl __DSP_boot_task
lbl_8029AF5C:
/* 8029AF5C 00296BBC 7F C3 F3 78 */ mr r3, r30
/* 8029AF60 00296BC0 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8029AF64 00296BC4 83 C1 00 08 */ lwz r30, 8(r1)
/* 8029AF68 00296BC8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8029AF6C 00296BCC 7C 08 03 A6 */ mtlr r0
/* 8029AF70 00296BD0 38 21 00 10 */ addi r1, r1, 0x10
/* 8029AF74 00296BD4 4E 80 00 20 */ blr
.global DSPAssertTask
DSPAssertTask:
/* 8029AF78 00296BD8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8029AF7C 00296BDC 7C 08 02 A6 */ mflr r0
/* 8029AF80 00296BE0 90 01 00 14 */ stw r0, 0x14(r1)
/* 8029AF84 00296BE4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8029AF88 00296BE8 93 C1 00 08 */ stw r30, 8(r1)
/* 8029AF8C 00296BEC 7C 7E 1B 78 */ mr r30, r3
/* 8029AF90 00296BF0 4B FD 37 CD */ bl OSDisableInterrupts
/* 8029AF94 00296BF4 80 AD AC 84 */ lwz r5, lbl_8063FF44-_SDA_BASE_(r13)
/* 8029AF98 00296BF8 7C 7F 1B 78 */ mr r31, r3
/* 8029AF9C 00296BFC 7C 05 F0 40 */ cmplw r5, r30
/* 8029AFA0 00296C00 40 82 00 1C */ bne lbl_8029AFBC
/* 8029AFA4 00296C04 38 00 00 01 */ li r0, 1
/* 8029AFA8 00296C08 93 CD AC 74 */ stw r30, lbl_8063FF34-_SDA_BASE_(r13)
/* 8029AFAC 00296C0C 90 0D AC 70 */ stw r0, lbl_8063FF30-_SDA_BASE_(r13)
/* 8029AFB0 00296C10 4B FD 37 D5 */ bl OSRestoreInterrupts
/* 8029AFB4 00296C14 7F C3 F3 78 */ mr r3, r30
/* 8029AFB8 00296C18 48 00 00 64 */ b lbl_8029B01C
lbl_8029AFBC:
/* 8029AFBC 00296C1C 80 9E 00 04 */ lwz r4, 4(r30)
/* 8029AFC0 00296C20 80 05 00 04 */ lwz r0, 4(r5)
/* 8029AFC4 00296C24 7C 04 00 40 */ cmplw r4, r0
/* 8029AFC8 00296C28 40 80 00 4C */ bge lbl_8029B014
/* 8029AFCC 00296C2C 38 00 00 01 */ li r0, 1
/* 8029AFD0 00296C30 93 CD AC 74 */ stw r30, lbl_8063FF34-_SDA_BASE_(r13)
/* 8029AFD4 00296C34 90 0D AC 70 */ stw r0, lbl_8063FF30-_SDA_BASE_(r13)
/* 8029AFD8 00296C38 80 05 00 00 */ lwz r0, 0(r5)
/* 8029AFDC 00296C3C 28 00 00 01 */ cmplwi r0, 1
/* 8029AFE0 00296C40 40 82 00 24 */ bne lbl_8029B004
/* 8029AFE4 00296C44 4B FD 37 79 */ bl OSDisableInterrupts
/* 8029AFE8 00296C48 3C A0 CC 00 */ lis r5, 0xCC00500A@ha
/* 8029AFEC 00296C4C 38 00 FF 57 */ li r0, -169
/* 8029AFF0 00296C50 A0 85 50 0A */ lhz r4, 0xCC00500A@l(r5)
/* 8029AFF4 00296C54 7C 80 00 38 */ and r0, r4, r0
/* 8029AFF8 00296C58 60 00 00 02 */ ori r0, r0, 2
/* 8029AFFC 00296C5C B0 05 50 0A */ sth r0, 0x500a(r5)
/* 8029B000 00296C60 4B FD 37 85 */ bl OSRestoreInterrupts
lbl_8029B004:
/* 8029B004 00296C64 7F E3 FB 78 */ mr r3, r31
/* 8029B008 00296C68 4B FD 37 7D */ bl OSRestoreInterrupts
/* 8029B00C 00296C6C 7F C3 F3 78 */ mr r3, r30
/* 8029B010 00296C70 48 00 00 0C */ b lbl_8029B01C
lbl_8029B014:
/* 8029B014 00296C74 4B FD 37 71 */ bl OSRestoreInterrupts
/* 8029B018 00296C78 38 60 00 00 */ li r3, 0
lbl_8029B01C:
/* 8029B01C 00296C7C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8029B020 00296C80 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8029B024 00296C84 83 C1 00 08 */ lwz r30, 8(r1)
/* 8029B028 00296C88 7C 08 03 A6 */ mtlr r0
/* 8029B02C 00296C8C 38 21 00 10 */ addi r1, r1, 0x10
/* 8029B030 00296C90 4E 80 00 20 */ blr
|