summaryrefslogtreecommitdiff
path: root/asm/SDK/BTE/port_utils.s
blob: f108768f8a3e0697571253d387f05255872dd109 (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
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
.include "macros.inc"

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

.global port_select_mtu
port_select_mtu:
/* 802DCDA4 002D8A04  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802DCDA8 002D8A08  7C 08 02 A6 */	mflr r0
/* 802DCDAC 002D8A0C  90 01 00 14 */	stw r0, 0x14(r1)
/* 802DCDB0 002D8A10  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802DCDB4 002D8A14  3F E0 80 44 */	lis r31, lbl_80444590@ha
/* 802DCDB8 002D8A18  3B FF 45 90 */	addi r31, r31, lbl_80444590@l
/* 802DCDBC 002D8A1C  93 C1 00 08 */	stw r30, 8(r1)
/* 802DCDC0 002D8A20  7C 7E 1B 78 */	mr r30, r3
/* 802DCDC4 002D8A24  A0 A3 00 12 */	lhz r5, 0x12(r3)
/* 802DCDC8 002D8A28  2C 05 00 00 */	cmpwi r5, 0
/* 802DCDCC 002D8A2C  40 82 00 C0 */	bne lbl_802DCE8C
/* 802DCDD0 002D8A30  38 63 00 06 */	addi r3, r3, 6
/* 802DCDD4 002D8A34  4B FE 79 59 */	bl btm_get_max_packet_size
/* 802DCDD8 002D8A38  54 65 04 3F */	clrlwi. r5, r3, 0x10
/* 802DCDDC 002D8A3C  40 82 00 34 */	bne lbl_802DCE10
/* 802DCDE0 002D8A40  3C 60 80 57 */	lis r3, lbl_8056C428@ha
/* 802DCDE4 002D8A44  38 63 C4 28 */	addi r3, r3, lbl_8056C428@l
/* 802DCDE8 002D8A48  88 03 04 14 */	lbz r0, 0x414(r3)
/* 802DCDEC 002D8A4C  28 00 00 02 */	cmplwi r0, 2
/* 802DCDF0 002D8A50  41 80 00 14 */	blt lbl_802DCE04
/* 802DCDF4 002D8A54  3C 60 00 09 */	lis r3, 0x00090001@ha
/* 802DCDF8 002D8A58  38 9F 00 00 */	addi r4, r31, 0
/* 802DCDFC 002D8A5C  38 63 00 01 */	addi r3, r3, 0x00090001@l
/* 802DCE00 002D8A60  4B FE 01 11 */	bl LogMsg_0
lbl_802DCE04:
/* 802DCE04 002D8A64  38 00 00 7F */	li r0, 0x7f
/* 802DCE08 002D8A68  B0 1E 00 12 */	sth r0, 0x12(r30)
/* 802DCE0C 002D8A6C  48 00 00 A4 */	b lbl_802DCEB0
lbl_802DCE10:
/* 802DCE10 002D8A70  28 05 06 9F */	cmplwi r5, 0x69f
/* 802DCE14 002D8A74  41 81 00 44 */	bgt lbl_802DCE58
/* 802DCE18 002D8A78  38 00 06 9F */	li r0, 0x69f
/* 802DCE1C 002D8A7C  3C 80 80 57 */	lis r4, lbl_8056C428@ha
/* 802DCE20 002D8A80  7C 00 2B D6 */	divw r0, r0, r5
/* 802DCE24 002D8A84  38 84 C4 28 */	addi r4, r4, lbl_8056C428@l
/* 802DCE28 002D8A88  7C 60 19 D6 */	mullw r3, r0, r3
/* 802DCE2C 002D8A8C  38 A3 FF F6 */	addi r5, r3, -10
/* 802DCE30 002D8A90  B0 BE 00 12 */	sth r5, 0x12(r30)
/* 802DCE34 002D8A94  88 04 04 14 */	lbz r0, 0x414(r4)
/* 802DCE38 002D8A98  28 00 00 05 */	cmplwi r0, 5
/* 802DCE3C 002D8A9C  41 80 00 74 */	blt lbl_802DCEB0
/* 802DCE40 002D8AA0  3C 60 00 09 */	lis r3, 0x00090004@ha
/* 802DCE44 002D8AA4  38 9F 00 20 */	addi r4, r31, 0x20
/* 802DCE48 002D8AA8  38 63 00 04 */	addi r3, r3, 0x00090004@l
/* 802DCE4C 002D8AAC  54 A5 04 3E */	clrlwi r5, r5, 0x10
/* 802DCE50 002D8AB0  4B FE 00 D9 */	bl LogMsg_1
/* 802DCE54 002D8AB4  48 00 00 5C */	b lbl_802DCEB0
lbl_802DCE58:
/* 802DCE58 002D8AB8  38 00 06 95 */	li r0, 0x695
/* 802DCE5C 002D8ABC  3C 60 80 57 */	lis r3, lbl_8056C428@ha
/* 802DCE60 002D8AC0  B0 1E 00 12 */	sth r0, 0x12(r30)
/* 802DCE64 002D8AC4  38 63 C4 28 */	addi r3, r3, lbl_8056C428@l
/* 802DCE68 002D8AC8  88 03 04 14 */	lbz r0, 0x414(r3)
/* 802DCE6C 002D8ACC  28 00 00 05 */	cmplwi r0, 5
/* 802DCE70 002D8AD0  41 80 00 40 */	blt lbl_802DCEB0
/* 802DCE74 002D8AD4  3C 60 00 09 */	lis r3, 0x00090004@ha
/* 802DCE78 002D8AD8  38 9F 00 58 */	addi r4, r31, 0x58
/* 802DCE7C 002D8ADC  38 63 00 04 */	addi r3, r3, 0x00090004@l
/* 802DCE80 002D8AE0  38 A0 06 95 */	li r5, 0x695
/* 802DCE84 002D8AE4  4B FE 00 A5 */	bl LogMsg_1
/* 802DCE88 002D8AE8  48 00 00 28 */	b lbl_802DCEB0
lbl_802DCE8C:
/* 802DCE8C 002D8AEC  3C 60 80 57 */	lis r3, lbl_8056C428@ha
/* 802DCE90 002D8AF0  38 63 C4 28 */	addi r3, r3, lbl_8056C428@l
/* 802DCE94 002D8AF4  88 03 04 14 */	lbz r0, 0x414(r3)
/* 802DCE98 002D8AF8  28 00 00 05 */	cmplwi r0, 5
/* 802DCE9C 002D8AFC  41 80 00 14 */	blt lbl_802DCEB0
/* 802DCEA0 002D8B00  3C 60 00 09 */	lis r3, 0x00090004@ha
/* 802DCEA4 002D8B04  38 9F 00 90 */	addi r4, r31, 0x90
/* 802DCEA8 002D8B08  38 63 00 04 */	addi r3, r3, 0x00090004@l
/* 802DCEAC 002D8B0C  4B FE 00 7D */	bl LogMsg_1
lbl_802DCEB0:
/* 802DCEB0 002D8B10  A0 FE 00 12 */	lhz r7, 0x12(r30)
/* 802DCEB4 002D8B14  38 60 1F 40 */	li r3, 0x1f40
/* 802DCEB8 002D8B18  38 80 13 88 */	li r4, 0x1388
/* 802DCEBC 002D8B1C  38 00 2E E0 */	li r0, 0x2ee0
/* 802DCEC0 002D8B20  7C A3 3B D6 */	divw r5, r3, r7
/* 802DCEC4 002D8B24  3C 60 80 57 */	lis r3, lbl_8056C428@ha
/* 802DCEC8 002D8B28  38 63 C4 28 */	addi r3, r3, lbl_8056C428@l
/* 802DCECC 002D8B2C  7C C4 3B D6 */	divw r6, r4, r7
/* 802DCED0 002D8B30  B0 BE 00 9C */	sth r5, 0x9c(r30)
/* 802DCED4 002D8B34  7C E0 3B D6 */	divw r7, r0, r7
/* 802DCED8 002D8B38  B0 DE 00 9E */	sth r6, 0x9e(r30)
/* 802DCEDC 002D8B3C  B0 FE 00 A0 */	sth r7, 0xa0(r30)
/* 802DCEE0 002D8B40  88 03 04 14 */	lbz r0, 0x414(r3)
/* 802DCEE4 002D8B44  28 00 00 05 */	cmplwi r0, 5
/* 802DCEE8 002D8B48  41 80 00 20 */	blt lbl_802DCF08
/* 802DCEEC 002D8B4C  3C 60 00 09 */	lis r3, 0x00090004@ha
/* 802DCEF0 002D8B50  38 9F 00 B8 */	addi r4, r31, 0xb8
/* 802DCEF4 002D8B54  38 63 00 04 */	addi r3, r3, 0x00090004@l
/* 802DCEF8 002D8B58  54 A5 04 3E */	clrlwi r5, r5, 0x10
/* 802DCEFC 002D8B5C  54 C6 04 3E */	clrlwi r6, r6, 0x10
/* 802DCF00 002D8B60  54 E7 04 3E */	clrlwi r7, r7, 0x10
/* 802DCF04 002D8B64  4B FE 00 55 */	bl LogMsg_3
lbl_802DCF08:
/* 802DCF08 002D8B68  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802DCF0C 002D8B6C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802DCF10 002D8B70  83 C1 00 08 */	lwz r30, 8(r1)
/* 802DCF14 002D8B74  7C 08 03 A6 */	mtlr r0
/* 802DCF18 002D8B78  38 21 00 10 */	addi r1, r1, 0x10
/* 802DCF1C 002D8B7C  4E 80 00 20 */	blr

.global port_release_port
port_release_port:
/* 802DCF20 002D8B80  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802DCF24 002D8B84  7C 08 02 A6 */	mflr r0
/* 802DCF28 002D8B88  90 01 00 14 */	stw r0, 0x14(r1)
/* 802DCF2C 002D8B8C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802DCF30 002D8B90  7C 7F 1B 78 */	mr r31, r3
/* 802DCF34 002D8B94  48 00 00 08 */	b lbl_802DCF3C
lbl_802DCF38:
/* 802DCF38 002D8B98  4B FD CD FD */	bl GKI_freebuf
lbl_802DCF3C:
/* 802DCF3C 002D8B9C  38 7F 00 30 */	addi r3, r31, 0x30
/* 802DCF40 002D8BA0  4B FD D4 91 */	bl GKI_dequeue
/* 802DCF44 002D8BA4  2C 03 00 00 */	cmpwi r3, 0
/* 802DCF48 002D8BA8  40 82 FF F0 */	bne lbl_802DCF38
/* 802DCF4C 002D8BAC  38 00 00 00 */	li r0, 0
/* 802DCF50 002D8BB0  90 1F 00 40 */	stw r0, 0x40(r31)
/* 802DCF54 002D8BB4  48 00 00 08 */	b lbl_802DCF5C
lbl_802DCF58:
/* 802DCF58 002D8BB8  4B FD CD DD */	bl GKI_freebuf
lbl_802DCF5C:
/* 802DCF5C 002D8BBC  38 7F 00 18 */	addi r3, r31, 0x18
/* 802DCF60 002D8BC0  4B FD D4 71 */	bl GKI_dequeue
/* 802DCF64 002D8BC4  2C 03 00 00 */	cmpwi r3, 0
/* 802DCF68 002D8BC8  40 82 FF F0 */	bne lbl_802DCF58
/* 802DCF6C 002D8BCC  88 1F 00 68 */	lbz r0, 0x68(r31)
/* 802DCF70 002D8BD0  38 60 00 00 */	li r3, 0
/* 802DCF74 002D8BD4  90 7F 00 28 */	stw r3, 0x28(r31)
/* 802DCF78 002D8BD8  2C 00 00 00 */	cmpwi r0, 0
/* 802DCF7C 002D8BDC  98 7F 00 02 */	stb r3, 2(r31)
/* 802DCF80 002D8BE0  40 82 00 68 */	bne lbl_802DCFE8
/* 802DCF84 002D8BE4  3C 60 80 57 */	lis r3, lbl_8056C428@ha
/* 802DCF88 002D8BE8  38 63 C4 28 */	addi r3, r3, lbl_8056C428@l
/* 802DCF8C 002D8BEC  88 03 04 14 */	lbz r0, 0x414(r3)
/* 802DCF90 002D8BF0  28 00 00 05 */	cmplwi r0, 5
/* 802DCF94 002D8BF4  41 80 00 18 */	blt lbl_802DCFAC
/* 802DCF98 002D8BF8  3C 60 00 09 */	lis r3, 0x00090004@ha
/* 802DCF9C 002D8BFC  3C 80 80 44 */	lis r4, lbl_80444690@ha
/* 802DCFA0 002D8C00  38 63 00 04 */	addi r3, r3, 0x00090004@l
/* 802DCFA4 002D8C04  38 84 46 90 */	addi r4, r4, lbl_80444690@l
/* 802DCFA8 002D8C08  4B FD FF 69 */	bl LogMsg_0
lbl_802DCFAC:
/* 802DCFAC 002D8C0C  80 7F 00 6C */	lwz r3, 0x6c(r31)
/* 802DCFB0 002D8C10  2C 03 00 00 */	cmpwi r3, 0
/* 802DCFB4 002D8C14  41 82 00 1C */	beq lbl_802DCFD0
/* 802DCFB8 002D8C18  88 1F 00 0D */	lbz r0, 0xd(r31)
/* 802DCFBC 002D8C1C  38 80 00 00 */	li r4, 0
/* 802DCFC0 002D8C20  7C 63 02 14 */	add r3, r3, r0
/* 802DCFC4 002D8C24  98 83 00 24 */	stb r4, 0x24(r3)
/* 802DCFC8 002D8C28  80 7F 00 6C */	lwz r3, 0x6c(r31)
/* 802DCFCC 002D8C2C  48 00 4A 45 */	bl rfc_check_mcb_active
lbl_802DCFD0:
/* 802DCFD0 002D8C30  7F E3 FB 78 */	mr r3, r31
/* 802DCFD4 002D8C34  48 00 49 E5 */	bl rfc_port_timer_stop
/* 802DCFD8 002D8C38  7F E3 FB 78 */	mr r3, r31
/* 802DCFDC 002D8C3C  38 80 00 00 */	li r4, 0
/* 802DCFE0 002D8C40  38 A0 00 A4 */	li r5, 0xa4
/* 802DCFE4 002D8C44  4B D2 71 21 */	bl memset
lbl_802DCFE8:
/* 802DCFE8 002D8C48  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802DCFEC 002D8C4C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802DCFF0 002D8C50  7C 08 03 A6 */	mtlr r0
/* 802DCFF4 002D8C54  38 21 00 10 */	addi r1, r1, 0x10
/* 802DCFF8 002D8C58  4E 80 00 20 */	blr

.global port_find_mcb_dlci_port
port_find_mcb_dlci_port:
/* 802DCFFC 002D8C5C  2C 03 00 00 */	cmpwi r3, 0
/* 802DD000 002D8C60  40 82 00 0C */	bne lbl_802DD00C
/* 802DD004 002D8C64  38 60 00 00 */	li r3, 0
/* 802DD008 002D8C68  4E 80 00 20 */	blr
lbl_802DD00C:
/* 802DD00C 002D8C6C  28 04 00 3D */	cmplwi r4, 0x3d
/* 802DD010 002D8C70  40 81 00 0C */	ble lbl_802DD01C
/* 802DD014 002D8C74  38 60 00 00 */	li r3, 0
/* 802DD018 002D8C78  4E 80 00 20 */	blr
lbl_802DD01C:
/* 802DD01C 002D8C7C  7C 63 22 14 */	add r3, r3, r4
/* 802DD020 002D8C80  88 63 00 24 */	lbz r3, 0x24(r3)
/* 802DD024 002D8C84  2C 03 00 00 */	cmpwi r3, 0
/* 802DD028 002D8C88  40 82 00 0C */	bne lbl_802DD034
/* 802DD02C 002D8C8C  38 60 00 00 */	li r3, 0
/* 802DD030 002D8C90  4E 80 00 20 */	blr
lbl_802DD034:
/* 802DD034 002D8C94  38 03 FF FF */	addi r0, r3, -1
/* 802DD038 002D8C98  3C 60 80 57 */	lis r3, lbl_8056C428@ha
/* 802DD03C 002D8C9C  1C 00 00 A4 */	mulli r0, r0, 0xa4
/* 802DD040 002D8CA0  38 63 C4 28 */	addi r3, r3, lbl_8056C428@l
/* 802DD044 002D8CA4  7C 63 02 14 */	add r3, r3, r0
/* 802DD048 002D8CA8  38 63 00 68 */	addi r3, r3, 0x68
/* 802DD04C 002D8CAC  4E 80 00 20 */	blr

.global port_find_dlci_port
port_find_dlci_port:
/* 802DD050 002D8CB0  3C A0 80 57 */	lis r5, lbl_8056C428@ha
/* 802DD054 002D8CB4  38 00 00 05 */	li r0, 5
/* 802DD058 002D8CB8  54 66 07 FE */	clrlwi r6, r3, 0x1f
/* 802DD05C 002D8CBC  38 E3 FF FF */	addi r7, r3, -1
/* 802DD060 002D8CC0  38 A5 C4 28 */	addi r5, r5, lbl_8056C428@l
/* 802DD064 002D8CC4  39 00 00 00 */	li r8, 0
/* 802DD068 002D8CC8  7C 09 03 A6 */	mtctr r0
lbl_802DD06C:
/* 802DD06C 002D8CCC  55 00 04 3E */	clrlwi r0, r8, 0x10
/* 802DD070 002D8CD0  1C 00 00 A4 */	mulli r0, r0, 0xa4
/* 802DD074 002D8CD4  7C 85 02 14 */	add r4, r5, r0
/* 802DD078 002D8CD8  88 04 00 69 */	lbz r0, 0x69(r4)
/* 802DD07C 002D8CDC  39 24 00 68 */	addi r9, r4, 0x68
/* 802DD080 002D8CE0  2C 00 00 00 */	cmpwi r0, 0
/* 802DD084 002D8CE4  41 82 00 44 */	beq lbl_802DD0C8
/* 802DD088 002D8CE8  80 09 00 6C */	lwz r0, 0x6c(r9)
/* 802DD08C 002D8CEC  2C 00 00 00 */	cmpwi r0, 0
/* 802DD090 002D8CF0  40 82 00 38 */	bne lbl_802DD0C8
/* 802DD094 002D8CF4  88 89 00 0D */	lbz r4, 0xd(r9)
/* 802DD098 002D8CF8  7C 04 18 40 */	cmplw r4, r3
/* 802DD09C 002D8CFC  40 82 00 0C */	bne lbl_802DD0A8
/* 802DD0A0 002D8D00  7D 23 4B 78 */	mr r3, r9
/* 802DD0A4 002D8D04  4E 80 00 20 */	blr
lbl_802DD0A8:
/* 802DD0A8 002D8D08  2C 06 00 00 */	cmpwi r6, 0
/* 802DD0AC 002D8D0C  41 82 00 1C */	beq lbl_802DD0C8
/* 802DD0B0 002D8D10  7C 04 38 00 */	cmpw r4, r7
/* 802DD0B4 002D8D14  40 82 00 14 */	bne lbl_802DD0C8
/* 802DD0B8 002D8D18  38 04 00 01 */	addi r0, r4, 1
/* 802DD0BC 002D8D1C  7D 23 4B 78 */	mr r3, r9
/* 802DD0C0 002D8D20  98 09 00 0D */	stb r0, 0xd(r9)
/* 802DD0C4 002D8D24  4E 80 00 20 */	blr
lbl_802DD0C8:
/* 802DD0C8 002D8D28  39 08 00 01 */	addi r8, r8, 1
/* 802DD0CC 002D8D2C  42 00 FF A0 */	bdnz lbl_802DD06C
/* 802DD0D0 002D8D30  38 60 00 00 */	li r3, 0
/* 802DD0D4 002D8D34  4E 80 00 20 */	blr

.global port_flow_control_user
port_flow_control_user:
/* 802DD0D8 002D8D38  88 03 00 24 */	lbz r0, 0x24(r3)
/* 802DD0DC 002D8D3C  38 A0 00 00 */	li r5, 0
/* 802DD0E0 002D8D40  2C 00 00 00 */	cmpwi r0, 0
/* 802DD0E4 002D8D44  40 82 00 34 */	bne lbl_802DD118
/* 802DD0E8 002D8D48  80 83 00 6C */	lwz r4, 0x6c(r3)
/* 802DD0EC 002D8D4C  2C 04 00 00 */	cmpwi r4, 0
/* 802DD0F0 002D8D50  41 82 00 28 */	beq lbl_802DD118
/* 802DD0F4 002D8D54  88 04 00 71 */	lbz r0, 0x71(r4)
/* 802DD0F8 002D8D58  2C 00 00 00 */	cmpwi r0, 0
/* 802DD0FC 002D8D5C  41 82 00 1C */	beq lbl_802DD118
/* 802DD100 002D8D60  80 03 00 28 */	lwz r0, 0x28(r3)
/* 802DD104 002D8D64  28 00 1F 40 */	cmplwi r0, 0x1f40
/* 802DD108 002D8D68  41 81 00 10 */	bgt lbl_802DD118
/* 802DD10C 002D8D6C  A0 03 00 20 */	lhz r0, 0x20(r3)
/* 802DD110 002D8D70  28 00 00 10 */	cmplwi r0, 0x10
/* 802DD114 002D8D74  40 81 00 08 */	ble lbl_802DD11C
lbl_802DD118:
/* 802DD118 002D8D78  38 A0 00 01 */	li r5, 1
lbl_802DD11C:
/* 802DD11C 002D8D7C  88 03 00 25 */	lbz r0, 0x25(r3)
/* 802DD120 002D8D80  7C 00 28 40 */	cmplw r0, r5
/* 802DD124 002D8D84  40 82 00 0C */	bne lbl_802DD130
/* 802DD128 002D8D88  38 60 00 00 */	li r3, 0
/* 802DD12C 002D8D8C  4E 80 00 20 */	blr
lbl_802DD130:
/* 802DD130 002D8D90  2C 05 00 00 */	cmpwi r5, 0
/* 802DD134 002D8D94  98 A3 00 25 */	stb r5, 0x25(r3)
/* 802DD138 002D8D98  3C 60 00 03 */	lis r3, 3
/* 802DD13C 002D8D9C  4D 82 00 20 */	beqlr
/* 802DD140 002D8DA0  3C 60 00 01 */	lis r3, 1
/* 802DD144 002D8DA4  4E 80 00 20 */	blr

.global port_get_signal_changes
port_get_signal_changes:
/* 802DD148 002D8DA8  7C A4 22 78 */	xor r4, r5, r4
/* 802DD14C 002D8DAC  38 C0 00 00 */	li r6, 0
/* 802DD150 002D8DB0  54 80 07 FF */	clrlwi. r0, r4, 0x1f
/* 802DD154 002D8DB4  41 82 00 14 */	beq lbl_802DD168
/* 802DD158 002D8DB8  54 A0 07 FF */	clrlwi. r0, r5, 0x1f
/* 802DD15C 002D8DBC  60 C6 00 10 */	ori r6, r6, 0x10
/* 802DD160 002D8DC0  41 82 00 08 */	beq lbl_802DD168
/* 802DD164 002D8DC4  60 C6 08 00 */	ori r6, r6, 0x800
lbl_802DD168:
/* 802DD168 002D8DC8  54 80 07 BD */	rlwinm. r0, r4, 0, 0x1e, 0x1e
/* 802DD16C 002D8DCC  41 82 00 14 */	beq lbl_802DD180
/* 802DD170 002D8DD0  54 A0 07 BD */	rlwinm. r0, r5, 0, 0x1e, 0x1e
/* 802DD174 002D8DD4  60 C6 00 08 */	ori r6, r6, 8
/* 802DD178 002D8DD8  41 82 00 08 */	beq lbl_802DD180
/* 802DD17C 002D8DDC  60 C6 04 00 */	ori r6, r6, 0x400
lbl_802DD180:
/* 802DD180 002D8DE0  54 80 07 7B */	rlwinm. r0, r4, 0, 0x1d, 0x1d
/* 802DD184 002D8DE4  41 82 00 08 */	beq lbl_802DD18C
/* 802DD188 002D8DE8  60 C6 01 00 */	ori r6, r6, 0x100
lbl_802DD18C:
/* 802DD18C 002D8DEC  54 80 07 39 */	rlwinm. r0, r4, 0, 0x1c, 0x1c
/* 802DD190 002D8DF0  41 82 00 14 */	beq lbl_802DD1A4
/* 802DD194 002D8DF4  54 A0 07 39 */	rlwinm. r0, r5, 0, 0x1c, 0x1c
/* 802DD198 002D8DF8  60 C6 00 20 */	ori r6, r6, 0x20
/* 802DD19C 002D8DFC  41 82 00 08 */	beq lbl_802DD1A4
/* 802DD1A0 002D8E00  60 C6 10 00 */	ori r6, r6, 0x1000
lbl_802DD1A4:
/* 802DD1A4 002D8E04  80 03 00 88 */	lwz r0, 0x88(r3)
/* 802DD1A8 002D8E08  7C 03 30 38 */	and r3, r0, r6
/* 802DD1AC 002D8E0C  4E 80 00 20 */	blr

.global port_flow_control_peer
port_flow_control_peer:
/* 802DD1B0 002D8E10  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802DD1B4 002D8E14  7C 08 02 A6 */	mflr r0
/* 802DD1B8 002D8E18  90 01 00 14 */	stw r0, 0x14(r1)
/* 802DD1BC 002D8E1C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802DD1C0 002D8E20  7C 7F 1B 78 */	mr r31, r3
/* 802DD1C4 002D8E24  80 C3 00 6C */	lwz r6, 0x6c(r3)
/* 802DD1C8 002D8E28  2C 06 00 00 */	cmpwi r6, 0
/* 802DD1CC 002D8E2C  41 82 01 9C */	beq lbl_802DD368
/* 802DD1D0 002D8E30  88 06 00 72 */	lbz r0, 0x72(r6)
/* 802DD1D4 002D8E34  28 00 00 02 */	cmplwi r0, 2
/* 802DD1D8 002D8E38  40 82 00 B0 */	bne lbl_802DD288
/* 802DD1DC 002D8E3C  2C 04 00 00 */	cmpwi r4, 0
/* 802DD1E0 002D8E40  41 82 00 74 */	beq lbl_802DD254
/* 802DD1E4 002D8E44  A0 03 00 9A */	lhz r0, 0x9a(r3)
/* 802DD1E8 002D8E48  7C 05 00 40 */	cmplw r5, r0
/* 802DD1EC 002D8E4C  40 81 00 10 */	ble lbl_802DD1FC
/* 802DD1F0 002D8E50  38 00 00 00 */	li r0, 0
/* 802DD1F4 002D8E54  B0 03 00 9A */	sth r0, 0x9a(r3)
/* 802DD1F8 002D8E58  48 00 00 0C */	b lbl_802DD204
lbl_802DD1FC:
/* 802DD1FC 002D8E5C  7C 05 00 50 */	subf r0, r5, r0
/* 802DD200 002D8E60  B0 03 00 9A */	sth r0, 0x9a(r3)
lbl_802DD204:
/* 802DD204 002D8E64  A0 83 00 9A */	lhz r4, 0x9a(r3)
/* 802DD208 002D8E68  A0 03 00 9E */	lhz r0, 0x9e(r3)
/* 802DD20C 002D8E6C  7C 04 00 40 */	cmplw r4, r0
/* 802DD210 002D8E70  41 81 01 58 */	bgt lbl_802DD368
/* 802DD214 002D8E74  88 03 00 3D */	lbz r0, 0x3d(r3)
/* 802DD218 002D8E78  2C 00 00 00 */	cmpwi r0, 0
/* 802DD21C 002D8E7C  40 82 01 4C */	bne lbl_802DD368
/* 802DD220 002D8E80  A0 03 00 9C */	lhz r0, 0x9c(r3)
/* 802DD224 002D8E84  7C 00 20 40 */	cmplw r0, r4
/* 802DD228 002D8E88  40 81 01 40 */	ble lbl_802DD368
/* 802DD22C 002D8E8C  7C 04 00 50 */	subf r0, r4, r0
/* 802DD230 002D8E90  80 63 00 6C */	lwz r3, 0x6c(r3)
/* 802DD234 002D8E94  88 9F 00 0D */	lbz r4, 0xd(r31)
/* 802DD238 002D8E98  54 05 06 3E */	clrlwi r5, r0, 0x18
/* 802DD23C 002D8E9C  48 00 37 75 */	bl rfc_send_credit
/* 802DD240 002D8EA0  A0 7F 00 9C */	lhz r3, 0x9c(r31)
/* 802DD244 002D8EA4  38 00 00 00 */	li r0, 0
/* 802DD248 002D8EA8  98 1F 00 3C */	stb r0, 0x3c(r31)
/* 802DD24C 002D8EAC  B0 7F 00 9A */	sth r3, 0x9a(r31)
/* 802DD250 002D8EB0  48 00 01 18 */	b lbl_802DD368
lbl_802DD254:
/* 802DD254 002D8EB4  80 03 00 94 */	lwz r0, 0x94(r3)
/* 802DD258 002D8EB8  2C 00 00 00 */	cmpwi r0, 0
/* 802DD25C 002D8EBC  41 82 00 10 */	beq lbl_802DD26C
/* 802DD260 002D8EC0  38 00 00 01 */	li r0, 1
/* 802DD264 002D8EC4  98 03 00 3C */	stb r0, 0x3c(r3)
/* 802DD268 002D8EC8  48 00 01 00 */	b lbl_802DD368
lbl_802DD26C:
/* 802DD26C 002D8ECC  A0 83 00 38 */	lhz r4, 0x38(r3)
/* 802DD270 002D8ED0  A0 03 00 9C */	lhz r0, 0x9c(r3)
/* 802DD274 002D8ED4  7C 04 00 40 */	cmplw r4, r0
/* 802DD278 002D8ED8  41 80 00 F0 */	blt lbl_802DD368
/* 802DD27C 002D8EDC  38 00 00 01 */	li r0, 1
/* 802DD280 002D8EE0  98 03 00 3C */	stb r0, 0x3c(r3)
/* 802DD284 002D8EE4  48 00 00 E4 */	b lbl_802DD368
lbl_802DD288:
/* 802DD288 002D8EE8  2C 04 00 00 */	cmpwi r4, 0
/* 802DD28C 002D8EEC  41 82 00 50 */	beq lbl_802DD2DC
/* 802DD290 002D8EF0  88 03 00 3C */	lbz r0, 0x3c(r3)
/* 802DD294 002D8EF4  2C 00 00 00 */	cmpwi r0, 0
/* 802DD298 002D8EF8  41 82 00 D0 */	beq lbl_802DD368
/* 802DD29C 002D8EFC  80 03 00 40 */	lwz r0, 0x40(r3)
/* 802DD2A0 002D8F00  28 00 13 88 */	cmplwi r0, 0x1388
/* 802DD2A4 002D8F04  40 80 00 C4 */	bge lbl_802DD368
/* 802DD2A8 002D8F08  A0 03 00 38 */	lhz r0, 0x38(r3)
/* 802DD2AC 002D8F0C  28 00 00 08 */	cmplwi r0, 8
/* 802DD2B0 002D8F10  40 80 00 B8 */	bge lbl_802DD368
/* 802DD2B4 002D8F14  88 03 00 3D */	lbz r0, 0x3d(r3)
/* 802DD2B8 002D8F18  38 80 00 00 */	li r4, 0
/* 802DD2BC 002D8F1C  98 83 00 3C */	stb r4, 0x3c(r3)
/* 802DD2C0 002D8F20  2C 00 00 00 */	cmpwi r0, 0
/* 802DD2C4 002D8F24  40 82 00 A4 */	bne lbl_802DD368
/* 802DD2C8 002D8F28  88 9F 00 0D */	lbz r4, 0xd(r31)
/* 802DD2CC 002D8F2C  7C C3 33 78 */	mr r3, r6
/* 802DD2D0 002D8F30  38 A0 00 01 */	li r5, 1
/* 802DD2D4 002D8F34  48 00 2B 4D */	bl RFCOMM_FlowReq
/* 802DD2D8 002D8F38  48 00 00 90 */	b lbl_802DD368
lbl_802DD2DC:
/* 802DD2DC 002D8F3C  80 03 00 94 */	lwz r0, 0x94(r3)
/* 802DD2E0 002D8F40  2C 00 00 00 */	cmpwi r0, 0
/* 802DD2E4 002D8F44  41 82 00 20 */	beq lbl_802DD304
/* 802DD2E8 002D8F48  38 00 00 01 */	li r0, 1
/* 802DD2EC 002D8F4C  88 9F 00 0D */	lbz r4, 0xd(r31)
/* 802DD2F0 002D8F50  98 03 00 3C */	stb r0, 0x3c(r3)
/* 802DD2F4 002D8F54  7C C3 33 78 */	mr r3, r6
/* 802DD2F8 002D8F58  38 A0 00 00 */	li r5, 0
/* 802DD2FC 002D8F5C  48 00 2B 25 */	bl RFCOMM_FlowReq
/* 802DD300 002D8F60  48 00 00 68 */	b lbl_802DD368
lbl_802DD304:
/* 802DD304 002D8F64  80 03 00 40 */	lwz r0, 0x40(r3)
/* 802DD308 002D8F68  28 00 1F 40 */	cmplwi r0, 0x1f40
/* 802DD30C 002D8F6C  41 81 00 10 */	bgt lbl_802DD31C
/* 802DD310 002D8F70  A0 03 00 38 */	lhz r0, 0x38(r3)
/* 802DD314 002D8F74  28 00 00 10 */	cmplwi r0, 0x10
/* 802DD318 002D8F78  40 81 00 50 */	ble lbl_802DD368
lbl_802DD31C:
/* 802DD31C 002D8F7C  88 03 00 3C */	lbz r0, 0x3c(r3)
/* 802DD320 002D8F80  2C 00 00 00 */	cmpwi r0, 0
/* 802DD324 002D8F84  40 82 00 44 */	bne lbl_802DD368
/* 802DD328 002D8F88  3C 60 80 57 */	lis r3, lbl_8056C428@ha
/* 802DD32C 002D8F8C  38 63 C4 28 */	addi r3, r3, lbl_8056C428@l
/* 802DD330 002D8F90  88 03 04 14 */	lbz r0, 0x414(r3)
/* 802DD334 002D8F94  28 00 00 04 */	cmplwi r0, 4
/* 802DD338 002D8F98  41 80 00 18 */	blt lbl_802DD350
/* 802DD33C 002D8F9C  3C 60 00 09 */	lis r3, 0x00090003@ha
/* 802DD340 002D8FA0  3C 80 80 44 */	lis r4, lbl_804446A8@ha
/* 802DD344 002D8FA4  38 63 00 03 */	addi r3, r3, 0x00090003@l
/* 802DD348 002D8FA8  38 84 46 A8 */	addi r4, r4, lbl_804446A8@l
/* 802DD34C 002D8FAC  4B FD FB C5 */	bl LogMsg_0
lbl_802DD350:
/* 802DD350 002D8FB0  38 00 00 01 */	li r0, 1
/* 802DD354 002D8FB4  80 7F 00 6C */	lwz r3, 0x6c(r31)
/* 802DD358 002D8FB8  98 1F 00 3C */	stb r0, 0x3c(r31)
/* 802DD35C 002D8FBC  38 A0 00 00 */	li r5, 0
/* 802DD360 002D8FC0  88 9F 00 0D */	lbz r4, 0xd(r31)
/* 802DD364 002D8FC4  48 00 2A BD */	bl RFCOMM_FlowReq
lbl_802DD368:
/* 802DD368 002D8FC8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802DD36C 002D8FCC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802DD370 002D8FD0  7C 08 03 A6 */	mtlr r0
/* 802DD374 002D8FD4  38 21 00 10 */	addi r1, r1, 0x10
/* 802DD378 002D8FD8  4E 80 00 20 */	blr