summaryrefslogtreecommitdiff
path: root/asm/libstdc++/__mem.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/libstdc++/__mem.s')
-rw-r--r--asm/libstdc++/__mem.s116
1 files changed, 116 insertions, 0 deletions
diff --git a/asm/libstdc++/__mem.s b/asm/libstdc++/__mem.s
new file mode 100644
index 0000000..3b57a0c
--- /dev/null
+++ b/asm/libstdc++/__mem.s
@@ -0,0 +1,116 @@
+.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
+
+.global __fill_mem
+__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:
+/* 801D71F4 001D2E54 38 83 FF FF */ addi r4, r3, -1
+/* 801D71F8 001D2E58 38 60 FF FF */ li r3, -1
+lbl_801D71FC:
+/* 801D71FC 001D2E5C 8C 04 00 01 */ lbzu r0, 1(r4)
+/* 801D7200 001D2E60 38 63 00 01 */ addi r3, r3, 1
+/* 801D7204 001D2E64 28 00 00 00 */ cmplwi r0, 0
+/* 801D7208 001D2E68 40 82 FF F4 */ bne lbl_801D71FC
+/* 801D720C 001D2E6C 4E 80 00 20 */ blr