summaryrefslogtreecommitdiff
path: root/asm/Runtime/__mem.s
blob: 01d9be6860513d5179b3b028d27c11e3e495393d (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
.include "macros.inc"

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

.global memcpy
memcpy:
/* 80004000 00000100  7C 04 18 40 */	cmplw r4, r3
/* 80004004 00000104  41 80 00 28 */	blt lbl_8000402C
/* 80004008 00000108  38 84 FF FF */	addi r4, r4, -1
/* 8000400C 0000010C  38 C3 FF FF */	addi r6, r3, -1
/* 80004010 00000110  38 A5 00 01 */	addi r5, r5, 1
/* 80004014 00000114  48 00 00 0C */	b lbl_80004020
lbl_80004018:
/* 80004018 00000118  8C 04 00 01 */	lbzu r0, 1(r4)
/* 8000401C 0000011C  9C 06 00 01 */	stbu r0, 1(r6)
lbl_80004020:
/* 80004020 00000120  34 A5 FF FF */	addic. r5, r5, -1
/* 80004024 00000124  40 82 FF F4 */	bne lbl_80004018
/* 80004028 00000128  4E 80 00 20 */	blr
lbl_8000402C:
/* 8000402C 0000012C  7C 84 2A 14 */	add r4, r4, r5
/* 80004030 00000130  7C C3 2A 14 */	add r6, r3, r5
/* 80004034 00000134  38 A5 00 01 */	addi r5, r5, 1
/* 80004038 00000138  48 00 00 0C */	b lbl_80004044
lbl_8000403C:
/* 8000403C 0000013C  8C 04 FF FF */	lbzu r0, -1(r4)
/* 80004040 00000140  9C 06 FF FF */	stbu r0, -1(r6)
lbl_80004044:
/* 80004044 00000144  34 A5 FF FF */	addic. r5, r5, -1
/* 80004048 00000148  40 82 FF F4 */	bne lbl_8000403C
/* 8000404C 0000014C  4E 80 00 20 */	blr

__fill_mem:
/* 80004050 00000150  28 05 00 20 */	cmplwi r5, 0x20
/* 80004054 00000154  54 87 06 3E */	clrlwi r7, r4, 0x18
/* 80004058 00000158  38 C3 FF FF */	addi r6, r3, -1
/* 8000405C 0000015C  41 80 00 90 */	blt lbl_800040EC
/* 80004060 00000160  7C C0 30 F8 */	nor r0, r6, r6
/* 80004064 00000164  54 00 07 BF */	clrlwi. r0, r0, 0x1e
/* 80004068 00000168  41 82 00 14 */	beq lbl_8000407C
/* 8000406C 0000016C  7C A0 28 50 */	subf r5, r0, r5
lbl_80004070:
/* 80004070 00000170  34 00 FF FF */	addic. r0, r0, -1
/* 80004074 00000174  9C E6 00 01 */	stbu r7, 1(r6)
/* 80004078 00000178  40 82 FF F8 */	bne lbl_80004070
lbl_8000407C:
/* 8000407C 0000017C  2C 07 00 00 */	cmpwi r7, 0
/* 80004080 00000180  41 82 00 1C */	beq lbl_8000409C
/* 80004084 00000184  54 E4 40 2E */	slwi r4, r7, 8
/* 80004088 00000188  54 E3 C0 0E */	slwi r3, r7, 0x18
/* 8000408C 0000018C  54 E0 80 1E */	slwi r0, r7, 0x10
/* 80004090 00000190  7C E4 23 78 */	or r4, r7, r4
/* 80004094 00000194  7C 60 03 78 */	or r0, r3, r0
/* 80004098 00000198  7C 87 03 78 */	or r7, r4, r0
lbl_8000409C:
/* 8000409C 0000019C  54 A0 D9 7F */	rlwinm. r0, r5, 0x1b, 5, 0x1f
/* 800040A0 000001A0  38 66 FF FD */	addi r3, r6, -3
/* 800040A4 000001A4  41 82 00 2C */	beq lbl_800040D0
lbl_800040A8:
/* 800040A8 000001A8  90 E3 00 04 */	stw r7, 4(r3)
/* 800040AC 000001AC  34 00 FF FF */	addic. r0, r0, -1
/* 800040B0 000001B0  90 E3 00 08 */	stw r7, 8(r3)
/* 800040B4 000001B4  90 E3 00 0C */	stw r7, 0xc(r3)
/* 800040B8 000001B8  90 E3 00 10 */	stw r7, 0x10(r3)
/* 800040BC 000001BC  90 E3 00 14 */	stw r7, 0x14(r3)
/* 800040C0 000001C0  90 E3 00 18 */	stw r7, 0x18(r3)
/* 800040C4 000001C4  90 E3 00 1C */	stw r7, 0x1c(r3)
/* 800040C8 000001C8  94 E3 00 20 */	stwu r7, 0x20(r3)
/* 800040CC 000001CC  40 82 FF DC */	bne lbl_800040A8
lbl_800040D0:
/* 800040D0 000001D0  54 A0 F7 7F */	rlwinm. r0, r5, 0x1e, 0x1d, 0x1f
/* 800040D4 000001D4  41 82 00 10 */	beq lbl_800040E4
lbl_800040D8:
/* 800040D8 000001D8  34 00 FF FF */	addic. r0, r0, -1
/* 800040DC 000001DC  94 E3 00 04 */	stwu r7, 4(r3)
/* 800040E0 000001E0  40 82 FF F8 */	bne lbl_800040D8
lbl_800040E4:
/* 800040E4 000001E4  38 C3 00 03 */	addi r6, r3, 3
/* 800040E8 000001E8  54 A5 07 BE */	clrlwi r5, r5, 0x1e
lbl_800040EC:
/* 800040EC 000001EC  2C 05 00 00 */	cmpwi r5, 0
/* 800040F0 000001F0  4D 82 00 20 */	beqlr
lbl_800040F4:
/* 800040F4 000001F4  34 A5 FF FF */	addic. r5, r5, -1
/* 800040F8 000001F8  9C E6 00 01 */	stbu r7, 1(r6)
/* 800040FC 000001FC  40 82 FF F8 */	bne lbl_800040F4
/* 80004100 00000200  4E 80 00 20 */	blr

.global memset
memset:
/* 80004104 00000204  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80004108 00000208  7C 08 02 A6 */	mflr r0
/* 8000410C 0000020C  90 01 00 14 */	stw r0, 0x14(r1)
/* 80004110 00000210  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80004114 00000214  7C 7F 1B 78 */	mr r31, r3
/* 80004118 00000218  4B FF FF 39 */	bl __fill_mem
/* 8000411C 0000021C  7F E3 FB 78 */	mr r3, r31
/* 80004120 00000220  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80004124 00000224  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80004128 00000228  7C 08 03 A6 */	mtlr r0
/* 8000412C 0000022C  38 21 00 10 */	addi r1, r1, 0x10
/* 80004130 00000230  4E 80 00 20 */	blr

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

.global strlen
strlen:
/* 801C6B64 001C27C4  38 83 FF FF */	addi r4, r3, -1
/* 801C6B68 001C27C8  38 60 FF FF */	li r3, -1
lbl_801C6B6C:
/* 801C6B6C 001C27CC  8C 04 00 01 */	lbzu r0, 1(r4)
/* 801C6B70 001C27D0  38 63 00 01 */	addi r3, r3, 1
/* 801C6B74 001C27D4  2C 00 00 00 */	cmpwi r0, 0
/* 801C6B78 001C27D8  40 82 FF F4 */	bne lbl_801C6B6C
/* 801C6B7C 001C27DC  4E 80 00 20 */	blr