diff options
author | Revo <projectrevotpp@hotmail.com> | 2020-09-18 12:59:05 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-18 12:59:05 -0400 |
commit | c5a9c461f9eb4485adcb943efb678566653000f2 (patch) | |
tree | d5904b4bb9e4d2dfdbc62c6e7c84388a768c981a /asm/libstdc++ | |
parent | 653e5621c97b149ffcdef362ae7dacc0b4f49d3e (diff) | |
parent | 49b37be36230d72fd97a48cb1fdfaf315330675d (diff) |
Merge pull request #50 from red031000/master
actually split the correct strlen
Diffstat (limited to 'asm/libstdc++')
-rw-r--r-- | asm/libstdc++/__init_cpp_exceptions.s | 45 | ||||
-rw-r--r-- | asm/libstdc++/__mem.s | 16 | ||||
-rw-r--r-- | asm/libstdc++/__va_arg.s | 62 | ||||
-rw-r--r-- | asm/libstdc++/global_destructor_chain.s | 35 |
4 files changed, 150 insertions, 8 deletions
diff --git a/asm/libstdc++/__init_cpp_exceptions.s b/asm/libstdc++/__init_cpp_exceptions.s new file mode 100644 index 0000000..aa1fa2a --- /dev/null +++ b/asm/libstdc++/__init_cpp_exceptions.s @@ -0,0 +1,45 @@ +.include "macros.inc" + +.section .text, "ax" # 0x80006980 - 0x803E1E60 + +.global __init_cpp_exceptions_tmp +__init_cpp_exceptions_tmp: #__init_cpp_exceptions +#causes "runtime sources 'global_destructor_chain.c' and '__init_cpp_exceptions.cpp' both need to be updated to latest +#version. Please contact Metrowerks support." error +#needs to be split correctly before renaming +/* 801C77C0 001C3420 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 801C77C4 001C3424 7C 08 02 A6 */ mflr r0 +/* 801C77C8 001C3428 90 01 00 14 */ stw r0, 0x14(r1) +/* 801C77CC 001C342C 80 0D 83 D8 */ lwz r0, lbl_8063D698-_SDA_BASE_(r13) +/* 801C77D0 001C3430 2C 00 FF FE */ cmpwi r0, -2 +/* 801C77D4 001C3434 40 82 00 18 */ bne lbl_801C77EC +/* 801C77D8 001C3438 3C 60 80 00 */ lis r3, lbl_80006948@ha +/* 801C77DC 001C343C 7C 44 13 78 */ mr r4, r2 +/* 801C77E0 001C3440 38 63 69 48 */ addi r3, r3, lbl_80006948@l +/* 801C77E4 001C3444 48 00 00 4D */ bl __register_fragment +/* 801C77E8 001C3448 90 6D 83 D8 */ stw r3, lbl_8063D698-_SDA_BASE_(r13) +lbl_801C77EC: +/* 801C77EC 001C344C 80 01 00 14 */ lwz r0, 0x14(r1) +/* 801C77F0 001C3450 7C 08 03 A6 */ mtlr r0 +/* 801C77F4 001C3454 38 21 00 10 */ addi r1, r1, 0x10 +/* 801C77F8 001C3458 4E 80 00 20 */ blr + +.global __fini_cpp_exceptions_tmp +__fini_cpp_exceptions_tmp: #__fini_cpp_exceptions +#causes "runtime sources 'global_destructor_chain.c' and '__init_cpp_exceptions.cpp' both need to be updated to latest +#version. Please contact Metrowerks support." error +#needs to be split correctly before renaming +/* 801C77FC 001C345C 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 801C7800 001C3460 7C 08 02 A6 */ mflr r0 +/* 801C7804 001C3464 90 01 00 14 */ stw r0, 0x14(r1) +/* 801C7808 001C3468 80 6D 83 D8 */ lwz r3, lbl_8063D698-_SDA_BASE_(r13) +/* 801C780C 001C346C 2C 03 FF FE */ cmpwi r3, -2 +/* 801C7810 001C3470 41 82 00 10 */ beq lbl_801C7820 +/* 801C7814 001C3474 48 00 00 51 */ bl func_801C7864 +/* 801C7818 001C3478 38 00 FF FE */ li r0, -2 +/* 801C781C 001C347C 90 0D 83 D8 */ stw r0, lbl_8063D698-_SDA_BASE_(r13) +lbl_801C7820: +/* 801C7820 001C3480 80 01 00 14 */ lwz r0, 0x14(r1) +/* 801C7824 001C3484 7C 08 03 A6 */ mtlr r0 +/* 801C7828 001C3488 38 21 00 10 */ addi r1, r1, 0x10 +/* 801C782C 001C348C 4E 80 00 20 */ blr diff --git a/asm/libstdc++/__mem.s b/asm/libstdc++/__mem.s index 3b57a0c..c138a48 100644 --- a/asm/libstdc++/__mem.s +++ b/asm/libstdc++/__mem.s @@ -106,11 +106,11 @@ memset: .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 +/* 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 diff --git a/asm/libstdc++/__va_arg.s b/asm/libstdc++/__va_arg.s new file mode 100644 index 0000000..9fa03cd --- /dev/null +++ b/asm/libstdc++/__va_arg.s @@ -0,0 +1,62 @@ +.include "macros.inc" + +.section .text, "ax" # 0x80006980 - 0x803E1E60 + +.global __va_arg +__va_arg: +/* 801C6B80 001C27E0 88 E3 00 00 */ lbz r7, 0(r3) +/* 801C6B84 001C27E4 2C 04 00 03 */ cmpwi r4, 3 +/* 801C6B88 001C27E8 7C 66 1B 78 */ mr r6, r3 +/* 801C6B8C 001C27EC 38 00 00 08 */ li r0, 8 +/* 801C6B90 001C27F0 7C E7 07 74 */ extsb r7, r7 +/* 801C6B94 001C27F4 39 00 00 04 */ li r8, 4 +/* 801C6B98 001C27F8 39 20 00 01 */ li r9, 1 +/* 801C6B9C 001C27FC 38 A0 00 00 */ li r5, 0 +/* 801C6BA0 001C2800 39 40 00 00 */ li r10, 0 +/* 801C6BA4 001C2804 39 60 00 04 */ li r11, 4 +/* 801C6BA8 001C2808 40 82 00 1C */ bne lbl_801C6BC4 +/* 801C6BAC 001C280C 88 E3 00 01 */ lbz r7, 1(r3) +/* 801C6BB0 001C2810 38 C3 00 01 */ addi r6, r3, 1 +/* 801C6BB4 001C2814 39 00 00 08 */ li r8, 8 +/* 801C6BB8 001C2818 39 40 00 20 */ li r10, 0x20 +/* 801C6BBC 001C281C 7C E7 07 74 */ extsb r7, r7 +/* 801C6BC0 001C2820 39 60 00 08 */ li r11, 8 +lbl_801C6BC4: +/* 801C6BC4 001C2824 2C 04 00 02 */ cmpwi r4, 2 +/* 801C6BC8 001C2828 40 82 00 1C */ bne lbl_801C6BE4 +/* 801C6BCC 001C282C 54 E0 07 FF */ clrlwi. r0, r7, 0x1f +/* 801C6BD0 001C2830 39 00 00 08 */ li r8, 8 +/* 801C6BD4 001C2834 38 00 00 07 */ li r0, 7 +/* 801C6BD8 001C2838 41 82 00 08 */ beq lbl_801C6BE0 +/* 801C6BDC 001C283C 38 A0 00 01 */ li r5, 1 +lbl_801C6BE0: +/* 801C6BE0 001C2840 39 20 00 02 */ li r9, 2 +lbl_801C6BE4: +/* 801C6BE4 001C2844 7C 07 00 00 */ cmpw r7, r0 +/* 801C6BE8 001C2848 40 80 00 24 */ bge lbl_801C6C0C +/* 801C6BEC 001C284C 7C E7 2A 14 */ add r7, r7, r5 +/* 801C6BF0 001C2850 80 63 00 08 */ lwz r3, 8(r3) +/* 801C6BF4 001C2854 7C A7 59 D6 */ mullw r5, r7, r11 +/* 801C6BF8 001C2858 7C 07 4A 14 */ add r0, r7, r9 +/* 801C6BFC 001C285C 7C 63 52 14 */ add r3, r3, r10 +/* 801C6C00 001C2860 98 06 00 00 */ stb r0, 0(r6) +/* 801C6C04 001C2864 7C A5 1A 14 */ add r5, r5, r3 +/* 801C6C08 001C2868 48 00 00 2C */ b lbl_801C6C34 +lbl_801C6C0C: +/* 801C6C0C 001C286C 38 A0 00 08 */ li r5, 8 +/* 801C6C10 001C2870 38 08 FF FF */ addi r0, r8, -1 +/* 801C6C14 001C2874 98 A6 00 00 */ stb r5, 0(r6) +/* 801C6C18 001C2878 7C 06 00 F8 */ nor r6, r0, r0 +/* 801C6C1C 001C287C 80 03 00 04 */ lwz r0, 4(r3) +/* 801C6C20 001C2880 7C A8 02 14 */ add r5, r8, r0 +/* 801C6C24 001C2884 38 05 FF FF */ addi r0, r5, -1 +/* 801C6C28 001C2888 7C C5 00 38 */ and r5, r6, r0 +/* 801C6C2C 001C288C 7C 05 42 14 */ add r0, r5, r8 +/* 801C6C30 001C2890 90 03 00 04 */ stw r0, 4(r3) +lbl_801C6C34: +/* 801C6C34 001C2894 2C 04 00 00 */ cmpwi r4, 0 +/* 801C6C38 001C2898 40 82 00 08 */ bne lbl_801C6C40 +/* 801C6C3C 001C289C 80 A5 00 00 */ lwz r5, 0(r5) +lbl_801C6C40: +/* 801C6C40 001C28A0 7C A3 2B 78 */ mr r3, r5 +/* 801C6C44 001C28A4 4E 80 00 20 */ blr diff --git a/asm/libstdc++/global_destructor_chain.s b/asm/libstdc++/global_destructor_chain.s new file mode 100644 index 0000000..1b2cfba --- /dev/null +++ b/asm/libstdc++/global_destructor_chain.s @@ -0,0 +1,35 @@ +.include "macros.inc" + +.section .text, "ax" # 0x80006980 - 0x803E1E60 + +.global __register_global_object_tmp +__register_global_object_tmp: +/* 801C6C48 001C28A8 80 0D 9F C0 */ lwz r0, lbl_8063F280-_SDA_BASE_(r13) +/* 801C6C4C 001C28AC 90 05 00 00 */ stw r0, 0(r5) +/* 801C6C50 001C28B0 90 85 00 04 */ stw r4, 4(r5) +/* 801C6C54 001C28B4 90 65 00 08 */ stw r3, 8(r5) +/* 801C6C58 001C28B8 90 AD 9F C0 */ stw r5, lbl_8063F280-_SDA_BASE_(r13) +/* 801C6C5C 001C28BC 4E 80 00 20 */ blr + +.global __destroy_global_chain_tmp +__destroy_global_chain_tmp: +/* 801C6C60 001C28C0 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 801C6C64 001C28C4 7C 08 02 A6 */ mflr r0 +/* 801C6C68 001C28C8 90 01 00 14 */ stw r0, 0x14(r1) +/* 801C6C6C 001C28CC 48 00 00 20 */ b lbl_801C6C8C +lbl_801C6C70: +/* 801C6C70 001C28D0 80 03 00 00 */ lwz r0, 0(r3) +/* 801C6C74 001C28D4 38 80 FF FF */ li r4, -1 +/* 801C6C78 001C28D8 90 0D 9F C0 */ stw r0, lbl_8063F280-_SDA_BASE_(r13) +/* 801C6C7C 001C28DC 81 83 00 04 */ lwz r12, 4(r3) +/* 801C6C80 001C28E0 80 63 00 08 */ lwz r3, 8(r3) +/* 801C6C84 001C28E4 7D 89 03 A6 */ mtctr r12 +/* 801C6C88 001C28E8 4E 80 04 21 */ bctrl +lbl_801C6C8C: +/* 801C6C8C 001C28EC 80 6D 9F C0 */ lwz r3, lbl_8063F280-_SDA_BASE_(r13) +/* 801C6C90 001C28F0 2C 03 00 00 */ cmpwi r3, 0 +/* 801C6C94 001C28F4 40 82 FF DC */ bne lbl_801C6C70 +/* 801C6C98 001C28F8 80 01 00 14 */ lwz r0, 0x14(r1) +/* 801C6C9C 001C28FC 7C 08 03 A6 */ mtlr r0 +/* 801C6CA0 001C2900 38 21 00 10 */ addi r1, r1, 0x10 +/* 801C6CA4 001C2904 4E 80 00 20 */ blr |