summaryrefslogtreecommitdiff
path: root/asm/SDK/DVD/dvdqueue.s
blob: 5dac7d58097d20d57160a5276968f955d96a1b07 (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
.include "macros.inc"

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

.global __DVDClearWaitingQueue
__DVDClearWaitingQueue:
/* 8028C98C 002885EC  3C C0 80 52 */	lis r6, lbl_8051B550@ha
/* 8028C990 002885F0  38 C6 B5 50 */	addi r6, r6, lbl_8051B550@l
/* 8028C994 002885F4  38 A6 00 08 */	addi r5, r6, 8
/* 8028C998 002885F8  90 C6 00 00 */	stw r6, 0(r6)
/* 8028C99C 002885FC  38 86 00 10 */	addi r4, r6, 0x10
/* 8028C9A0 00288600  38 66 00 18 */	addi r3, r6, 0x18
/* 8028C9A4 00288604  90 C6 00 04 */	stw r6, 4(r6)
/* 8028C9A8 00288608  90 A6 00 08 */	stw r5, 8(r6)
/* 8028C9AC 0028860C  90 A6 00 0C */	stw r5, 0xc(r6)
/* 8028C9B0 00288610  90 86 00 10 */	stw r4, 0x10(r6)
/* 8028C9B4 00288614  90 86 00 14 */	stw r4, 0x14(r6)
/* 8028C9B8 00288618  90 66 00 18 */	stw r3, 0x18(r6)
/* 8028C9BC 0028861C  90 66 00 1C */	stw r3, 0x1c(r6)
/* 8028C9C0 00288620  4E 80 00 20 */	blr

.global __DVDPushWaitingQueue
__DVDPushWaitingQueue:
/* 8028C9C4 00288624  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8028C9C8 00288628  7C 08 02 A6 */	mflr r0
/* 8028C9CC 0028862C  90 01 00 14 */	stw r0, 0x14(r1)
/* 8028C9D0 00288630  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8028C9D4 00288634  7C 9F 23 78 */	mr r31, r4
/* 8028C9D8 00288638  93 C1 00 08 */	stw r30, 8(r1)
/* 8028C9DC 0028863C  7C 7E 1B 78 */	mr r30, r3
/* 8028C9E0 00288640  4B FE 1D 7D */	bl OSDisableInterrupts
/* 8028C9E4 00288644  3C 80 80 52 */	lis r4, lbl_8051B550@ha
/* 8028C9E8 00288648  57 C0 18 38 */	slwi r0, r30, 3
/* 8028C9EC 0028864C  38 84 B5 50 */	addi r4, r4, lbl_8051B550@l
/* 8028C9F0 00288650  7C A4 02 14 */	add r5, r4, r0
/* 8028C9F4 00288654  80 85 00 04 */	lwz r4, 4(r5)
/* 8028C9F8 00288658  93 E4 00 00 */	stw r31, 0(r4)
/* 8028C9FC 0028865C  80 05 00 04 */	lwz r0, 4(r5)
/* 8028CA00 00288660  90 1F 00 04 */	stw r0, 4(r31)
/* 8028CA04 00288664  90 BF 00 00 */	stw r5, 0(r31)
/* 8028CA08 00288668  93 E5 00 04 */	stw r31, 4(r5)
/* 8028CA0C 0028866C  4B FE 1D 79 */	bl OSRestoreInterrupts
/* 8028CA10 00288670  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8028CA14 00288674  38 60 00 01 */	li r3, 1
/* 8028CA18 00288678  83 C1 00 08 */	lwz r30, 8(r1)
/* 8028CA1C 0028867C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8028CA20 00288680  7C 08 03 A6 */	mtlr r0
/* 8028CA24 00288684  38 21 00 10 */	addi r1, r1, 0x10
/* 8028CA28 00288688  4E 80 00 20 */	blr

.global __DVDPopWaitingQueue
__DVDPopWaitingQueue:
/* 8028CA2C 0028868C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8028CA30 00288690  7C 08 02 A6 */	mflr r0
/* 8028CA34 00288694  90 01 00 14 */	stw r0, 0x14(r1)
/* 8028CA38 00288698  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8028CA3C 0028869C  4B FE 1D 21 */	bl OSDisableInterrupts
/* 8028CA40 002886A0  3C 80 80 52 */	lis r4, lbl_8051B550@ha
/* 8028CA44 002886A4  38 00 00 04 */	li r0, 4
/* 8028CA48 002886A8  3B E0 00 00 */	li r31, 0
/* 8028CA4C 002886AC  38 84 B5 50 */	addi r4, r4, lbl_8051B550@l
/* 8028CA50 002886B0  7C 09 03 A6 */	mtctr r0
lbl_8028CA54:
/* 8028CA54 002886B4  80 04 00 00 */	lwz r0, 0(r4)
/* 8028CA58 002886B8  7C 00 20 40 */	cmplw r0, r4
/* 8028CA5C 002886BC  41 82 00 48 */	beq lbl_8028CAA4
/* 8028CA60 002886C0  4B FE 1D 25 */	bl OSRestoreInterrupts
/* 8028CA64 002886C4  4B FE 1C F9 */	bl OSDisableInterrupts
/* 8028CA68 002886C8  3C 80 80 52 */	lis r4, lbl_8051B550@ha
/* 8028CA6C 002886CC  57 E0 18 38 */	slwi r0, r31, 3
/* 8028CA70 002886D0  38 84 B5 50 */	addi r4, r4, lbl_8051B550@l
/* 8028CA74 002886D4  7F E4 00 2E */	lwzx r31, r4, r0
/* 8028CA78 002886D8  7C A4 02 14 */	add r5, r4, r0
/* 8028CA7C 002886DC  80 1F 00 00 */	lwz r0, 0(r31)
/* 8028CA80 002886E0  90 05 00 00 */	stw r0, 0(r5)
/* 8028CA84 002886E4  80 9F 00 00 */	lwz r4, 0(r31)
/* 8028CA88 002886E8  90 A4 00 04 */	stw r5, 4(r4)
/* 8028CA8C 002886EC  4B FE 1C F9 */	bl OSRestoreInterrupts
/* 8028CA90 002886F0  38 00 00 00 */	li r0, 0
/* 8028CA94 002886F4  7F E3 FB 78 */	mr r3, r31
/* 8028CA98 002886F8  90 1F 00 00 */	stw r0, 0(r31)
/* 8028CA9C 002886FC  90 1F 00 04 */	stw r0, 4(r31)
/* 8028CAA0 00288700  48 00 00 18 */	b lbl_8028CAB8
lbl_8028CAA4:
/* 8028CAA4 00288704  38 84 00 08 */	addi r4, r4, 8
/* 8028CAA8 00288708  3B FF 00 01 */	addi r31, r31, 1
/* 8028CAAC 0028870C  42 00 FF A8 */	bdnz lbl_8028CA54
/* 8028CAB0 00288710  4B FE 1C D5 */	bl OSRestoreInterrupts
/* 8028CAB4 00288714  38 60 00 00 */	li r3, 0
lbl_8028CAB8:
/* 8028CAB8 00288718  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8028CABC 0028871C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8028CAC0 00288720  7C 08 03 A6 */	mtlr r0
/* 8028CAC4 00288724  38 21 00 10 */	addi r1, r1, 0x10
/* 8028CAC8 00288728  4E 80 00 20 */	blr

.global __DVDCheckWaitingQueue
__DVDCheckWaitingQueue:
/* 8028CACC 0028872C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8028CAD0 00288730  7C 08 02 A6 */	mflr r0
/* 8028CAD4 00288734  90 01 00 14 */	stw r0, 0x14(r1)
/* 8028CAD8 00288738  4B FE 1C 85 */	bl OSDisableInterrupts
/* 8028CADC 0028873C  3C 80 80 52 */	lis r4, lbl_8051B550@ha
/* 8028CAE0 00288740  38 00 00 04 */	li r0, 4
/* 8028CAE4 00288744  38 84 B5 50 */	addi r4, r4, lbl_8051B550@l
/* 8028CAE8 00288748  7C 09 03 A6 */	mtctr r0
lbl_8028CAEC:
/* 8028CAEC 0028874C  80 04 00 00 */	lwz r0, 0(r4)
/* 8028CAF0 00288750  7C 00 20 40 */	cmplw r0, r4
/* 8028CAF4 00288754  41 82 00 10 */	beq lbl_8028CB04
/* 8028CAF8 00288758  4B FE 1C 8D */	bl OSRestoreInterrupts
/* 8028CAFC 0028875C  38 60 00 01 */	li r3, 1
/* 8028CB00 00288760  48 00 00 14 */	b lbl_8028CB14
lbl_8028CB04:
/* 8028CB04 00288764  38 84 00 08 */	addi r4, r4, 8
/* 8028CB08 00288768  42 00 FF E4 */	bdnz lbl_8028CAEC
/* 8028CB0C 0028876C  4B FE 1C 79 */	bl OSRestoreInterrupts
/* 8028CB10 00288770  38 60 00 00 */	li r3, 0
lbl_8028CB14:
/* 8028CB14 00288774  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8028CB18 00288778  7C 08 03 A6 */	mtlr r0
/* 8028CB1C 0028877C  38 21 00 10 */	addi r1, r1, 0x10
/* 8028CB20 00288780  4E 80 00 20 */	blr

.global __DVDGetNextWaitingQueue
__DVDGetNextWaitingQueue:
/* 8028CB24 00288784  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8028CB28 00288788  7C 08 02 A6 */	mflr r0
/* 8028CB2C 0028878C  90 01 00 14 */	stw r0, 0x14(r1)
/* 8028CB30 00288790  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8028CB34 00288794  4B FE 1C 29 */	bl OSDisableInterrupts
/* 8028CB38 00288798  3C 80 80 52 */	lis r4, lbl_8051B550@ha
/* 8028CB3C 0028879C  38 00 00 04 */	li r0, 4
/* 8028CB40 002887A0  38 84 B5 50 */	addi r4, r4, lbl_8051B550@l
/* 8028CB44 002887A4  7C 09 03 A6 */	mtctr r0
lbl_8028CB48:
/* 8028CB48 002887A8  83 E4 00 00 */	lwz r31, 0(r4)
/* 8028CB4C 002887AC  7C 1F 20 40 */	cmplw r31, r4
/* 8028CB50 002887B0  41 82 00 10 */	beq lbl_8028CB60
/* 8028CB54 002887B4  4B FE 1C 31 */	bl OSRestoreInterrupts
/* 8028CB58 002887B8  7F E3 FB 78 */	mr r3, r31
/* 8028CB5C 002887BC  48 00 00 14 */	b lbl_8028CB70
lbl_8028CB60:
/* 8028CB60 002887C0  38 84 00 08 */	addi r4, r4, 8
/* 8028CB64 002887C4  42 00 FF E4 */	bdnz lbl_8028CB48
/* 8028CB68 002887C8  4B FE 1C 1D */	bl OSRestoreInterrupts
/* 8028CB6C 002887CC  38 60 00 00 */	li r3, 0
lbl_8028CB70:
/* 8028CB70 002887D0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8028CB74 002887D4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8028CB78 002887D8  7C 08 03 A6 */	mtlr r0
/* 8028CB7C 002887DC  38 21 00 10 */	addi r1, r1, 0x10
/* 8028CB80 002887E0  4E 80 00 20 */	blr

.global __DVDDequeueWaitingQueue
__DVDDequeueWaitingQueue:
/* 8028CB84 002887E4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8028CB88 002887E8  7C 08 02 A6 */	mflr r0
/* 8028CB8C 002887EC  90 01 00 14 */	stw r0, 0x14(r1)
/* 8028CB90 002887F0  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8028CB94 002887F4  7C 7F 1B 78 */	mr r31, r3
/* 8028CB98 002887F8  4B FE 1B C5 */	bl OSDisableInterrupts
/* 8028CB9C 002887FC  80 9F 00 04 */	lwz r4, 4(r31)
/* 8028CBA0 00288800  80 BF 00 00 */	lwz r5, 0(r31)
/* 8028CBA4 00288804  2C 04 00 00 */	cmpwi r4, 0
/* 8028CBA8 00288808  41 82 00 0C */	beq lbl_8028CBB4
/* 8028CBAC 0028880C  2C 05 00 00 */	cmpwi r5, 0
/* 8028CBB0 00288810  40 82 00 10 */	bne lbl_8028CBC0
lbl_8028CBB4:
/* 8028CBB4 00288814  4B FE 1B D1 */	bl OSRestoreInterrupts
/* 8028CBB8 00288818  38 60 00 00 */	li r3, 0
/* 8028CBBC 0028881C  48 00 00 14 */	b lbl_8028CBD0
lbl_8028CBC0:
/* 8028CBC0 00288820  90 A4 00 00 */	stw r5, 0(r4)
/* 8028CBC4 00288824  90 85 00 04 */	stw r4, 4(r5)
/* 8028CBC8 00288828  4B FE 1B BD */	bl OSRestoreInterrupts
/* 8028CBCC 0028882C  38 60 00 01 */	li r3, 1
lbl_8028CBD0:
/* 8028CBD0 00288830  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8028CBD4 00288834  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8028CBD8 00288838  7C 08 03 A6 */	mtlr r0
/* 8028CBDC 0028883C  38 21 00 10 */	addi r1, r1, 0x10
/* 8028CBE0 00288840  4E 80 00 20 */	blr