diff options
Diffstat (limited to 'asm/libstdc++')
-rw-r--r-- | asm/libstdc++/ansi_fp.s | 10 | ||||
-rw-r--r-- | asm/libstdc++/direct_io.s | 4 | ||||
-rw-r--r-- | asm/libstdc++/math_api.s | 87 | ||||
-rw-r--r-- | asm/libstdc++/mbstring.s | 105 | ||||
-rw-r--r-- | asm/libstdc++/mem.s | 125 | ||||
-rw-r--r-- | asm/libstdc++/mem_funcs.s | 219 | ||||
-rw-r--r-- | asm/libstdc++/misc_io.s | 10 |
7 files changed, 553 insertions, 7 deletions
diff --git a/asm/libstdc++/ansi_fp.s b/asm/libstdc++/ansi_fp.s index 3c7b8d7..5dfc596 100644 --- a/asm/libstdc++/ansi_fp.s +++ b/asm/libstdc++/ansi_fp.s @@ -1070,7 +1070,7 @@ __num2dec_internal: /* 801C88FC 001C455C 93 C1 00 80 */ stw r30, 0x80(r1)
/* 801C8900 001C4560 7C 7E 1B 78 */ mr r30, r3
/* 801C8904 001C4564 93 A1 00 7C */ stw r29, 0x7c(r1)
-/* 801C8908 001C4568 48 00 1E 11 */ bl func_801CA718
+/* 801C8908 001C4568 48 00 1E 11 */ bl __signbitd
/* 801C890C 001C456C C8 02 90 F8 */ lfd f0, lbl_806416F8-_SDA2_BASE_(r2)
/* 801C8910 001C4570 7C 03 00 D0 */ neg r0, r3
/* 801C8914 001C4574 7C 00 1B 78 */ or r0, r0, r3
@@ -1087,7 +1087,7 @@ __num2dec_internal: /* 801C8940 001C45A0 48 00 00 E8 */ b lbl_801C8A28
lbl_801C8944:
/* 801C8944 001C45A4 FC 20 F8 90 */ fmr f1, f31
-/* 801C8948 001C45A8 48 00 1D E9 */ bl func_801CA730
+/* 801C8948 001C45A8 48 00 1D E9 */ bl __fpclassifyd
/* 801C894C 001C45AC 2C 03 00 02 */ cmpwi r3, 2
/* 801C8950 001C45B0 41 81 00 38 */ bgt lbl_801C8988
/* 801C8954 001C45B4 38 60 00 00 */ li r3, 0
@@ -1096,7 +1096,7 @@ lbl_801C8944: /* 801C8960 001C45C0 9B FE 00 00 */ stb r31, 0(r30)
/* 801C8964 001C45C4 B0 7E 00 02 */ sth r3, 2(r30)
/* 801C8968 001C45C8 98 1E 00 04 */ stb r0, 4(r30)
-/* 801C896C 001C45CC 48 00 1D C5 */ bl func_801CA730
+/* 801C896C 001C45CC 48 00 1D C5 */ bl __fpclassifyd
/* 801C8970 001C45D0 2C 03 00 01 */ cmpwi r3, 1
/* 801C8974 001C45D4 38 00 00 49 */ li r0, 0x49
/* 801C8978 001C45D8 40 82 00 08 */ bne lbl_801C8980
@@ -1619,7 +1619,7 @@ lbl_801C9098: /* 801C90A0 001C4D00 48 00 B2 79 */ bl func_801D4318
/* 801C90A4 001C4D04 FF E0 08 90 */ fmr f31, f1
/* 801C90A8 001C4D08 D8 21 00 10 */ stfd f1, 0x10(r1)
-/* 801C90AC 001C4D0C 48 00 16 85 */ bl func_801CA730
+/* 801C90AC 001C4D0C 48 00 16 85 */ bl __fpclassifyd
/* 801C90B0 001C4D10 2C 03 00 02 */ cmpwi r3, 2
/* 801C90B4 001C4D14 40 82 00 0C */ bne lbl_801C90C0
/* 801C90B8 001C4D18 CB E2 91 18 */ lfd f31, lbl_80641718-_SDA2_BASE_(r2)
@@ -1657,7 +1657,7 @@ lbl_801C9114: /* 801C912C 001C4D8C 90 61 00 0C */ stw r3, 0xc(r1)
/* 801C9130 001C4D90 90 01 00 08 */ stw r0, 8(r1)
/* 801C9134 001C4D94 C8 21 00 08 */ lfd f1, 8(r1)
-/* 801C9138 001C4D98 48 00 15 F9 */ bl func_801CA730
+/* 801C9138 001C4D98 48 00 15 F9 */ bl __fpclassifyd
/* 801C913C 001C4D9C 2C 03 00 02 */ cmpwi r3, 2
/* 801C9140 001C4DA0 41 82 02 20 */ beq lbl_801C9360
/* 801C9144 001C4DA4 48 00 00 1C */ b lbl_801C9160
diff --git a/asm/libstdc++/direct_io.s b/asm/libstdc++/direct_io.s index 53d9585..6d75f9d 100644 --- a/asm/libstdc++/direct_io.s +++ b/asm/libstdc++/direct_io.s @@ -271,7 +271,7 @@ lbl_801C9928: lbl_801C9930:
/* 801C9930 001C5590 28 00 00 02 */ cmplwi r0, 2
/* 801C9934 001C5594 40 82 00 08 */ bne lbl_801C993C
-/* 801C9938 001C5598 48 00 0E 79 */ bl func_801CA7B0
+/* 801C9938 001C5598 48 00 0E 79 */ bl __stdio_atexit
lbl_801C993C:
/* 801C993C 001C559C 80 7C 00 04 */ lwz r3, 4(r28)
/* 801C9940 001C55A0 3B E0 00 01 */ li r31, 1
@@ -359,7 +359,7 @@ lbl_801C9A50: /* 801C9A64 001C56C4 41 82 00 28 */ beq lbl_801C9A8C
/* 801C9A68 001C56C8 7F 43 D3 78 */ mr r3, r26
/* 801C9A6C 001C56CC 38 80 00 0A */ li r4, 0xa
-/* 801C9A70 001C56D0 48 00 08 FD */ bl func_801CA36C
+/* 801C9A70 001C56D0 48 00 08 FD */ bl __memrchr
/* 801C9A74 001C56D4 2C 03 00 00 */ cmpwi r3, 0
/* 801C9A78 001C56D8 7C 79 1B 78 */ mr r25, r3
/* 801C9A7C 001C56DC 41 82 00 10 */ beq lbl_801C9A8C
diff --git a/asm/libstdc++/math_api.s b/asm/libstdc++/math_api.s new file mode 100644 index 0000000..847341c --- /dev/null +++ b/asm/libstdc++/math_api.s @@ -0,0 +1,87 @@ +.include "macros.inc" + +.section .text, "ax" # 0x80006980 - 0x803E1E60 + +.global __fpclassifyf +__fpclassifyf: +/* 801CA6B4 001C6314 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 801CA6B8 001C6318 3C 00 7F 80 */ lis r0, 0x7f80 +/* 801CA6BC 001C631C D0 21 00 08 */ stfs f1, 8(r1) +/* 801CA6C0 001C6320 80 81 00 08 */ lwz r4, 8(r1) +/* 801CA6C4 001C6324 54 83 00 50 */ rlwinm r3, r4, 0, 1, 8 +/* 801CA6C8 001C6328 7C 03 00 00 */ cmpw r3, r0 +/* 801CA6CC 001C632C 41 82 00 14 */ beq lbl_801CA6E0 +/* 801CA6D0 001C6330 40 80 00 3C */ bge lbl_801CA70C +/* 801CA6D4 001C6334 2C 03 00 00 */ cmpwi r3, 0 +/* 801CA6D8 001C6338 41 82 00 20 */ beq lbl_801CA6F8 +/* 801CA6DC 001C633C 48 00 00 30 */ b lbl_801CA70C +lbl_801CA6E0: +/* 801CA6E0 001C6340 54 83 02 7E */ clrlwi r3, r4, 9 +/* 801CA6E4 001C6344 7C 03 00 D0 */ neg r0, r3 +/* 801CA6E8 001C6348 7C 00 1B 78 */ or r0, r0, r3 +/* 801CA6EC 001C634C 7C 03 FE 70 */ srawi r3, r0, 0x1f +/* 801CA6F0 001C6350 38 63 00 02 */ addi r3, r3, 2 +/* 801CA6F4 001C6354 48 00 00 1C */ b lbl_801CA710 +lbl_801CA6F8: +/* 801CA6F8 001C6358 54 80 02 7F */ clrlwi. r0, r4, 9 +/* 801CA6FC 001C635C 38 60 00 03 */ li r3, 3 +/* 801CA700 001C6360 41 82 00 10 */ beq lbl_801CA710 +/* 801CA704 001C6364 38 60 00 05 */ li r3, 5 +/* 801CA708 001C6368 48 00 00 08 */ b lbl_801CA710 +lbl_801CA70C: +/* 801CA70C 001C636C 38 60 00 04 */ li r3, 4 +lbl_801CA710: +/* 801CA710 001C6370 38 21 00 10 */ addi r1, r1, 0x10 +/* 801CA714 001C6374 4E 80 00 20 */ blr + +.global __signbitd +__signbitd: +/* 801CA718 001C6378 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 801CA71C 001C637C D8 21 00 08 */ stfd f1, 8(r1) +/* 801CA720 001C6380 80 01 00 08 */ lwz r0, 8(r1) +/* 801CA724 001C6384 54 03 00 00 */ rlwinm r3, r0, 0, 0, 0 +/* 801CA728 001C6388 38 21 00 10 */ addi r1, r1, 0x10 +/* 801CA72C 001C638C 4E 80 00 20 */ blr + +.global __fpclassifyd +__fpclassifyd: +/* 801CA730 001C6390 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 801CA734 001C6394 3C 00 7F F0 */ lis r0, 0x7ff0 +/* 801CA738 001C6398 D8 21 00 08 */ stfd f1, 8(r1) +/* 801CA73C 001C639C 80 81 00 08 */ lwz r4, 8(r1) +/* 801CA740 001C63A0 54 83 00 56 */ rlwinm r3, r4, 0, 1, 0xb +/* 801CA744 001C63A4 7C 03 00 00 */ cmpw r3, r0 +/* 801CA748 001C63A8 41 82 00 14 */ beq lbl_801CA75C +/* 801CA74C 001C63AC 40 80 00 58 */ bge lbl_801CA7A4 +/* 801CA750 001C63B0 2C 03 00 00 */ cmpwi r3, 0 +/* 801CA754 001C63B4 41 82 00 2C */ beq lbl_801CA780 +/* 801CA758 001C63B8 48 00 00 4C */ b lbl_801CA7A4 +lbl_801CA75C: +/* 801CA75C 001C63BC 54 80 03 3F */ clrlwi. r0, r4, 0xc +/* 801CA760 001C63C0 40 82 00 10 */ bne lbl_801CA770 +/* 801CA764 001C63C4 80 01 00 0C */ lwz r0, 0xc(r1) +/* 801CA768 001C63C8 2C 00 00 00 */ cmpwi r0, 0 +/* 801CA76C 001C63CC 41 82 00 0C */ beq lbl_801CA778 +lbl_801CA770: +/* 801CA770 001C63D0 38 60 00 01 */ li r3, 1 +/* 801CA774 001C63D4 48 00 00 34 */ b lbl_801CA7A8 +lbl_801CA778: +/* 801CA778 001C63D8 38 60 00 02 */ li r3, 2 +/* 801CA77C 001C63DC 48 00 00 2C */ b lbl_801CA7A8 +lbl_801CA780: +/* 801CA780 001C63E0 54 80 03 3F */ clrlwi. r0, r4, 0xc +/* 801CA784 001C63E4 40 82 00 10 */ bne lbl_801CA794 +/* 801CA788 001C63E8 80 01 00 0C */ lwz r0, 0xc(r1) +/* 801CA78C 001C63EC 2C 00 00 00 */ cmpwi r0, 0 +/* 801CA790 001C63F0 41 82 00 0C */ beq lbl_801CA79C +lbl_801CA794: +/* 801CA794 001C63F4 38 60 00 05 */ li r3, 5 +/* 801CA798 001C63F8 48 00 00 10 */ b lbl_801CA7A8 +lbl_801CA79C: +/* 801CA79C 001C63FC 38 60 00 03 */ li r3, 3 +/* 801CA7A0 001C6400 48 00 00 08 */ b lbl_801CA7A8 +lbl_801CA7A4: +/* 801CA7A4 001C6404 38 60 00 04 */ li r3, 4 +lbl_801CA7A8: +/* 801CA7A8 001C6408 38 21 00 10 */ addi r1, r1, 0x10 +/* 801CA7AC 001C640C 4E 80 00 20 */ blr diff --git a/asm/libstdc++/mbstring.s b/asm/libstdc++/mbstring.s new file mode 100644 index 0000000..1e5faa8 --- /dev/null +++ b/asm/libstdc++/mbstring.s @@ -0,0 +1,105 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global mbtowc
+mbtowc:
+/* 801CA13C 001C5D9C 3C C0 80 42 */ lis r6, lbl_80422D48@ha
+/* 801CA140 001C5DA0 38 C6 2D 48 */ addi r6, r6, lbl_80422D48@l
+/* 801CA144 001C5DA4 80 C6 00 38 */ lwz r6, 0x38(r6)
+/* 801CA148 001C5DA8 81 86 00 20 */ lwz r12, 0x20(r6)
+/* 801CA14C 001C5DAC 7D 89 03 A6 */ mtctr r12
+/* 801CA150 001C5DB0 4E 80 04 20 */ bctr
+
+.global __mbtowc_noconv
+__mbtowc_noconv:
+/* 801CA154 001C5DB4 2C 04 00 00 */ cmpwi r4, 0
+/* 801CA158 001C5DB8 40 82 00 0C */ bne lbl_801CA164
+/* 801CA15C 001C5DBC 38 60 00 00 */ li r3, 0
+/* 801CA160 001C5DC0 4E 80 00 20 */ blr
+lbl_801CA164:
+/* 801CA164 001C5DC4 2C 05 00 00 */ cmpwi r5, 0
+/* 801CA168 001C5DC8 40 82 00 0C */ bne lbl_801CA174
+/* 801CA16C 001C5DCC 38 60 FF FF */ li r3, -1
+/* 801CA170 001C5DD0 4E 80 00 20 */ blr
+lbl_801CA174:
+/* 801CA174 001C5DD4 2C 03 00 00 */ cmpwi r3, 0
+/* 801CA178 001C5DD8 41 82 00 0C */ beq lbl_801CA184
+/* 801CA17C 001C5DDC 88 04 00 00 */ lbz r0, 0(r4)
+/* 801CA180 001C5DE0 B0 03 00 00 */ sth r0, 0(r3)
+lbl_801CA184:
+/* 801CA184 001C5DE4 88 04 00 00 */ lbz r0, 0(r4)
+/* 801CA188 001C5DE8 7C 00 07 75 */ extsb. r0, r0
+/* 801CA18C 001C5DEC 40 82 00 0C */ bne lbl_801CA198
+/* 801CA190 001C5DF0 38 60 00 00 */ li r3, 0
+/* 801CA194 001C5DF4 4E 80 00 20 */ blr
+lbl_801CA198:
+/* 801CA198 001C5DF8 38 60 00 01 */ li r3, 1
+/* 801CA19C 001C5DFC 4E 80 00 20 */ blr
+
+.global __wctomb_noconv
+__wctomb_noconv:
+/* 801CA1A0 001C5E00 2C 03 00 00 */ cmpwi r3, 0
+/* 801CA1A4 001C5E04 40 82 00 0C */ bne lbl_801CA1B0
+/* 801CA1A8 001C5E08 38 60 00 00 */ li r3, 0
+/* 801CA1AC 001C5E0C 4E 80 00 20 */ blr
+lbl_801CA1B0:
+/* 801CA1B0 001C5E10 98 83 00 00 */ stb r4, 0(r3)
+/* 801CA1B4 001C5E14 38 60 00 01 */ li r3, 1
+/* 801CA1B8 001C5E18 4E 80 00 20 */ blr
+
+.global wcstombs
+wcstombs:
+/* 801CA1BC 001C5E1C 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 801CA1C0 001C5E20 7C 08 02 A6 */ mflr r0
+/* 801CA1C4 001C5E24 2C 03 00 00 */ cmpwi r3, 0
+/* 801CA1C8 001C5E28 90 01 00 34 */ stw r0, 0x34(r1)
+/* 801CA1CC 001C5E2C BF 41 00 18 */ stmw r26, 0x18(r1)
+/* 801CA1D0 001C5E30 7C 7A 1B 78 */ mr r26, r3
+/* 801CA1D4 001C5E34 7C BB 2B 78 */ mr r27, r5
+/* 801CA1D8 001C5E38 3B A0 00 00 */ li r29, 0
+/* 801CA1DC 001C5E3C 41 82 00 0C */ beq lbl_801CA1E8
+/* 801CA1E0 001C5E40 2C 04 00 00 */ cmpwi r4, 0
+/* 801CA1E4 001C5E44 40 82 00 0C */ bne lbl_801CA1F0
+lbl_801CA1E8:
+/* 801CA1E8 001C5E48 38 60 00 00 */ li r3, 0
+/* 801CA1EC 001C5E4C 48 00 00 74 */ b lbl_801CA260
+lbl_801CA1F0:
+/* 801CA1F0 001C5E50 3F E0 80 42 */ lis r31, lbl_80422D48@ha
+/* 801CA1F4 001C5E54 7C 9C 23 78 */ mr r28, r4
+/* 801CA1F8 001C5E58 3B FF 2D 48 */ addi r31, r31, lbl_80422D48@l
+/* 801CA1FC 001C5E5C 48 00 00 58 */ b lbl_801CA254
+lbl_801CA200:
+/* 801CA200 001C5E60 A0 9C 00 00 */ lhz r4, 0(r28)
+/* 801CA204 001C5E64 2C 04 00 00 */ cmpwi r4, 0
+/* 801CA208 001C5E68 40 82 00 10 */ bne lbl_801CA218
+/* 801CA20C 001C5E6C 38 00 00 00 */ li r0, 0
+/* 801CA210 001C5E70 7C 1A E9 AE */ stbx r0, r26, r29
+/* 801CA214 001C5E74 48 00 00 48 */ b lbl_801CA25C
+lbl_801CA218:
+/* 801CA218 001C5E78 80 BF 00 38 */ lwz r5, 0x38(r31)
+/* 801CA21C 001C5E7C 38 61 00 08 */ addi r3, r1, 8
+/* 801CA220 001C5E80 81 85 00 24 */ lwz r12, 0x24(r5)
+/* 801CA224 001C5E84 7D 89 03 A6 */ mtctr r12
+/* 801CA228 001C5E88 3B 9C 00 02 */ addi r28, r28, 2
+/* 801CA22C 001C5E8C 4E 80 04 21 */ bctrl
+/* 801CA230 001C5E90 7C 1D 1A 14 */ add r0, r29, r3
+/* 801CA234 001C5E94 7C 7E 1B 78 */ mr r30, r3
+/* 801CA238 001C5E98 7C 00 D8 40 */ cmplw r0, r27
+/* 801CA23C 001C5E9C 41 81 00 20 */ bgt lbl_801CA25C
+/* 801CA240 001C5EA0 7F C5 F3 78 */ mr r5, r30
+/* 801CA244 001C5EA4 7C 7A EA 14 */ add r3, r26, r29
+/* 801CA248 001C5EA8 38 81 00 08 */ addi r4, r1, 8
+/* 801CA24C 001C5EAC 48 00 41 45 */ bl func_801CE390
+/* 801CA250 001C5EB0 7F BD F2 14 */ add r29, r29, r30
+lbl_801CA254:
+/* 801CA254 001C5EB4 7C 1D D8 40 */ cmplw r29, r27
+/* 801CA258 001C5EB8 40 81 FF A8 */ ble lbl_801CA200
+lbl_801CA25C:
+/* 801CA25C 001C5EBC 7F A3 EB 78 */ mr r3, r29
+lbl_801CA260:
+/* 801CA260 001C5EC0 BB 41 00 18 */ lmw r26, 0x18(r1)
+/* 801CA264 001C5EC4 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 801CA268 001C5EC8 7C 08 03 A6 */ mtlr r0
+/* 801CA26C 001C5ECC 38 21 00 30 */ addi r1, r1, 0x30
+/* 801CA270 001C5ED0 4E 80 00 20 */ blr
diff --git a/asm/libstdc++/mem.s b/asm/libstdc++/mem.s new file mode 100644 index 0000000..4d333ae --- /dev/null +++ b/asm/libstdc++/mem.s @@ -0,0 +1,125 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global memmove
+memmove:
+/* 801CA274 001C5ED4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 801CA278 001C5ED8 7C 08 02 A6 */ mflr r0
+/* 801CA27C 001C5EDC 7C 66 22 78 */ xor r6, r3, r4
+/* 801CA280 001C5EE0 28 05 00 20 */ cmplwi r5, 0x20
+/* 801CA284 001C5EE4 90 01 00 14 */ stw r0, 0x14(r1)
+/* 801CA288 001C5EE8 7C C0 00 34 */ cntlzw r0, r6
+/* 801CA28C 001C5EEC 7C 60 00 30 */ slw r0, r3, r0
+/* 801CA290 001C5EF0 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 801CA294 001C5EF4 7C 7F 1B 78 */ mr r31, r3
+/* 801CA298 001C5EF8 54 07 0F FE */ srwi r7, r0, 0x1f
+/* 801CA29C 001C5EFC 41 80 00 40 */ blt lbl_801CA2DC
+/* 801CA2A0 001C5F00 54 C0 07 BF */ clrlwi. r0, r6, 0x1e
+/* 801CA2A4 001C5F04 41 82 00 1C */ beq lbl_801CA2C0
+/* 801CA2A8 001C5F08 2C 07 00 00 */ cmpwi r7, 0
+/* 801CA2AC 001C5F0C 40 82 00 0C */ bne lbl_801CA2B8
+/* 801CA2B0 001C5F10 48 00 02 99 */ bl __copy_longs_unaligned
+/* 801CA2B4 001C5F14 48 00 00 20 */ b lbl_801CA2D4
+lbl_801CA2B8:
+/* 801CA2B8 001C5F18 48 00 03 51 */ bl __copy_longs_rev_unaligned
+/* 801CA2BC 001C5F1C 48 00 00 18 */ b lbl_801CA2D4
+lbl_801CA2C0:
+/* 801CA2C0 001C5F20 2C 07 00 00 */ cmpwi r7, 0
+/* 801CA2C4 001C5F24 40 82 00 0C */ bne lbl_801CA2D0
+/* 801CA2C8 001C5F28 48 00 01 1D */ bl __copy_longs_aligned
+/* 801CA2CC 001C5F2C 48 00 00 08 */ b lbl_801CA2D4
+lbl_801CA2D0:
+/* 801CA2D0 001C5F30 48 00 01 D1 */ bl __copy_longs_rev_aligned
+lbl_801CA2D4:
+/* 801CA2D4 001C5F34 7F E3 FB 78 */ mr r3, r31
+/* 801CA2D8 001C5F38 48 00 00 54 */ b lbl_801CA32C
+lbl_801CA2DC:
+/* 801CA2DC 001C5F3C 2C 07 00 00 */ cmpwi r7, 0
+/* 801CA2E0 001C5F40 40 82 00 28 */ bne lbl_801CA308
+/* 801CA2E4 001C5F44 38 84 FF FF */ addi r4, r4, -1
+/* 801CA2E8 001C5F48 38 63 FF FF */ addi r3, r3, -1
+/* 801CA2EC 001C5F4C 38 A5 00 01 */ addi r5, r5, 1
+/* 801CA2F0 001C5F50 48 00 00 0C */ b lbl_801CA2FC
+lbl_801CA2F4:
+/* 801CA2F4 001C5F54 8C 04 00 01 */ lbzu r0, 1(r4)
+/* 801CA2F8 001C5F58 9C 03 00 01 */ stbu r0, 1(r3)
+lbl_801CA2FC:
+/* 801CA2FC 001C5F5C 34 A5 FF FF */ addic. r5, r5, -1
+/* 801CA300 001C5F60 40 82 FF F4 */ bne lbl_801CA2F4
+/* 801CA304 001C5F64 48 00 00 24 */ b lbl_801CA328
+lbl_801CA308:
+/* 801CA308 001C5F68 7C 84 2A 14 */ add r4, r4, r5
+/* 801CA30C 001C5F6C 7C 63 2A 14 */ add r3, r3, r5
+/* 801CA310 001C5F70 38 A5 00 01 */ addi r5, r5, 1
+/* 801CA314 001C5F74 48 00 00 0C */ b lbl_801CA320
+lbl_801CA318:
+/* 801CA318 001C5F78 8C 04 FF FF */ lbzu r0, -1(r4)
+/* 801CA31C 001C5F7C 9C 03 FF FF */ stbu r0, -1(r3)
+lbl_801CA320:
+/* 801CA320 001C5F80 34 A5 FF FF */ addic. r5, r5, -1
+/* 801CA324 001C5F84 40 82 FF F4 */ bne lbl_801CA318
+lbl_801CA328:
+/* 801CA328 001C5F88 7F E3 FB 78 */ mr r3, r31
+lbl_801CA32C:
+/* 801CA32C 001C5F8C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 801CA330 001C5F90 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 801CA334 001C5F94 7C 08 03 A6 */ mtlr r0
+/* 801CA338 001C5F98 38 21 00 10 */ addi r1, r1, 0x10
+/* 801CA33C 001C5F9C 4E 80 00 20 */ blr
+
+.global memchr
+memchr:
+/* 801CA340 001C5FA0 54 84 06 3E */ clrlwi r4, r4, 0x18
+/* 801CA344 001C5FA4 38 63 FF FF */ addi r3, r3, -1
+/* 801CA348 001C5FA8 38 A5 00 01 */ addi r5, r5, 1
+/* 801CA34C 001C5FAC 48 00 00 10 */ b lbl_801CA35C
+lbl_801CA350:
+/* 801CA350 001C5FB0 8C 03 00 01 */ lbzu r0, 1(r3)
+/* 801CA354 001C5FB4 7C 00 20 40 */ cmplw r0, r4
+/* 801CA358 001C5FB8 4D 82 00 20 */ beqlr
+lbl_801CA35C:
+/* 801CA35C 001C5FBC 34 A5 FF FF */ addic. r5, r5, -1
+/* 801CA360 001C5FC0 40 82 FF F0 */ bne lbl_801CA350
+/* 801CA364 001C5FC4 38 60 00 00 */ li r3, 0
+/* 801CA368 001C5FC8 4E 80 00 20 */ blr
+
+.global __memrchr
+__memrchr:
+/* 801CA36C 001C5FCC 7C 63 2A 14 */ add r3, r3, r5
+/* 801CA370 001C5FD0 54 84 06 3E */ clrlwi r4, r4, 0x18
+/* 801CA374 001C5FD4 38 A5 00 01 */ addi r5, r5, 1
+/* 801CA378 001C5FD8 48 00 00 10 */ b lbl_801CA388
+lbl_801CA37C:
+/* 801CA37C 001C5FDC 8C 03 FF FF */ lbzu r0, -1(r3)
+/* 801CA380 001C5FE0 7C 00 20 40 */ cmplw r0, r4
+/* 801CA384 001C5FE4 4D 82 00 20 */ beqlr
+lbl_801CA388:
+/* 801CA388 001C5FE8 34 A5 FF FF */ addic. r5, r5, -1
+/* 801CA38C 001C5FEC 40 82 FF F0 */ bne lbl_801CA37C
+/* 801CA390 001C5FF0 38 60 00 00 */ li r3, 0
+/* 801CA394 001C5FF4 4E 80 00 20 */ blr
+
+.global memcmp
+memcmp:
+/* 801CA398 001C5FF8 38 E4 FF FF */ addi r7, r4, -1
+/* 801CA39C 001C5FFC 38 C3 FF FF */ addi r6, r3, -1
+/* 801CA3A0 001C6000 38 85 00 01 */ addi r4, r5, 1
+/* 801CA3A4 001C6004 48 00 00 30 */ b lbl_801CA3D4
+lbl_801CA3A8:
+/* 801CA3A8 001C6008 8C 66 00 01 */ lbzu r3, 1(r6)
+/* 801CA3AC 001C600C 8C 07 00 01 */ lbzu r0, 1(r7)
+/* 801CA3B0 001C6010 7C 03 00 40 */ cmplw r3, r0
+/* 801CA3B4 001C6014 41 82 00 20 */ beq lbl_801CA3D4
+/* 801CA3B8 001C6018 88 86 00 00 */ lbz r4, 0(r6)
+/* 801CA3BC 001C601C 38 60 00 01 */ li r3, 1
+/* 801CA3C0 001C6020 88 07 00 00 */ lbz r0, 0(r7)
+/* 801CA3C4 001C6024 7C 04 00 40 */ cmplw r4, r0
+/* 801CA3C8 001C6028 4C 80 00 20 */ bgelr
+/* 801CA3CC 001C602C 38 60 FF FF */ li r3, -1
+/* 801CA3D0 001C6030 4E 80 00 20 */ blr
+lbl_801CA3D4:
+/* 801CA3D4 001C6034 34 84 FF FF */ addic. r4, r4, -1
+/* 801CA3D8 001C6038 40 82 FF D0 */ bne lbl_801CA3A8
+/* 801CA3DC 001C603C 38 60 00 00 */ li r3, 0
+/* 801CA3E0 001C6040 4E 80 00 20 */ blr
diff --git a/asm/libstdc++/mem_funcs.s b/asm/libstdc++/mem_funcs.s new file mode 100644 index 0000000..426d2cb --- /dev/null +++ b/asm/libstdc++/mem_funcs.s @@ -0,0 +1,219 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global __copy_longs_aligned
+__copy_longs_aligned:
+/* 801CA3E4 001C6044 7C 03 00 D0 */ neg r0, r3
+/* 801CA3E8 001C6048 38 84 FF FF */ addi r4, r4, -1
+/* 801CA3EC 001C604C 54 06 07 BF */ clrlwi. r6, r0, 0x1e
+/* 801CA3F0 001C6050 38 63 FF FF */ addi r3, r3, -1
+/* 801CA3F4 001C6054 41 82 00 18 */ beq lbl_801CA40C
+/* 801CA3F8 001C6058 7C A6 28 50 */ subf r5, r6, r5
+lbl_801CA3FC:
+/* 801CA3FC 001C605C 8C 04 00 01 */ lbzu r0, 1(r4)
+/* 801CA400 001C6060 34 C6 FF FF */ addic. r6, r6, -1
+/* 801CA404 001C6064 9C 03 00 01 */ stbu r0, 1(r3)
+/* 801CA408 001C6068 40 82 FF F4 */ bne lbl_801CA3FC
+lbl_801CA40C:
+/* 801CA40C 001C606C 54 A6 D9 7F */ rlwinm. r6, r5, 0x1b, 5, 0x1f
+/* 801CA410 001C6070 38 E4 FF FD */ addi r7, r4, -3
+/* 801CA414 001C6074 38 83 FF FD */ addi r4, r3, -3
+/* 801CA418 001C6078 41 82 00 4C */ beq lbl_801CA464
+lbl_801CA41C:
+/* 801CA41C 001C607C 80 67 00 04 */ lwz r3, 4(r7)
+/* 801CA420 001C6080 34 C6 FF FF */ addic. r6, r6, -1
+/* 801CA424 001C6084 80 07 00 08 */ lwz r0, 8(r7)
+/* 801CA428 001C6088 90 64 00 04 */ stw r3, 4(r4)
+/* 801CA42C 001C608C 80 67 00 0C */ lwz r3, 0xc(r7)
+/* 801CA430 001C6090 90 04 00 08 */ stw r0, 8(r4)
+/* 801CA434 001C6094 80 07 00 10 */ lwz r0, 0x10(r7)
+/* 801CA438 001C6098 90 64 00 0C */ stw r3, 0xc(r4)
+/* 801CA43C 001C609C 80 67 00 14 */ lwz r3, 0x14(r7)
+/* 801CA440 001C60A0 90 04 00 10 */ stw r0, 0x10(r4)
+/* 801CA444 001C60A4 80 07 00 18 */ lwz r0, 0x18(r7)
+/* 801CA448 001C60A8 90 64 00 14 */ stw r3, 0x14(r4)
+/* 801CA44C 001C60AC 80 67 00 1C */ lwz r3, 0x1c(r7)
+/* 801CA450 001C60B0 90 04 00 18 */ stw r0, 0x18(r4)
+/* 801CA454 001C60B4 84 07 00 20 */ lwzu r0, 0x20(r7)
+/* 801CA458 001C60B8 90 64 00 1C */ stw r3, 0x1c(r4)
+/* 801CA45C 001C60BC 94 04 00 20 */ stwu r0, 0x20(r4)
+/* 801CA460 001C60C0 40 82 FF BC */ bne lbl_801CA41C
+lbl_801CA464:
+/* 801CA464 001C60C4 54 A3 F7 7F */ rlwinm. r3, r5, 0x1e, 0x1d, 0x1f
+/* 801CA468 001C60C8 41 82 00 14 */ beq lbl_801CA47C
+lbl_801CA46C:
+/* 801CA46C 001C60CC 84 07 00 04 */ lwzu r0, 4(r7)
+/* 801CA470 001C60D0 34 63 FF FF */ addic. r3, r3, -1
+/* 801CA474 001C60D4 94 04 00 04 */ stwu r0, 4(r4)
+/* 801CA478 001C60D8 40 82 FF F4 */ bne lbl_801CA46C
+lbl_801CA47C:
+/* 801CA47C 001C60DC 54 A5 07 BF */ clrlwi. r5, r5, 0x1e
+/* 801CA480 001C60E0 38 C7 00 03 */ addi r6, r7, 3
+/* 801CA484 001C60E4 38 64 00 03 */ addi r3, r4, 3
+/* 801CA488 001C60E8 4D 82 00 20 */ beqlr
+lbl_801CA48C:
+/* 801CA48C 001C60EC 8C 06 00 01 */ lbzu r0, 1(r6)
+/* 801CA490 001C60F0 34 A5 FF FF */ addic. r5, r5, -1
+/* 801CA494 001C60F4 9C 03 00 01 */ stbu r0, 1(r3)
+/* 801CA498 001C60F8 40 82 FF F4 */ bne lbl_801CA48C
+/* 801CA49C 001C60FC 4E 80 00 20 */ blr
+
+.global __copy_longs_rev_aligned
+__copy_longs_rev_aligned:
+/* 801CA4A0 001C6100 7C E3 2A 14 */ add r7, r3, r5
+/* 801CA4A4 001C6104 7C C4 2A 14 */ add r6, r4, r5
+/* 801CA4A8 001C6108 54 E3 07 BF */ clrlwi. r3, r7, 0x1e
+/* 801CA4AC 001C610C 41 82 00 18 */ beq lbl_801CA4C4
+/* 801CA4B0 001C6110 7C A3 28 50 */ subf r5, r3, r5
+lbl_801CA4B4:
+/* 801CA4B4 001C6114 8C 06 FF FF */ lbzu r0, -1(r6)
+/* 801CA4B8 001C6118 34 63 FF FF */ addic. r3, r3, -1
+/* 801CA4BC 001C611C 9C 07 FF FF */ stbu r0, -1(r7)
+/* 801CA4C0 001C6120 40 82 FF F4 */ bne lbl_801CA4B4
+lbl_801CA4C4:
+/* 801CA4C4 001C6124 54 A4 D9 7F */ rlwinm. r4, r5, 0x1b, 5, 0x1f
+/* 801CA4C8 001C6128 41 82 00 4C */ beq lbl_801CA514
+lbl_801CA4CC:
+/* 801CA4CC 001C612C 80 66 FF FC */ lwz r3, -4(r6)
+/* 801CA4D0 001C6130 34 84 FF FF */ addic. r4, r4, -1
+/* 801CA4D4 001C6134 80 06 FF F8 */ lwz r0, -8(r6)
+/* 801CA4D8 001C6138 90 67 FF FC */ stw r3, -4(r7)
+/* 801CA4DC 001C613C 80 66 FF F4 */ lwz r3, -0xc(r6)
+/* 801CA4E0 001C6140 90 07 FF F8 */ stw r0, -8(r7)
+/* 801CA4E4 001C6144 80 06 FF F0 */ lwz r0, -0x10(r6)
+/* 801CA4E8 001C6148 90 67 FF F4 */ stw r3, -0xc(r7)
+/* 801CA4EC 001C614C 80 66 FF EC */ lwz r3, -0x14(r6)
+/* 801CA4F0 001C6150 90 07 FF F0 */ stw r0, -0x10(r7)
+/* 801CA4F4 001C6154 80 06 FF E8 */ lwz r0, -0x18(r6)
+/* 801CA4F8 001C6158 90 67 FF EC */ stw r3, -0x14(r7)
+/* 801CA4FC 001C615C 80 66 FF E4 */ lwz r3, -0x1c(r6)
+/* 801CA500 001C6160 90 07 FF E8 */ stw r0, -0x18(r7)
+/* 801CA504 001C6164 84 06 FF E0 */ lwzu r0, -0x20(r6)
+/* 801CA508 001C6168 90 67 FF E4 */ stw r3, -0x1c(r7)
+/* 801CA50C 001C616C 94 07 FF E0 */ stwu r0, -0x20(r7)
+/* 801CA510 001C6170 40 82 FF BC */ bne lbl_801CA4CC
+lbl_801CA514:
+/* 801CA514 001C6174 54 A3 F7 7F */ rlwinm. r3, r5, 0x1e, 0x1d, 0x1f
+/* 801CA518 001C6178 41 82 00 14 */ beq lbl_801CA52C
+lbl_801CA51C:
+/* 801CA51C 001C617C 84 06 FF FC */ lwzu r0, -4(r6)
+/* 801CA520 001C6180 34 63 FF FF */ addic. r3, r3, -1
+/* 801CA524 001C6184 94 07 FF FC */ stwu r0, -4(r7)
+/* 801CA528 001C6188 40 82 FF F4 */ bne lbl_801CA51C
+lbl_801CA52C:
+/* 801CA52C 001C618C 54 A5 07 BF */ clrlwi. r5, r5, 0x1e
+/* 801CA530 001C6190 4D 82 00 20 */ beqlr
+lbl_801CA534:
+/* 801CA534 001C6194 8C 06 FF FF */ lbzu r0, -1(r6)
+/* 801CA538 001C6198 34 A5 FF FF */ addic. r5, r5, -1
+/* 801CA53C 001C619C 9C 07 FF FF */ stbu r0, -1(r7)
+/* 801CA540 001C61A0 40 82 FF F4 */ bne lbl_801CA534
+/* 801CA544 001C61A4 4E 80 00 20 */ blr
+
+.global __copy_longs_unaligned
+__copy_longs_unaligned:
+/* 801CA548 001C61A8 7C 03 00 D0 */ neg r0, r3
+/* 801CA54C 001C61AC 39 04 FF FF */ addi r8, r4, -1
+/* 801CA550 001C61B0 54 06 07 BF */ clrlwi. r6, r0, 0x1e
+/* 801CA554 001C61B4 38 63 FF FF */ addi r3, r3, -1
+/* 801CA558 001C61B8 41 82 00 18 */ beq lbl_801CA570
+/* 801CA55C 001C61BC 7C A6 28 50 */ subf r5, r6, r5
+lbl_801CA560:
+/* 801CA560 001C61C0 8C 08 00 01 */ lbzu r0, 1(r8)
+/* 801CA564 001C61C4 34 C6 FF FF */ addic. r6, r6, -1
+/* 801CA568 001C61C8 9C 03 00 01 */ stbu r0, 1(r3)
+/* 801CA56C 001C61CC 40 82 FF F4 */ bne lbl_801CA560
+lbl_801CA570:
+/* 801CA570 001C61D0 38 08 00 01 */ addi r0, r8, 1
+/* 801CA574 001C61D4 38 C3 FF FD */ addi r6, r3, -3
+/* 801CA578 001C61D8 54 09 07 BE */ clrlwi r9, r0, 0x1e
+/* 801CA57C 001C61DC 54 A7 E8 FE */ srwi r7, r5, 3
+/* 801CA580 001C61E0 7D 09 40 50 */ subf r8, r9, r8
+/* 801CA584 001C61E4 54 0A 1E F8 */ rlwinm r10, r0, 3, 0x1b, 0x1c
+/* 801CA588 001C61E8 84 88 00 01 */ lwzu r4, 1(r8)
+/* 801CA58C 001C61EC 21 6A 00 20 */ subfic r11, r10, 0x20
+lbl_801CA590:
+/* 801CA590 001C61F0 80 68 00 04 */ lwz r3, 4(r8)
+/* 801CA594 001C61F4 7C 84 50 30 */ slw r4, r4, r10
+/* 801CA598 001C61F8 34 E7 FF FF */ addic. r7, r7, -1
+/* 801CA59C 001C61FC 7C 60 5C 30 */ srw r0, r3, r11
+/* 801CA5A0 001C6200 7C 63 50 30 */ slw r3, r3, r10
+/* 801CA5A4 001C6204 7C 80 03 78 */ or r0, r4, r0
+/* 801CA5A8 001C6208 90 06 00 04 */ stw r0, 4(r6)
+/* 801CA5AC 001C620C 84 88 00 08 */ lwzu r4, 8(r8)
+/* 801CA5B0 001C6210 7C 80 5C 30 */ srw r0, r4, r11
+/* 801CA5B4 001C6214 7C 60 03 78 */ or r0, r3, r0
+/* 801CA5B8 001C6218 94 06 00 08 */ stwu r0, 8(r6)
+/* 801CA5BC 001C621C 40 82 FF D4 */ bne lbl_801CA590
+/* 801CA5C0 001C6220 54 A0 07 7B */ rlwinm. r0, r5, 0, 0x1d, 0x1d
+/* 801CA5C4 001C6224 41 82 00 18 */ beq lbl_801CA5DC
+/* 801CA5C8 001C6228 84 08 00 04 */ lwzu r0, 4(r8)
+/* 801CA5CC 001C622C 7C 83 50 30 */ slw r3, r4, r10
+/* 801CA5D0 001C6230 7C 00 5C 30 */ srw r0, r0, r11
+/* 801CA5D4 001C6234 7C 60 03 78 */ or r0, r3, r0
+/* 801CA5D8 001C6238 94 06 00 04 */ stwu r0, 4(r6)
+lbl_801CA5DC:
+/* 801CA5DC 001C623C 54 A5 07 BF */ clrlwi. r5, r5, 0x1e
+/* 801CA5E0 001C6240 38 88 00 03 */ addi r4, r8, 3
+/* 801CA5E4 001C6244 38 66 00 03 */ addi r3, r6, 3
+/* 801CA5E8 001C6248 4D 82 00 20 */ beqlr
+/* 801CA5EC 001C624C 20 09 00 04 */ subfic r0, r9, 4
+/* 801CA5F0 001C6250 7C 80 20 50 */ subf r4, r0, r4
+lbl_801CA5F4:
+/* 801CA5F4 001C6254 8C 04 00 01 */ lbzu r0, 1(r4)
+/* 801CA5F8 001C6258 34 A5 FF FF */ addic. r5, r5, -1
+/* 801CA5FC 001C625C 9C 03 00 01 */ stbu r0, 1(r3)
+/* 801CA600 001C6260 40 82 FF F4 */ bne lbl_801CA5F4
+/* 801CA604 001C6264 4E 80 00 20 */ blr
+
+.global __copy_longs_rev_unaligned
+__copy_longs_rev_unaligned:
+/* 801CA608 001C6268 7D 63 2A 14 */ add r11, r3, r5
+/* 801CA60C 001C626C 7D 44 2A 14 */ add r10, r4, r5
+/* 801CA610 001C6270 55 63 07 BF */ clrlwi. r3, r11, 0x1e
+/* 801CA614 001C6274 41 82 00 18 */ beq lbl_801CA62C
+/* 801CA618 001C6278 7C A3 28 50 */ subf r5, r3, r5
+lbl_801CA61C:
+/* 801CA61C 001C627C 8C 0A FF FF */ lbzu r0, -1(r10)
+/* 801CA620 001C6280 34 63 FF FF */ addic. r3, r3, -1
+/* 801CA624 001C6284 9C 0B FF FF */ stbu r0, -1(r11)
+/* 801CA628 001C6288 40 82 FF F4 */ bne lbl_801CA61C
+lbl_801CA62C:
+/* 801CA62C 001C628C 55 48 1E F8 */ rlwinm r8, r10, 3, 0x1b, 0x1c
+/* 801CA630 001C6290 55 47 07 BE */ clrlwi r7, r10, 0x1e
+/* 801CA634 001C6294 21 28 00 20 */ subfic r9, r8, 0x20
+/* 801CA638 001C6298 54 A6 E8 FE */ srwi r6, r5, 3
+/* 801CA63C 001C629C 20 07 00 04 */ subfic r0, r7, 4
+/* 801CA640 001C62A0 7D 4A 02 14 */ add r10, r10, r0
+/* 801CA644 001C62A4 84 8A FF FC */ lwzu r4, -4(r10)
+lbl_801CA648:
+/* 801CA648 001C62A8 80 0A FF FC */ lwz r0, -4(r10)
+/* 801CA64C 001C62AC 7C 83 4C 30 */ srw r3, r4, r9
+/* 801CA650 001C62B0 34 C6 FF FF */ addic. r6, r6, -1
+/* 801CA654 001C62B4 7C 04 40 30 */ slw r4, r0, r8
+/* 801CA658 001C62B8 7C 00 4C 30 */ srw r0, r0, r9
+/* 801CA65C 001C62BC 7C 83 1B 78 */ or r3, r4, r3
+/* 801CA660 001C62C0 90 6B FF FC */ stw r3, -4(r11)
+/* 801CA664 001C62C4 84 8A FF F8 */ lwzu r4, -8(r10)
+/* 801CA668 001C62C8 7C 83 40 30 */ slw r3, r4, r8
+/* 801CA66C 001C62CC 7C 60 03 78 */ or r0, r3, r0
+/* 801CA670 001C62D0 94 0B FF F8 */ stwu r0, -8(r11)
+/* 801CA674 001C62D4 40 82 FF D4 */ bne lbl_801CA648
+/* 801CA678 001C62D8 54 A0 07 7B */ rlwinm. r0, r5, 0, 0x1d, 0x1d
+/* 801CA67C 001C62DC 41 82 00 18 */ beq lbl_801CA694
+/* 801CA680 001C62E0 84 6A FF FC */ lwzu r3, -4(r10)
+/* 801CA684 001C62E4 7C 80 4C 30 */ srw r0, r4, r9
+/* 801CA688 001C62E8 7C 63 40 30 */ slw r3, r3, r8
+/* 801CA68C 001C62EC 7C 60 03 78 */ or r0, r3, r0
+/* 801CA690 001C62F0 94 0B FF FC */ stwu r0, -4(r11)
+lbl_801CA694:
+/* 801CA694 001C62F4 54 A5 07 BF */ clrlwi. r5, r5, 0x1e
+/* 801CA698 001C62F8 4D 82 00 20 */ beqlr
+/* 801CA69C 001C62FC 7D 4A 3A 14 */ add r10, r10, r7
+lbl_801CA6A0:
+/* 801CA6A0 001C6300 8C 0A FF FF */ lbzu r0, -1(r10)
+/* 801CA6A4 001C6304 34 A5 FF FF */ addic. r5, r5, -1
+/* 801CA6A8 001C6308 9C 0B FF FF */ stbu r0, -1(r11)
+/* 801CA6AC 001C630C 40 82 FF F4 */ bne lbl_801CA6A0
+/* 801CA6B0 001C6310 4E 80 00 20 */ blr
diff --git a/asm/libstdc++/misc_io.s b/asm/libstdc++/misc_io.s new file mode 100644 index 0000000..1ccfb0c --- /dev/null +++ b/asm/libstdc++/misc_io.s @@ -0,0 +1,10 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global __stdio_atexit
+__stdio_atexit:
+/* 801CA7B0 001C6410 3C 60 80 1C */ lis r3, __close_all@ha
+/* 801CA7B4 001C6414 38 63 78 94 */ addi r3, r3, __close_all@l
+/* 801CA7B8 001C6418 90 6D 9F D8 */ stw r3, lbl_8063F298-_SDA_BASE_(r13)
+/* 801CA7BC 001C641C 4E 80 00 20 */ blr
|