summaryrefslogtreecommitdiff
path: root/asm/MetroTRK/mem_TRK.s
blob: 26dfe61fcd9c5e108ad2d7b3f1399e3b02902c15 (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
.include "macros.inc"

.section .init, "ax"  # 0x80004000 - 0x800064E0

.global TRK_memset
TRK_memset:
/* 80004134 00000234  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80004138 00000238  7C 08 02 A6 */	mflr r0
/* 8000413C 0000023C  90 01 00 14 */	stw r0, 0x14(r1)
/* 80004140 00000240  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80004144 00000244  7C 7F 1B 78 */	mr r31, r3
/* 80004148 00000248  48 1D 2F F5 */	bl TRK_fill_mem
/* 8000414C 0000024C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80004150 00000250  7F E3 FB 78 */	mr r3, r31
/* 80004154 00000254  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80004158 00000258  7C 08 03 A6 */	mtlr r0
/* 8000415C 0000025C  38 21 00 10 */	addi r1, r1, 0x10
/* 80004160 00000260  4E 80 00 20 */	blr

.global TRK_memcpy
TRK_memcpy:
/* 80004164 00000264  38 84 FF FF */	addi r4, r4, -1
/* 80004168 00000268  38 C3 FF FF */	addi r6, r3, -1
/* 8000416C 0000026C  38 A5 00 01 */	addi r5, r5, 1
/* 80004170 00000270  48 00 00 0C */	b lbl_8000417C
lbl_80004174:
/* 80004174 00000274  8C 04 00 01 */	lbzu r0, 1(r4)
/* 80004178 00000278  9C 06 00 01 */	stbu r0, 1(r6)
lbl_8000417C:
/* 8000417C 0000027C  34 A5 FF FF */	addic. r5, r5, -1
/* 80004180 00000280  40 82 FF F4 */	bne lbl_80004174
/* 80004184 00000284  4E 80 00 20 */	blr

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

.global TRK_fill_mem
TRK_fill_mem:
/* 801D713C 001D2D9C  28 05 00 20 */	cmplwi r5, 0x20
/* 801D7140 001D2DA0  54 84 06 3E */	clrlwi r4, r4, 0x18
/* 801D7144 001D2DA4  38 C3 FF FF */	addi r6, r3, -1
/* 801D7148 001D2DA8  7C 87 23 78 */	mr r7, r4
/* 801D714C 001D2DAC  41 80 00 90 */	blt lbl_801D71DC
/* 801D7150 001D2DB0  7C C0 30 F8 */	nor r0, r6, r6
/* 801D7154 001D2DB4  54 03 07 BF */	clrlwi. r3, r0, 0x1e
/* 801D7158 001D2DB8  41 82 00 14 */	beq lbl_801D716C
/* 801D715C 001D2DBC  7C A3 28 50 */	subf r5, r3, r5
lbl_801D7160:
/* 801D7160 001D2DC0  34 63 FF FF */	addic. r3, r3, -1
/* 801D7164 001D2DC4  9C E6 00 01 */	stbu r7, 1(r6)
/* 801D7168 001D2DC8  40 82 FF F8 */	bne lbl_801D7160
lbl_801D716C:
/* 801D716C 001D2DCC  28 07 00 00 */	cmplwi r7, 0
/* 801D7170 001D2DD0  41 82 00 1C */	beq lbl_801D718C
/* 801D7174 001D2DD4  54 E3 C0 0E */	slwi r3, r7, 0x18
/* 801D7178 001D2DD8  54 E0 80 1E */	slwi r0, r7, 0x10
/* 801D717C 001D2DDC  54 E4 40 2E */	slwi r4, r7, 8
/* 801D7180 001D2DE0  7C 60 03 78 */	or r0, r3, r0
/* 801D7184 001D2DE4  7C 80 03 78 */	or r0, r4, r0
/* 801D7188 001D2DE8  7C E7 03 78 */	or r7, r7, r0
lbl_801D718C:
/* 801D718C 001D2DEC  54 A4 D9 7F */	rlwinm. r4, r5, 0x1b, 5, 0x1f
/* 801D7190 001D2DF0  38 66 FF FD */	addi r3, r6, -3
/* 801D7194 001D2DF4  41 82 00 2C */	beq lbl_801D71C0
lbl_801D7198:
/* 801D7198 001D2DF8  90 E3 00 04 */	stw r7, 4(r3)
/* 801D719C 001D2DFC  34 84 FF FF */	addic. r4, r4, -1
/* 801D71A0 001D2E00  90 E3 00 08 */	stw r7, 8(r3)
/* 801D71A4 001D2E04  90 E3 00 0C */	stw r7, 0xc(r3)
/* 801D71A8 001D2E08  90 E3 00 10 */	stw r7, 0x10(r3)
/* 801D71AC 001D2E0C  90 E3 00 14 */	stw r7, 0x14(r3)
/* 801D71B0 001D2E10  90 E3 00 18 */	stw r7, 0x18(r3)
/* 801D71B4 001D2E14  90 E3 00 1C */	stw r7, 0x1c(r3)
/* 801D71B8 001D2E18  94 E3 00 20 */	stwu r7, 0x20(r3)
/* 801D71BC 001D2E1C  40 82 FF DC */	bne lbl_801D7198
lbl_801D71C0:
/* 801D71C0 001D2E20  54 A4 F7 7F */	rlwinm. r4, r5, 0x1e, 0x1d, 0x1f
/* 801D71C4 001D2E24  41 82 00 10 */	beq lbl_801D71D4
lbl_801D71C8:
/* 801D71C8 001D2E28  34 84 FF FF */	addic. r4, r4, -1
/* 801D71CC 001D2E2C  94 E3 00 04 */	stwu r7, 4(r3)
/* 801D71D0 001D2E30  40 82 FF F8 */	bne lbl_801D71C8
lbl_801D71D4:
/* 801D71D4 001D2E34  38 C3 00 03 */	addi r6, r3, 3
/* 801D71D8 001D2E38  54 A5 07 BE */	clrlwi r5, r5, 0x1e
lbl_801D71DC:
/* 801D71DC 001D2E3C  28 05 00 00 */	cmplwi r5, 0
/* 801D71E0 001D2E40  4D 82 00 20 */	beqlr
lbl_801D71E4:
/* 801D71E4 001D2E44  34 A5 FF FF */	addic. r5, r5, -1
/* 801D71E8 001D2E48  9C E6 00 01 */	stbu r7, 1(r6)
/* 801D71EC 001D2E4C  40 82 FF F8 */	bne lbl_801D71E4
/* 801D71F0 001D2E50  4E 80 00 20 */	blr