summaryrefslogtreecommitdiff
path: root/asm/SDK/DWC/dwc_common/dwc_memfunc.s
blob: 143f3890198336a62134bd10626c1942ab2e2816 (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
.include "macros.inc"

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

.global DWCi_SetMemFunc
DWCi_SetMemFunc:
/* 8031C8E0 00318540  90 6D B0 24 */	stw r3, lbl_806402E4-_SDA_BASE_(r13)
/* 8031C8E4 00318544  90 8D B0 20 */	stw r4, lbl_806402E0-_SDA_BASE_(r13)
/* 8031C8E8 00318548  4E 80 00 20 */	blr

.global DWC_Alloc
DWC_Alloc:
/* 8031C8EC 0031854C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8031C8F0 00318550  7C 08 02 A6 */	mflr r0
/* 8031C8F4 00318554  38 A0 00 20 */	li r5, 0x20
/* 8031C8F8 00318558  90 01 00 14 */	stw r0, 0x14(r1)
/* 8031C8FC 0031855C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8031C900 00318560  7C 9F 23 78 */	mr r31, r4
/* 8031C904 00318564  81 8D B0 24 */	lwz r12, lbl_806402E4-_SDA_BASE_(r13)
/* 8031C908 00318568  7D 89 03 A6 */	mtctr r12
/* 8031C90C 0031856C  38 84 00 20 */	addi r4, r4, 0x20
/* 8031C910 00318570  4E 80 04 21 */	bctrl
/* 8031C914 00318574  3C 80 44 57 */	lis r4, 0x4457434D@ha
/* 8031C918 00318578  38 04 43 4D */	addi r0, r4, 0x4457434D@l
/* 8031C91C 0031857C  90 03 00 00 */	stw r0, 0(r3)
/* 8031C920 00318580  93 E3 00 04 */	stw r31, 4(r3)
/* 8031C924 00318584  38 63 00 20 */	addi r3, r3, 0x20
/* 8031C928 00318588  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8031C92C 0031858C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8031C930 00318590  7C 08 03 A6 */	mtlr r0
/* 8031C934 00318594  38 21 00 10 */	addi r1, r1, 0x10
/* 8031C938 00318598  4E 80 00 20 */	blr

.global DWC_AllocEx
DWC_AllocEx:
/* 8031C93C 0031859C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8031C940 003185A0  7C 08 02 A6 */	mflr r0
/* 8031C944 003185A4  90 01 00 14 */	stw r0, 0x14(r1)
/* 8031C948 003185A8  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8031C94C 003185AC  7C 9F 23 78 */	mr r31, r4
/* 8031C950 003185B0  81 8D B0 24 */	lwz r12, lbl_806402E4-_SDA_BASE_(r13)
/* 8031C954 003185B4  7D 89 03 A6 */	mtctr r12
/* 8031C958 003185B8  38 84 00 20 */	addi r4, r4, 0x20
/* 8031C95C 003185BC  4E 80 04 21 */	bctrl
/* 8031C960 003185C0  3C 80 44 57 */	lis r4, 0x4457434D@ha
/* 8031C964 003185C4  38 04 43 4D */	addi r0, r4, 0x4457434D@l
/* 8031C968 003185C8  90 03 00 00 */	stw r0, 0(r3)
/* 8031C96C 003185CC  93 E3 00 04 */	stw r31, 4(r3)
/* 8031C970 003185D0  38 63 00 20 */	addi r3, r3, 0x20
/* 8031C974 003185D4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8031C978 003185D8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8031C97C 003185DC  7C 08 03 A6 */	mtlr r0
/* 8031C980 003185E0  38 21 00 10 */	addi r1, r1, 0x10
/* 8031C984 003185E4  4E 80 00 20 */	blr

.global DWC_Free
DWC_Free:
/* 8031C988 003185E8  2C 04 00 00 */	cmpwi r4, 0
/* 8031C98C 003185EC  4D 82 00 20 */	beqlr
/* 8031C990 003185F0  81 8D B0 20 */	lwz r12, lbl_806402E0-_SDA_BASE_(r13)
/* 8031C994 003185F4  7D 89 03 A6 */	mtctr r12
/* 8031C998 003185F8  38 84 FF E0 */	addi r4, r4, -32
/* 8031C99C 003185FC  4E 80 04 20 */	bctr
/* 8031C9A0 00318600  4E 80 00 20 */	blr

.global DWCi_GsMalloc
DWCi_GsMalloc:
/* 8031C9A4 00318604  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8031C9A8 00318608  7C 08 02 A6 */	mflr r0
/* 8031C9AC 0031860C  38 A0 00 20 */	li r5, 0x20
/* 8031C9B0 00318610  90 01 00 14 */	stw r0, 0x14(r1)
/* 8031C9B4 00318614  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8031C9B8 00318618  7C 7F 1B 78 */	mr r31, r3
/* 8031C9BC 0031861C  38 9F 00 20 */	addi r4, r31, 0x20
/* 8031C9C0 00318620  38 60 00 09 */	li r3, 9
/* 8031C9C4 00318624  81 8D B0 24 */	lwz r12, lbl_806402E4-_SDA_BASE_(r13)
/* 8031C9C8 00318628  7D 89 03 A6 */	mtctr r12
/* 8031C9CC 0031862C  4E 80 04 21 */	bctrl
/* 8031C9D0 00318630  3C 80 44 57 */	lis r4, 0x4457434D@ha
/* 8031C9D4 00318634  38 04 43 4D */	addi r0, r4, 0x4457434D@l
/* 8031C9D8 00318638  90 03 00 00 */	stw r0, 0(r3)
/* 8031C9DC 0031863C  93 E3 00 04 */	stw r31, 4(r3)
/* 8031C9E0 00318640  38 63 00 20 */	addi r3, r3, 0x20
/* 8031C9E4 00318644  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8031C9E8 00318648  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8031C9EC 0031864C  7C 08 03 A6 */	mtlr r0
/* 8031C9F0 00318650  38 21 00 10 */	addi r1, r1, 0x10
/* 8031C9F4 00318654  4E 80 00 20 */	blr

.global DWCi_GsRealloc
DWCi_GsRealloc:
/* 8031C9F8 00318658  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8031C9FC 0031865C  7C 08 02 A6 */	mflr r0
/* 8031CA00 00318660  38 A0 00 20 */	li r5, 0x20
/* 8031CA04 00318664  90 01 00 24 */	stw r0, 0x24(r1)
/* 8031CA08 00318668  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8031CA0C 0031866C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8031CA10 00318670  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8031CA14 00318674  7C 9D 23 78 */	mr r29, r4
/* 8031CA18 00318678  93 81 00 10 */	stw r28, 0x10(r1)
/* 8031CA1C 0031867C  7C 7C 1B 78 */	mr r28, r3
/* 8031CA20 00318680  38 60 00 09 */	li r3, 9
/* 8031CA24 00318684  81 8D B0 24 */	lwz r12, lbl_806402E4-_SDA_BASE_(r13)
/* 8031CA28 00318688  7D 89 03 A6 */	mtctr r12
/* 8031CA2C 0031868C  38 84 00 20 */	addi r4, r4, 0x20
/* 8031CA30 00318690  4E 80 04 21 */	bctrl
/* 8031CA34 00318694  3C 80 44 57 */	lis r4, 0x4457434D@ha
/* 8031CA38 00318698  37 E3 00 20 */	addic. r31, r3, 0x20
/* 8031CA3C 0031869C  38 04 43 4D */	addi r0, r4, 0x4457434D@l
/* 8031CA40 003186A0  90 03 00 00 */	stw r0, 0(r3)
/* 8031CA44 003186A4  93 A3 00 04 */	stw r29, 4(r3)
/* 8031CA48 003186A8  40 82 00 0C */	bne lbl_8031CA54
/* 8031CA4C 003186AC  3B E0 00 00 */	li r31, 0
/* 8031CA50 003186B0  48 00 00 40 */	b lbl_8031CA90
lbl_8031CA54:
/* 8031CA54 003186B4  2C 1C 00 00 */	cmpwi r28, 0
/* 8031CA58 003186B8  41 82 00 38 */	beq lbl_8031CA90
/* 8031CA5C 003186BC  80 BC FF E4 */	lwz r5, -0x1c(r28)
/* 8031CA60 003186C0  3B DC FF E0 */	addi r30, r28, -32
/* 8031CA64 003186C4  7F E3 FB 78 */	mr r3, r31
/* 8031CA68 003186C8  7F 84 E3 78 */	mr r4, r28
/* 8031CA6C 003186CC  4B CE 75 95 */	bl memcpy
/* 8031CA70 003186D0  2C 1C 00 00 */	cmpwi r28, 0
/* 8031CA74 003186D4  41 82 00 1C */	beq lbl_8031CA90
/* 8031CA78 003186D8  81 8D B0 20 */	lwz r12, lbl_806402E0-_SDA_BASE_(r13)
/* 8031CA7C 003186DC  7F C4 F3 78 */	mr r4, r30
/* 8031CA80 003186E0  7F A5 EB 78 */	mr r5, r29
/* 8031CA84 003186E4  38 60 00 09 */	li r3, 9
/* 8031CA88 003186E8  7D 89 03 A6 */	mtctr r12
/* 8031CA8C 003186EC  4E 80 04 21 */	bctrl
lbl_8031CA90:
/* 8031CA90 003186F0  7F E3 FB 78 */	mr r3, r31
/* 8031CA94 003186F4  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8031CA98 003186F8  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8031CA9C 003186FC  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8031CAA0 00318700  83 81 00 10 */	lwz r28, 0x10(r1)
/* 8031CAA4 00318704  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8031CAA8 00318708  7C 08 03 A6 */	mtlr r0
/* 8031CAAC 0031870C  38 21 00 20 */	addi r1, r1, 0x20
/* 8031CAB0 00318710  4E 80 00 20 */	blr

.global DWCi_GsFree
DWCi_GsFree:
/* 8031CAB4 00318714  2C 03 00 00 */	cmpwi r3, 0
/* 8031CAB8 00318718  4D 82 00 20 */	beqlr
/* 8031CABC 0031871C  81 8D B0 20 */	lwz r12, lbl_806402E0-_SDA_BASE_(r13)
/* 8031CAC0 00318720  38 83 FF E0 */	addi r4, r3, -32
/* 8031CAC4 00318724  38 60 00 09 */	li r3, 9
/* 8031CAC8 00318728  38 A0 00 00 */	li r5, 0
/* 8031CACC 0031872C  7D 89 03 A6 */	mtctr r12
/* 8031CAD0 00318730  4E 80 04 20 */	bctr
/* 8031CAD4 00318734  4E 80 00 20 */	blr

.global DWCi_GsMemalign
DWCi_GsMemalign:
/* 8031CAD8 00318738  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8031CADC 0031873C  7C 08 02 A6 */	mflr r0
/* 8031CAE0 00318740  7C 65 1B 78 */	mr r5, r3
/* 8031CAE4 00318744  38 60 00 09 */	li r3, 9
/* 8031CAE8 00318748  90 01 00 14 */	stw r0, 0x14(r1)
/* 8031CAEC 0031874C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8031CAF0 00318750  7C 9F 23 78 */	mr r31, r4
/* 8031CAF4 00318754  81 8D B0 24 */	lwz r12, lbl_806402E4-_SDA_BASE_(r13)
/* 8031CAF8 00318758  7D 89 03 A6 */	mtctr r12
/* 8031CAFC 0031875C  38 84 00 20 */	addi r4, r4, 0x20
/* 8031CB00 00318760  4E 80 04 21 */	bctrl
/* 8031CB04 00318764  3C 80 44 57 */	lis r4, 0x4457434D@ha
/* 8031CB08 00318768  38 04 43 4D */	addi r0, r4, 0x4457434D@l
/* 8031CB0C 0031876C  90 03 00 00 */	stw r0, 0(r3)
/* 8031CB10 00318770  93 E3 00 04 */	stw r31, 4(r3)
/* 8031CB14 00318774  38 63 00 20 */	addi r3, r3, 0x20
/* 8031CB18 00318778  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8031CB1C 0031877C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8031CB20 00318780  7C 08 03 A6 */	mtlr r0
/* 8031CB24 00318784  38 21 00 10 */	addi r1, r1, 0x10
/* 8031CB28 00318788  4E 80 00 20 */	blr