summaryrefslogtreecommitdiff
path: root/asm/libstdc++
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2020-09-18 16:18:51 +0100
committerred031000 <rubenru09@aol.com>2020-09-18 16:18:51 +0100
commitacf90f87c4660c63dd8b9b0dcf127e6155d1201d (patch)
tree1f5c093ef2fb37dce461bad54f0c328823b4c6fd /asm/libstdc++
parentdce9d7dd3363fb3c788e9eef5d71a35e0356a02b (diff)
split global_destructor_chain and __init_cpp_exceptions
Diffstat (limited to 'asm/libstdc++')
-rw-r--r--asm/libstdc++/__init_cpp_exceptions.s45
-rw-r--r--asm/libstdc++/global_destructor_chain.s35
2 files changed, 80 insertions, 0 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++/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