summaryrefslogtreecommitdiff
path: root/asm/SDK/BTE/bta_hh_utils.s
blob: 69b73996c2ad728ac85956a8e4dfcecf3093c0a5 (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
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global bta_hh_find_cb
bta_hh_find_cb:
/* 802C3080 002BECE0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802C3084 002BECE4  7C 08 02 A6 */	mflr r0
/* 802C3088 002BECE8  90 01 00 24 */	stw r0, 0x24(r1)
/* 802C308C 002BECEC  39 61 00 20 */	addi r11, r1, 0x20
/* 802C3090 002BECF0  4B F0 40 99 */	bl _savegpr_27
/* 802C3094 002BECF4  3F E0 80 57 */	lis r31, lbl_80568948@ha
/* 802C3098 002BECF8  3F C0 80 44 */	lis r30, lbl_80440A00@ha
/* 802C309C 002BECFC  7C 7B 1B 78 */	mr r27, r3
/* 802C30A0 002BED00  3B 80 00 00 */	li r28, 0
/* 802C30A4 002BED04  3B DE 0A 00 */	addi r30, r30, lbl_80440A00@l
/* 802C30A8 002BED08  3B FF 89 48 */	addi r31, r31, lbl_80568948@l
lbl_802C30AC:
/* 802C30AC 002BED0C  57 9D 2C F4 */	rlwinm r29, r28, 5, 0x13, 0x1a
/* 802C30B0 002BED10  7F 63 DB 78 */	mr r3, r27
/* 802C30B4 002BED14  7C 9F EA 14 */	add r4, r31, r29
/* 802C30B8 002BED18  38 84 00 18 */	addi r4, r4, 0x18
/* 802C30BC 002BED1C  4B FF A4 D9 */	bl bdcmp
/* 802C30C0 002BED20  2C 03 00 00 */	cmpwi r3, 0
/* 802C30C4 002BED24  40 82 00 44 */	bne lbl_802C3108
/* 802C30C8 002BED28  7F 63 DB 78 */	mr r3, r27
/* 802C30CC 002BED2C  38 82 AA 28 */	addi r4, r2, lbl_80643028-_SDA2_BASE_
/* 802C30D0 002BED30  4B FF A4 C5 */	bl bdcmp
/* 802C30D4 002BED34  2C 03 00 00 */	cmpwi r3, 0
/* 802C30D8 002BED38  41 82 00 30 */	beq lbl_802C3108
/* 802C30DC 002BED3C  88 0D AE F8 */	lbz r0, lbl_806401B8-_SDA_BASE_(r13)
/* 802C30E0 002BED40  28 00 00 05 */	cmplwi r0, 5
/* 802C30E4 002BED44  41 80 00 1C */	blt lbl_802C3100
/* 802C30E8 002BED48  7C 7F EA 14 */	add r3, r31, r29
/* 802C30EC 002BED4C  38 9E 00 00 */	addi r4, r30, 0
/* 802C30F0 002BED50  88 C3 00 26 */	lbz r6, 0x26(r3)
/* 802C30F4 002BED54  57 85 06 3E */	clrlwi r5, r28, 0x18
/* 802C30F8 002BED58  38 60 05 04 */	li r3, 0x504
/* 802C30FC 002BED5C  4B FF 9E 45 */	bl LogMsg_2
lbl_802C3100:
/* 802C3100 002BED60  7F 83 E3 78 */	mr r3, r28
/* 802C3104 002BED64  48 00 00 A0 */	b lbl_802C31A4
lbl_802C3108:
/* 802C3108 002BED68  88 0D AE F8 */	lbz r0, lbl_806401B8-_SDA_BASE_(r13)
/* 802C310C 002BED6C  28 00 00 05 */	cmplwi r0, 5
/* 802C3110 002BED70  41 80 00 24 */	blt lbl_802C3134
/* 802C3114 002BED74  7D 1F EA 14 */	add r8, r31, r29
/* 802C3118 002BED78  38 9E 00 24 */	addi r4, r30, 0x24
/* 802C311C 002BED7C  88 A8 00 28 */	lbz r5, 0x28(r8)
/* 802C3120 002BED80  57 86 06 3E */	clrlwi r6, r28, 0x18
/* 802C3124 002BED84  88 E8 00 26 */	lbz r7, 0x26(r8)
/* 802C3128 002BED88  38 60 05 04 */	li r3, 0x504
/* 802C312C 002BED8C  89 08 00 2C */	lbz r8, 0x2c(r8)
/* 802C3130 002BED90  4B FF 9E 41 */	bl LogMsg_4
lbl_802C3134:
/* 802C3134 002BED94  3B 9C 00 01 */	addi r28, r28, 1
/* 802C3138 002BED98  28 1C 00 10 */	cmplwi r28, 0x10
/* 802C313C 002BED9C  41 80 FF 70 */	blt lbl_802C30AC
/* 802C3140 002BEDA0  3C 80 80 57 */	lis r4, lbl_80568948@ha
/* 802C3144 002BEDA4  38 00 00 10 */	li r0, 0x10
/* 802C3148 002BEDA8  38 84 89 48 */	addi r4, r4, lbl_80568948@l
/* 802C314C 002BEDAC  3B A0 00 00 */	li r29, 0
/* 802C3150 002BEDB0  7C 09 03 A6 */	mtctr r0
lbl_802C3154:
/* 802C3154 002BEDB4  57 A0 2C F4 */	rlwinm r0, r29, 5, 0x13, 0x1a
/* 802C3158 002BEDB8  7C 64 02 14 */	add r3, r4, r0
/* 802C315C 002BEDBC  88 03 00 28 */	lbz r0, 0x28(r3)
/* 802C3160 002BEDC0  2C 00 00 00 */	cmpwi r0, 0
/* 802C3164 002BEDC4  40 82 00 14 */	bne lbl_802C3178
/* 802C3168 002BEDC8  7F 64 DB 78 */	mr r4, r27
/* 802C316C 002BEDCC  38 63 00 18 */	addi r3, r3, 0x18
/* 802C3170 002BEDD0  4B FF A3 F1 */	bl bdcpy
/* 802C3174 002BEDD4  48 00 00 0C */	b lbl_802C3180
lbl_802C3178:
/* 802C3178 002BEDD8  3B BD 00 01 */	addi r29, r29, 1
/* 802C317C 002BEDDC  42 00 FF D8 */	bdnz lbl_802C3154
lbl_802C3180:
/* 802C3180 002BEDE0  88 0D AE F8 */	lbz r0, lbl_806401B8-_SDA_BASE_(r13)
/* 802C3184 002BEDE4  28 00 00 05 */	cmplwi r0, 5
/* 802C3188 002BEDE8  41 80 00 18 */	blt lbl_802C31A0
/* 802C318C 002BEDEC  38 9E 00 58 */	addi r4, r30, 0x58
/* 802C3190 002BEDF0  57 A5 06 3E */	clrlwi r5, r29, 0x18
/* 802C3194 002BEDF4  38 60 05 04 */	li r3, 0x504
/* 802C3198 002BEDF8  38 C0 00 10 */	li r6, 0x10
/* 802C319C 002BEDFC  4B FF 9D A5 */	bl LogMsg_2
lbl_802C31A0:
/* 802C31A0 002BEE00  7F A3 EB 78 */	mr r3, r29
lbl_802C31A4:
/* 802C31A4 002BEE04  39 61 00 20 */	addi r11, r1, 0x20
/* 802C31A8 002BEE08  4B F0 3F CD */	bl _restgpr_27
/* 802C31AC 002BEE0C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802C31B0 002BEE10  7C 08 03 A6 */	mtlr r0
/* 802C31B4 002BEE14  38 21 00 20 */	addi r1, r1, 0x20
/* 802C31B8 002BEE18  4E 80 00 20 */	blr

.global bta_hh_clean_up_kdev
bta_hh_clean_up_kdev:
/* 802C31BC 002BEE1C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802C31C0 002BEE20  7C 08 02 A6 */	mflr r0
/* 802C31C4 002BEE24  90 01 00 14 */	stw r0, 0x14(r1)
/* 802C31C8 002BEE28  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802C31CC 002BEE2C  93 C1 00 08 */	stw r30, 8(r1)
/* 802C31D0 002BEE30  7C 7E 1B 78 */	mr r30, r3
/* 802C31D4 002BEE34  88 A3 00 16 */	lbz r5, 0x16(r3)
/* 802C31D8 002BEE38  28 05 00 FF */	cmplwi r5, 0xff
/* 802C31DC 002BEE3C  41 82 00 18 */	beq lbl_802C31F4
/* 802C31E0 002BEE40  3C 80 80 57 */	lis r4, lbl_80568948@ha
/* 802C31E4 002BEE44  38 00 00 10 */	li r0, 0x10
/* 802C31E8 002BEE48  38 84 89 48 */	addi r4, r4, lbl_80568948@l
/* 802C31EC 002BEE4C  7C 84 2A 14 */	add r4, r4, r5
/* 802C31F0 002BEE50  98 04 02 14 */	stb r0, 0x214(r4)
lbl_802C31F4:
/* 802C31F4 002BEE54  8B E3 00 12 */	lbz r31, 0x12(r3)
/* 802C31F8 002BEE58  38 63 00 04 */	addi r3, r3, 4
/* 802C31FC 002BEE5C  4B FF AA B1 */	bl utl_freebuf
/* 802C3200 002BEE60  7F C3 F3 78 */	mr r3, r30
/* 802C3204 002BEE64  38 80 00 00 */	li r4, 0
/* 802C3208 002BEE68  38 A0 00 20 */	li r5, 0x20
/* 802C320C 002BEE6C  4B D4 0E F9 */	bl memset
/* 802C3210 002BEE70  38 60 00 01 */	li r3, 1
/* 802C3214 002BEE74  38 00 00 FF */	li r0, 0xff
/* 802C3218 002BEE78  9B FE 00 12 */	stb r31, 0x12(r30)
/* 802C321C 002BEE7C  98 7E 00 1C */	stb r3, 0x1c(r30)
/* 802C3220 002BEE80  98 1E 00 16 */	stb r0, 0x16(r30)
/* 802C3224 002BEE84  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802C3228 002BEE88  83 C1 00 08 */	lwz r30, 8(r1)
/* 802C322C 002BEE8C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802C3230 002BEE90  7C 08 03 A6 */	mtlr r0
/* 802C3234 002BEE94  38 21 00 10 */	addi r1, r1, 0x10
/* 802C3238 002BEE98  4E 80 00 20 */	blr

.global bta_hh_add_device_to_list
bta_hh_add_device_to_list:
/* 802C323C 002BEE9C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802C3240 002BEEA0  7C 08 02 A6 */	mflr r0
/* 802C3244 002BEEA4  90 01 00 24 */	stw r0, 0x24(r1)
/* 802C3248 002BEEA8  39 61 00 20 */	addi r11, r1, 0x20
/* 802C324C 002BEEAC  4B F0 3E D9 */	bl _savegpr_26
/* 802C3250 002BEEB0  88 0D AE F8 */	lbz r0, lbl_806401B8-_SDA_BASE_(r13)
/* 802C3254 002BEEB4  7C 7A 1B 78 */	mr r26, r3
/* 802C3258 002BEEB8  7C 9B 23 78 */	mr r27, r4
/* 802C325C 002BEEBC  7C BC 2B 78 */	mr r28, r5
/* 802C3260 002BEEC0  28 00 00 05 */	cmplwi r0, 5
/* 802C3264 002BEEC4  7C DD 33 78 */	mr r29, r6
/* 802C3268 002BEEC8  7C FE 3B 78 */	mr r30, r7
/* 802C326C 002BEECC  7D 1F 43 78 */	mr r31, r8
/* 802C3270 002BEED0  41 80 00 18 */	blt lbl_802C3288
/* 802C3274 002BEED4  3C 80 80 44 */	lis r4, lbl_80440A84@ha
/* 802C3278 002BEED8  7F C5 F3 78 */	mr r5, r30
/* 802C327C 002BEEDC  38 84 0A 84 */	addi r4, r4, lbl_80440A84@l
/* 802C3280 002BEEE0  38 60 05 04 */	li r3, 0x504
/* 802C3284 002BEEE4  4B FF 9C A5 */	bl LogMsg_1
lbl_802C3288:
/* 802C3288 002BEEE8  38 00 00 01 */	li r0, 1
/* 802C328C 002BEEEC  2C 1D 00 00 */	cmpwi r29, 0
/* 802C3290 002BEEF0  9B 7A 00 16 */	stb r27, 0x16(r26)
/* 802C3294 002BEEF4  98 1A 00 18 */	stb r0, 0x18(r26)
/* 802C3298 002BEEF8  B3 9A 00 0E */	sth r28, 0xe(r26)
/* 802C329C 002BEEFC  9B DA 00 13 */	stb r30, 0x13(r26)
/* 802C32A0 002BEF00  9B FA 00 15 */	stb r31, 0x15(r26)
/* 802C32A4 002BEF04  41 82 00 3C */	beq lbl_802C32E0
/* 802C32A8 002BEF08  38 7A 00 04 */	addi r3, r26, 4
/* 802C32AC 002BEF0C  4B FF AA 01 */	bl utl_freebuf
/* 802C32B0 002BEF10  A0 7D 00 00 */	lhz r3, 0(r29)
/* 802C32B4 002BEF14  2C 03 00 00 */	cmpwi r3, 0
/* 802C32B8 002BEF18  41 82 00 28 */	beq lbl_802C32E0
/* 802C32BC 002BEF1C  4B FF 67 F1 */	bl GKI_getbuf
/* 802C32C0 002BEF20  2C 03 00 00 */	cmpwi r3, 0
/* 802C32C4 002BEF24  90 7A 00 04 */	stw r3, 4(r26)
/* 802C32C8 002BEF28  41 82 00 18 */	beq lbl_802C32E0
/* 802C32CC 002BEF2C  A0 1D 00 00 */	lhz r0, 0(r29)
/* 802C32D0 002BEF30  B0 1A 00 00 */	sth r0, 0(r26)
/* 802C32D4 002BEF34  80 9D 00 04 */	lwz r4, 4(r29)
/* 802C32D8 002BEF38  A0 BD 00 00 */	lhz r5, 0(r29)
/* 802C32DC 002BEF3C  4B D4 0D 25 */	bl memcpy
lbl_802C32E0:
/* 802C32E0 002BEF40  39 61 00 20 */	addi r11, r1, 0x20
/* 802C32E4 002BEF44  4B F0 3E 8D */	bl _restgpr_26
/* 802C32E8 002BEF48  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802C32EC 002BEF4C  7C 08 03 A6 */	mtlr r0
/* 802C32F0 002BEF50  38 21 00 20 */	addi r1, r1, 0x20
/* 802C32F4 002BEF54  4E 80 00 20 */	blr

.global bta_hh_tod_spt
bta_hh_tod_spt:
/* 802C32F8 002BEF58  80 ED 8A 08 */	lwz r7, lbl_8063DCC8-_SDA_BASE_(r13)
/* 802C32FC 002BEF5C  54 89 F6 BE */	rlwinm r9, r4, 0x1e, 0x1a, 0x1f
/* 802C3300 002BEF60  39 00 00 00 */	li r8, 0
/* 802C3304 002BEF64  88 A7 00 00 */	lbz r5, 0(r7)
/* 802C3308 002BEF68  48 00 00 30 */	b lbl_802C3338
lbl_802C330C:
/* 802C330C 002BEF6C  80 87 00 04 */	lwz r4, 4(r7)
/* 802C3310 002BEF70  55 06 0D FC */	rlwinm r6, r8, 1, 0x17, 0x1e
/* 802C3314 002BEF74  7C 04 30 AE */	lbzx r0, r4, r6
/* 802C3318 002BEF78  7C 09 00 40 */	cmplw r9, r0
/* 802C331C 002BEF7C  40 82 00 18 */	bne lbl_802C3334
/* 802C3320 002BEF80  7C 84 32 14 */	add r4, r4, r6
/* 802C3324 002BEF84  88 04 00 01 */	lbz r0, 1(r4)
/* 802C3328 002BEF88  98 03 00 15 */	stb r0, 0x15(r3)
/* 802C332C 002BEF8C  38 60 00 01 */	li r3, 1
/* 802C3330 002BEF90  4E 80 00 20 */	blr
lbl_802C3334:
/* 802C3334 002BEF94  39 08 00 01 */	addi r8, r8, 1
lbl_802C3338:
/* 802C3338 002BEF98  55 00 06 3E */	clrlwi r0, r8, 0x18
/* 802C333C 002BEF9C  7C 00 28 40 */	cmplw r0, r5
/* 802C3340 002BEFA0  41 80 FF CC */	blt lbl_802C330C
/* 802C3344 002BEFA4  38 60 00 00 */	li r3, 0
/* 802C3348 002BEFA8  4E 80 00 20 */	blr

.global bta_hh_trace_dev_db
bta_hh_trace_dev_db:
/* 802C334C 002BEFAC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802C3350 002BEFB0  7C 08 02 A6 */	mflr r0
/* 802C3354 002BEFB4  90 01 00 24 */	stw r0, 0x24(r1)
/* 802C3358 002BEFB8  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802C335C 002BEFBC  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802C3360 002BEFC0  3F C0 80 44 */	lis r30, lbl_80440A00@ha
/* 802C3364 002BEFC4  3B DE 0A 00 */	addi r30, r30, lbl_80440A00@l
/* 802C3368 002BEFC8  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802C336C 002BEFCC  88 0D AE F8 */	lbz r0, lbl_806401B8-_SDA_BASE_(r13)
/* 802C3370 002BEFD0  28 00 00 05 */	cmplwi r0, 5
/* 802C3374 002BEFD4  41 80 00 10 */	blt lbl_802C3384
/* 802C3378 002BEFD8  38 9E 01 E4 */	addi r4, r30, 0x1e4
/* 802C337C 002BEFDC  38 60 05 04 */	li r3, 0x504
/* 802C3380 002BEFE0  4B FF 9B 91 */	bl LogMsg_0
lbl_802C3384:
/* 802C3384 002BEFE4  3C 60 80 57 */	lis r3, lbl_80568948@ha
/* 802C3388 002BEFE8  3B A0 00 00 */	li r29, 0
/* 802C338C 002BEFEC  3B E3 89 48 */	addi r31, r3, lbl_80568948@l
lbl_802C3390:
/* 802C3390 002BEFF0  88 0D AE F8 */	lbz r0, lbl_806401B8-_SDA_BASE_(r13)
/* 802C3394 002BEFF4  28 00 00 05 */	cmplwi r0, 5
/* 802C3398 002BEFF8  41 80 00 24 */	blt lbl_802C33BC
/* 802C339C 002BEFFC  57 A0 2C F4 */	rlwinm r0, r29, 5, 0x13, 0x1a
/* 802C33A0 002BF000  38 9E 02 20 */	addi r4, r30, 0x220
/* 802C33A4 002BF004  7C FF 02 14 */	add r7, r31, r0
/* 802C33A8 002BF008  57 A5 06 3E */	clrlwi r5, r29, 0x18
/* 802C33AC 002BF00C  88 C7 00 28 */	lbz r6, 0x28(r7)
/* 802C33B0 002BF010  38 60 05 04 */	li r3, 0x504
/* 802C33B4 002BF014  88 E7 00 26 */	lbz r7, 0x26(r7)
/* 802C33B8 002BF018  4B FF 9B A1 */	bl LogMsg_3
lbl_802C33BC:
/* 802C33BC 002BF01C  88 0D AE F8 */	lbz r0, lbl_806401B8-_SDA_BASE_(r13)
/* 802C33C0 002BF020  28 00 00 05 */	cmplwi r0, 5
/* 802C33C4 002BF024  41 80 00 28 */	blt lbl_802C33EC
/* 802C33C8 002BF028  57 A0 2C F4 */	rlwinm r0, r29, 5, 0x13, 0x1a
/* 802C33CC 002BF02C  38 9E 02 44 */	addi r4, r30, 0x244
/* 802C33D0 002BF030  7D 1F 02 14 */	add r8, r31, r0
/* 802C33D4 002BF034  38 60 05 04 */	li r3, 0x504
/* 802C33D8 002BF038  A0 A8 00 1E */	lhz r5, 0x1e(r8)
/* 802C33DC 002BF03C  88 C8 00 2C */	lbz r6, 0x2c(r8)
/* 802C33E0 002BF040  88 E8 00 23 */	lbz r7, 0x23(r8)
/* 802C33E4 002BF044  89 08 00 22 */	lbz r8, 0x22(r8)
/* 802C33E8 002BF048  4B FF 9B 89 */	bl LogMsg_4
lbl_802C33EC:
/* 802C33EC 002BF04C  3B BD 00 01 */	addi r29, r29, 1
/* 802C33F0 002BF050  28 1D 00 10 */	cmplwi r29, 0x10
/* 802C33F4 002BF054  41 80 FF 9C */	blt lbl_802C3390
/* 802C33F8 002BF058  88 0D AE F8 */	lbz r0, lbl_806401B8-_SDA_BASE_(r13)
/* 802C33FC 002BF05C  28 00 00 05 */	cmplwi r0, 5
/* 802C3400 002BF060  41 80 00 10 */	blt lbl_802C3410
/* 802C3404 002BF064  38 9E 02 80 */	addi r4, r30, 0x280
/* 802C3408 002BF068  38 60 05 04 */	li r3, 0x504
/* 802C340C 002BF06C  4B FF 9B 05 */	bl LogMsg_0
lbl_802C3410:
/* 802C3410 002BF070  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802C3414 002BF074  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802C3418 002BF078  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802C341C 002BF07C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802C3420 002BF080  7C 08 03 A6 */	mtlr r0
/* 802C3424 002BF084  38 21 00 20 */	addi r1, r1, 0x20
/* 802C3428 002BF088  4E 80 00 20 */	blr