summaryrefslogtreecommitdiff
path: root/asm/MSL_C/MSL_Common/buffer_io.s
blob: 2ee661826772ab2c2b101728f9860b9d8f7d8aa9 (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
.include "macros.inc"

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

.global __prep_buffer
__prep_buffer:
/* 801C93A8 001C5008  80 83 00 18 */	lwz r4, 0x18(r3)
/* 801C93AC 001C500C  80 03 00 2C */	lwz r0, 0x2c(r3)
/* 801C93B0 001C5010  80 C3 00 1C */	lwz r6, 0x1c(r3)
/* 801C93B4 001C5014  80 A3 00 20 */	lwz r5, 0x20(r3)
/* 801C93B8 001C5018  7C 80 00 38 */	and r0, r4, r0
/* 801C93BC 001C501C  90 C3 00 24 */	stw r6, 0x24(r3)
/* 801C93C0 001C5020  7C 00 28 50 */	subf r0, r0, r5
/* 801C93C4 001C5024  90 03 00 28 */	stw r0, 0x28(r3)
/* 801C93C8 001C5028  90 83 00 34 */	stw r4, 0x34(r3)
/* 801C93CC 001C502C  4E 80 00 20 */	blr

.global __load_buffer
__load_buffer:
/* 801C93D0 001C5030  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801C93D4 001C5034  7C 08 02 A6 */	mflr r0
/* 801C93D8 001C5038  2C 05 00 01 */	cmpwi r5, 1
/* 801C93DC 001C503C  90 01 00 14 */	stw r0, 0x14(r1)
/* 801C93E0 001C5040  93 E1 00 0C */	stw r31, 0xc(r1)
/* 801C93E4 001C5044  7C 7F 1B 78 */	mr r31, r3
/* 801C93E8 001C5048  93 C1 00 08 */	stw r30, 8(r1)
/* 801C93EC 001C504C  7C 9E 23 78 */	mr r30, r4
/* 801C93F0 001C5050  80 C3 00 18 */	lwz r6, 0x18(r3)
/* 801C93F4 001C5054  80 03 00 2C */	lwz r0, 0x2c(r3)
/* 801C93F8 001C5058  80 A3 00 1C */	lwz r5, 0x1c(r3)
/* 801C93FC 001C505C  80 83 00 20 */	lwz r4, 0x20(r3)
/* 801C9400 001C5060  7C C0 00 38 */	and r0, r6, r0
/* 801C9404 001C5064  90 A3 00 24 */	stw r5, 0x24(r3)
/* 801C9408 001C5068  7C 00 20 50 */	subf r0, r0, r4
/* 801C940C 001C506C  90 03 00 28 */	stw r0, 0x28(r3)
/* 801C9410 001C5070  90 C3 00 34 */	stw r6, 0x34(r3)
/* 801C9414 001C5074  40 82 00 08 */	bne lbl_801C941C
/* 801C9418 001C5078  90 83 00 28 */	stw r4, 0x28(r3)
lbl_801C941C:
/* 801C941C 001C507C  81 9F 00 3C */	lwz r12, 0x3c(r31)
/* 801C9420 001C5080  38 BF 00 28 */	addi r5, r31, 0x28
/* 801C9424 001C5084  80 63 00 00 */	lwz r3, 0(r3)
/* 801C9428 001C5088  80 9F 00 1C */	lwz r4, 0x1c(r31)
/* 801C942C 001C508C  80 DF 00 48 */	lwz r6, 0x48(r31)
/* 801C9430 001C5090  7D 89 03 A6 */	mtctr r12
/* 801C9434 001C5094  4E 80 04 21 */	bctrl
/* 801C9438 001C5098  2C 03 00 02 */	cmpwi r3, 2
/* 801C943C 001C509C  40 82 00 0C */	bne lbl_801C9448
/* 801C9440 001C50A0  38 00 00 00 */	li r0, 0
/* 801C9444 001C50A4  90 1F 00 28 */	stw r0, 0x28(r31)
lbl_801C9448:
/* 801C9448 001C50A8  2C 1E 00 00 */	cmpwi r30, 0
/* 801C944C 001C50AC  41 82 00 0C */	beq lbl_801C9458
/* 801C9450 001C50B0  80 1F 00 28 */	lwz r0, 0x28(r31)
/* 801C9454 001C50B4  90 1E 00 00 */	stw r0, 0(r30)
lbl_801C9458:
/* 801C9458 001C50B8  2C 03 00 00 */	cmpwi r3, 0
/* 801C945C 001C50BC  41 82 00 08 */	beq lbl_801C9464
/* 801C9460 001C50C0  48 00 00 54 */	b lbl_801C94B4
lbl_801C9464:
/* 801C9464 001C50C4  80 1F 00 04 */	lwz r0, 4(r31)
/* 801C9468 001C50C8  80 9F 00 18 */	lwz r4, 0x18(r31)
/* 801C946C 001C50CC  80 7F 00 28 */	lwz r3, 0x28(r31)
/* 801C9470 001C50D0  54 00 6F FF */	rlwinm. r0, r0, 0xd, 0x1f, 0x1f
/* 801C9474 001C50D4  7C 04 1A 14 */	add r0, r4, r3
/* 801C9478 001C50D8  90 1F 00 18 */	stw r0, 0x18(r31)
/* 801C947C 001C50DC  40 82 00 34 */	bne lbl_801C94B0
/* 801C9480 001C50E0  80 9F 00 1C */	lwz r4, 0x1c(r31)
/* 801C9484 001C50E4  7C 69 03 A6 */	mtctr r3
/* 801C9488 001C50E8  2C 03 00 00 */	cmpwi r3, 0
/* 801C948C 001C50EC  41 82 00 24 */	beq lbl_801C94B0
lbl_801C9490:
/* 801C9490 001C50F0  88 04 00 00 */	lbz r0, 0(r4)
/* 801C9494 001C50F4  38 84 00 01 */	addi r4, r4, 1
/* 801C9498 001C50F8  28 00 00 0A */	cmplwi r0, 0xa
/* 801C949C 001C50FC  40 82 00 10 */	bne lbl_801C94AC
/* 801C94A0 001C5100  80 7F 00 18 */	lwz r3, 0x18(r31)
/* 801C94A4 001C5104  38 03 00 01 */	addi r0, r3, 1
/* 801C94A8 001C5108  90 1F 00 18 */	stw r0, 0x18(r31)
lbl_801C94AC:
/* 801C94AC 001C510C  42 00 FF E4 */	bdnz lbl_801C9490
lbl_801C94B0:
/* 801C94B0 001C5110  38 60 00 00 */	li r3, 0
lbl_801C94B4:
/* 801C94B4 001C5114  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801C94B8 001C5118  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 801C94BC 001C511C  83 C1 00 08 */	lwz r30, 8(r1)
/* 801C94C0 001C5120  7C 08 03 A6 */	mtlr r0
/* 801C94C4 001C5124  38 21 00 10 */	addi r1, r1, 0x10
/* 801C94C8 001C5128  4E 80 00 20 */	blr

.global __flush_buffer
__flush_buffer:
/* 801C94CC 001C512C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 801C94D0 001C5130  7C 08 02 A6 */	mflr r0
/* 801C94D4 001C5134  90 01 00 14 */	stw r0, 0x14(r1)
/* 801C94D8 001C5138  93 E1 00 0C */	stw r31, 0xc(r1)
/* 801C94DC 001C513C  7C 9F 23 78 */	mr r31, r4
/* 801C94E0 001C5140  93 C1 00 08 */	stw r30, 8(r1)
/* 801C94E4 001C5144  7C 7E 1B 78 */	mr r30, r3
/* 801C94E8 001C5148  80 A3 00 1C */	lwz r5, 0x1c(r3)
/* 801C94EC 001C514C  80 03 00 24 */	lwz r0, 0x24(r3)
/* 801C94F0 001C5150  7C 05 00 51 */	subf. r0, r5, r0
/* 801C94F4 001C5154  41 82 00 50 */	beq lbl_801C9544
/* 801C94F8 001C5158  81 9E 00 40 */	lwz r12, 0x40(r30)
/* 801C94FC 001C515C  7C A4 2B 78 */	mr r4, r5
/* 801C9500 001C5160  90 03 00 28 */	stw r0, 0x28(r3)
/* 801C9504 001C5164  38 BE 00 28 */	addi r5, r30, 0x28
/* 801C9508 001C5168  80 63 00 00 */	lwz r3, 0(r3)
/* 801C950C 001C516C  80 DE 00 48 */	lwz r6, 0x48(r30)
/* 801C9510 001C5170  7D 89 03 A6 */	mtctr r12
/* 801C9514 001C5174  4E 80 04 21 */	bctrl
/* 801C9518 001C5178  2C 1F 00 00 */	cmpwi r31, 0
/* 801C951C 001C517C  41 82 00 0C */	beq lbl_801C9528
/* 801C9520 001C5180  80 1E 00 28 */	lwz r0, 0x28(r30)
/* 801C9524 001C5184  90 1F 00 00 */	stw r0, 0(r31)
lbl_801C9528:
/* 801C9528 001C5188  2C 03 00 00 */	cmpwi r3, 0
/* 801C952C 001C518C  41 82 00 08 */	beq lbl_801C9534
/* 801C9530 001C5190  48 00 00 3C */	b lbl_801C956C
lbl_801C9534:
/* 801C9534 001C5194  80 7E 00 18 */	lwz r3, 0x18(r30)
/* 801C9538 001C5198  80 1E 00 28 */	lwz r0, 0x28(r30)
/* 801C953C 001C519C  7C 03 02 14 */	add r0, r3, r0
/* 801C9540 001C51A0  90 1E 00 18 */	stw r0, 0x18(r30)
lbl_801C9544:
/* 801C9544 001C51A4  80 9E 00 18 */	lwz r4, 0x18(r30)
/* 801C9548 001C51A8  38 60 00 00 */	li r3, 0
/* 801C954C 001C51AC  80 1E 00 2C */	lwz r0, 0x2c(r30)
/* 801C9550 001C51B0  80 DE 00 1C */	lwz r6, 0x1c(r30)
/* 801C9554 001C51B4  80 BE 00 20 */	lwz r5, 0x20(r30)
/* 801C9558 001C51B8  7C 80 00 38 */	and r0, r4, r0
/* 801C955C 001C51BC  90 DE 00 24 */	stw r6, 0x24(r30)
/* 801C9560 001C51C0  7C 00 28 50 */	subf r0, r0, r5
/* 801C9564 001C51C4  90 1E 00 28 */	stw r0, 0x28(r30)
/* 801C9568 001C51C8  90 9E 00 34 */	stw r4, 0x34(r30)
lbl_801C956C:
/* 801C956C 001C51CC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801C9570 001C51D0  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 801C9574 001C51D4  83 C1 00 08 */	lwz r30, 8(r1)
/* 801C9578 001C51D8  7C 08 03 A6 */	mtlr r0
/* 801C957C 001C51DC  38 21 00 10 */	addi r1, r1, 0x10
/* 801C9580 001C51E0  4E 80 00 20 */	blr