summaryrefslogtreecommitdiff
path: root/asm/nw4r/snd/detail/snd_StrmChannel.s
blob: 69e627dbf09b6172fc6bfcd2089f0787e70f21b1 (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
.include "macros.inc"

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

.global Setup__Q44nw4r3snd6detail14StrmBufferPoolFPvUli
Setup__Q44nw4r3snd6detail14StrmBufferPoolFPvUli:
/* 8037CAC4 00378724  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8037CAC8 00378728  7C 08 02 A6 */	mflr r0
/* 8037CACC 0037872C  90 01 00 24 */	stw r0, 0x24(r1)
/* 8037CAD0 00378730  39 61 00 20 */	addi r11, r1, 0x20
/* 8037CAD4 00378734  4B E4 A6 55 */	bl _savegpr_27
/* 8037CAD8 00378738  2C 06 00 00 */	cmpwi r6, 0
/* 8037CADC 0037873C  7C 7B 1B 78 */	mr r27, r3
/* 8037CAE0 00378740  7C 9C 23 78 */	mr r28, r4
/* 8037CAE4 00378744  7C BD 2B 78 */	mr r29, r5
/* 8037CAE8 00378748  7C DE 33 78 */	mr r30, r6
/* 8037CAEC 0037874C  41 82 00 40 */	beq lbl_8037CB2C
/* 8037CAF0 00378750  4B EF 1C 6D */	bl OSDisableInterrupts
/* 8037CAF4 00378754  7C 9D F3 96 */	divwu r4, r29, r30
/* 8037CAF8 00378758  38 00 00 00 */	li r0, 0
/* 8037CAFC 0037875C  7C 7F 1B 78 */	mr r31, r3
/* 8037CB00 00378760  93 9B 00 00 */	stw r28, 0(r27)
/* 8037CB04 00378764  38 7B 00 14 */	addi r3, r27, 0x14
/* 8037CB08 00378768  93 BB 00 04 */	stw r29, 4(r27)
/* 8037CB0C 0037876C  90 9B 00 08 */	stw r4, 8(r27)
/* 8037CB10 00378770  38 80 00 00 */	li r4, 0
/* 8037CB14 00378774  38 A0 00 04 */	li r5, 4
/* 8037CB18 00378778  93 DB 00 0C */	stw r30, 0xc(r27)
/* 8037CB1C 0037877C  90 1B 00 10 */	stw r0, 0x10(r27)
/* 8037CB20 00378780  4B C8 75 E5 */	bl memset
/* 8037CB24 00378784  7F E3 FB 78 */	mr r3, r31
/* 8037CB28 00378788  4B EF 1C 5D */	bl OSRestoreInterrupts
lbl_8037CB2C:
/* 8037CB2C 0037878C  39 61 00 20 */	addi r11, r1, 0x20
/* 8037CB30 00378790  4B E4 A6 45 */	bl _restgpr_27
/* 8037CB34 00378794  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8037CB38 00378798  7C 08 03 A6 */	mtlr r0
/* 8037CB3C 0037879C  38 21 00 20 */	addi r1, r1, 0x20
/* 8037CB40 003787A0  4E 80 00 20 */	blr

.global Shutdown__Q44nw4r3snd6detail14StrmBufferPoolFv
Shutdown__Q44nw4r3snd6detail14StrmBufferPoolFv:
/* 8037CB44 003787A4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8037CB48 003787A8  7C 08 02 A6 */	mflr r0
/* 8037CB4C 003787AC  90 01 00 14 */	stw r0, 0x14(r1)
/* 8037CB50 003787B0  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8037CB54 003787B4  7C 7F 1B 78 */	mr r31, r3
/* 8037CB58 003787B8  4B EF 1C 05 */	bl OSDisableInterrupts
/* 8037CB5C 003787BC  38 00 00 00 */	li r0, 0
/* 8037CB60 003787C0  90 1F 00 00 */	stw r0, 0(r31)
/* 8037CB64 003787C4  90 1F 00 04 */	stw r0, 4(r31)
/* 8037CB68 003787C8  90 1F 00 08 */	stw r0, 8(r31)
/* 8037CB6C 003787CC  90 1F 00 0C */	stw r0, 0xc(r31)
/* 8037CB70 003787D0  4B EF 1C 15 */	bl OSRestoreInterrupts
/* 8037CB74 003787D4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8037CB78 003787D8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8037CB7C 003787DC  7C 08 03 A6 */	mtlr r0
/* 8037CB80 003787E0  38 21 00 10 */	addi r1, r1, 0x10
/* 8037CB84 003787E4  4E 80 00 20 */	blr

.global Alloc__Q44nw4r3snd6detail14StrmBufferPoolFv
Alloc__Q44nw4r3snd6detail14StrmBufferPoolFv:
/* 8037CB88 003787E8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8037CB8C 003787EC  7C 08 02 A6 */	mflr r0
/* 8037CB90 003787F0  90 01 00 14 */	stw r0, 0x14(r1)
/* 8037CB94 003787F4  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8037CB98 003787F8  7C 7F 1B 78 */	mr r31, r3
/* 8037CB9C 003787FC  4B EF 1B C1 */	bl OSDisableInterrupts
/* 8037CBA0 00378800  80 9F 00 0C */	lwz r4, 0xc(r31)
/* 8037CBA4 00378804  80 1F 00 10 */	lwz r0, 0x10(r31)
/* 8037CBA8 00378808  7C 00 20 00 */	cmpw r0, r4
/* 8037CBAC 0037880C  41 80 00 10 */	blt lbl_8037CBBC
/* 8037CBB0 00378810  4B EF 1B D5 */	bl OSRestoreInterrupts
/* 8037CBB4 00378814  38 60 00 00 */	li r3, 0
/* 8037CBB8 00378818  48 00 00 A0 */	b lbl_8037CC58
lbl_8037CBBC:
/* 8037CBBC 0037881C  38 04 00 07 */	addi r0, r4, 7
/* 8037CBC0 00378820  39 00 00 00 */	li r8, 0
/* 8037CBC4 00378824  54 04 00 38 */	rlwinm r4, r0, 0, 0, 0x1c
/* 8037CBC8 00378828  7C 84 1E 70 */	srawi r4, r4, 3
/* 8037CBCC 0037882C  38 00 00 08 */	li r0, 8
/* 8037CBD0 00378830  7C E4 01 94 */	addze r7, r4
/* 8037CBD4 00378834  48 00 00 74 */	b lbl_8037CC48
lbl_8037CBD8:
/* 8037CBD8 00378838  7C DF 42 14 */	add r6, r31, r8
/* 8037CBDC 0037883C  88 A6 00 14 */	lbz r5, 0x14(r6)
/* 8037CBE0 00378840  28 05 00 FF */	cmplwi r5, 0xff
/* 8037CBE4 00378844  41 82 00 60 */	beq lbl_8037CC44
/* 8037CBE8 00378848  39 20 00 01 */	li r9, 1
/* 8037CBEC 0037884C  39 40 00 00 */	li r10, 0
/* 8037CBF0 00378850  7C 09 03 A6 */	mtctr r0
lbl_8037CBF4:
/* 8037CBF4 00378854  7C A4 48 39 */	and. r4, r5, r9
/* 8037CBF8 00378858  40 82 00 40 */	bne lbl_8037CC38
/* 8037CBFC 0037885C  88 86 00 14 */	lbz r4, 0x14(r6)
/* 8037CC00 00378860  55 00 18 38 */	slwi r0, r8, 3
/* 8037CC04 00378864  7C 0A 02 14 */	add r0, r10, r0
/* 8037CC08 00378868  7C 84 4B 78 */	or r4, r4, r9
/* 8037CC0C 0037886C  98 86 00 14 */	stb r4, 0x14(r6)
/* 8037CC10 00378870  80 9F 00 08 */	lwz r4, 8(r31)
/* 8037CC14 00378874  80 BF 00 10 */	lwz r5, 0x10(r31)
/* 8037CC18 00378878  7C 84 01 D6 */	mullw r4, r4, r0
/* 8037CC1C 0037887C  80 1F 00 00 */	lwz r0, 0(r31)
/* 8037CC20 00378880  38 A5 00 01 */	addi r5, r5, 1
/* 8037CC24 00378884  90 BF 00 10 */	stw r5, 0x10(r31)
/* 8037CC28 00378888  7F E4 02 14 */	add r31, r4, r0
/* 8037CC2C 0037888C  4B EF 1B 59 */	bl OSRestoreInterrupts
/* 8037CC30 00378890  7F E3 FB 78 */	mr r3, r31
/* 8037CC34 00378894  48 00 00 24 */	b lbl_8037CC58
lbl_8037CC38:
/* 8037CC38 00378898  55 29 0E 3C */	rlwinm r9, r9, 1, 0x18, 0x1e
/* 8037CC3C 0037889C  39 4A 00 01 */	addi r10, r10, 1
/* 8037CC40 003788A0  42 00 FF B4 */	bdnz lbl_8037CBF4
lbl_8037CC44:
/* 8037CC44 003788A4  39 08 00 01 */	addi r8, r8, 1
lbl_8037CC48:
/* 8037CC48 003788A8  7C 08 38 00 */	cmpw r8, r7
/* 8037CC4C 003788AC  41 80 FF 8C */	blt lbl_8037CBD8
/* 8037CC50 003788B0  4B EF 1B 35 */	bl OSRestoreInterrupts
/* 8037CC54 003788B4  38 60 00 00 */	li r3, 0
lbl_8037CC58:
/* 8037CC58 003788B8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8037CC5C 003788BC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8037CC60 003788C0  7C 08 03 A6 */	mtlr r0
/* 8037CC64 003788C4  38 21 00 10 */	addi r1, r1, 0x10
/* 8037CC68 003788C8  4E 80 00 20 */	blr

.global Free__Q44nw4r3snd6detail14StrmBufferPoolFPv
Free__Q44nw4r3snd6detail14StrmBufferPoolFPv:
/* 8037CC6C 003788CC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8037CC70 003788D0  7C 08 02 A6 */	mflr r0
/* 8037CC74 003788D4  90 01 00 14 */	stw r0, 0x14(r1)
/* 8037CC78 003788D8  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8037CC7C 003788DC  7C 9F 23 78 */	mr r31, r4
/* 8037CC80 003788E0  93 C1 00 08 */	stw r30, 8(r1)
/* 8037CC84 003788E4  7C 7E 1B 78 */	mr r30, r3
/* 8037CC88 003788E8  4B EF 1A D5 */	bl OSDisableInterrupts
/* 8037CC8C 003788EC  80 BE 00 00 */	lwz r5, 0(r30)
/* 8037CC90 003788F0  38 80 00 01 */	li r4, 1
/* 8037CC94 003788F4  80 1E 00 08 */	lwz r0, 8(r30)
/* 8037CC98 003788F8  7C A5 F8 50 */	subf r5, r5, r31
/* 8037CC9C 003788FC  7C A5 03 96 */	divwu r5, r5, r0
/* 8037CCA0 00378900  54 A0 E8 FE */	srwi r0, r5, 3
/* 8037CCA4 00378904  7C DE 02 14 */	add r6, r30, r0
/* 8037CCA8 00378908  54 A0 07 7E */	clrlwi r0, r5, 0x1d
/* 8037CCAC 0037890C  88 A6 00 14 */	lbz r5, 0x14(r6)
/* 8037CCB0 00378910  7C 80 00 30 */	slw r0, r4, r0
/* 8037CCB4 00378914  7C A0 00 78 */	andc r0, r5, r0
/* 8037CCB8 00378918  98 06 00 14 */	stb r0, 0x14(r6)
/* 8037CCBC 0037891C  80 9E 00 10 */	lwz r4, 0x10(r30)
/* 8037CCC0 00378920  38 04 FF FF */	addi r0, r4, -1
/* 8037CCC4 00378924  90 1E 00 10 */	stw r0, 0x10(r30)
/* 8037CCC8 00378928  4B EF 1A BD */	bl OSRestoreInterrupts
/* 8037CCCC 0037892C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8037CCD0 00378930  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8037CCD4 00378934  83 C1 00 08 */	lwz r30, 8(r1)
/* 8037CCD8 00378938  7C 08 03 A6 */	mtlr r0
/* 8037CCDC 0037893C  38 21 00 10 */	addi r1, r1, 0x10
/* 8037CCE0 00378940  4E 80 00 20 */	blr