diff options
author | Revo <projectrevotpp@hotmail.com> | 2020-09-29 12:50:12 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-29 12:50:12 -0400 |
commit | bb28572125c45ec20f5fbf85120cd71fb2486bac (patch) | |
tree | 7847f3008d5208a45460af5805087f21b7613a4f /asm/libstdc++/file_io.s | |
parent | 1cc68edd6a6967c661579858ec0c1cf1d6d644d5 (diff) | |
parent | c285b7af502dfe463479cecfbb26313be3e5f5f4 (diff) |
Merge pull request #106 from mparisi20/master
Finish splitting nw4r::lyt and split more standard library modules
Diffstat (limited to 'asm/libstdc++/file_io.s')
-rw-r--r-- | asm/libstdc++/file_io.s | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/asm/libstdc++/file_io.s b/asm/libstdc++/file_io.s new file mode 100644 index 0000000..be053b1 --- /dev/null +++ b/asm/libstdc++/file_io.s @@ -0,0 +1,214 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global fclose
+fclose:
+/* 801C9BD0 001C5830 94 21 FF E0 */ stwu r1, -0x20(r1)
+/* 801C9BD4 001C5834 7C 08 02 A6 */ mflr r0
+/* 801C9BD8 001C5838 2C 03 00 00 */ cmpwi r3, 0
+/* 801C9BDC 001C583C 90 01 00 24 */ stw r0, 0x24(r1)
+/* 801C9BE0 001C5840 93 E1 00 1C */ stw r31, 0x1c(r1)
+/* 801C9BE4 001C5844 93 C1 00 18 */ stw r30, 0x18(r1)
+/* 801C9BE8 001C5848 93 A1 00 14 */ stw r29, 0x14(r1)
+/* 801C9BEC 001C584C 7C 7D 1B 78 */ mr r29, r3
+/* 801C9BF0 001C5850 40 82 00 0C */ bne lbl_801C9BFC
+/* 801C9BF4 001C5854 38 60 FF FF */ li r3, -1
+/* 801C9BF8 001C5858 48 00 00 78 */ b lbl_801C9C70
+lbl_801C9BFC:
+/* 801C9BFC 001C585C 80 03 00 04 */ lwz r0, 4(r3)
+/* 801C9C00 001C5860 54 00 57 7F */ rlwinm. r0, r0, 0xa, 0x1d, 0x1f
+/* 801C9C04 001C5864 40 82 00 0C */ bne lbl_801C9C10
+/* 801C9C08 001C5868 38 60 00 00 */ li r3, 0
+/* 801C9C0C 001C586C 48 00 00 64 */ b lbl_801C9C70
+lbl_801C9C10:
+/* 801C9C10 001C5870 48 00 00 7D */ bl fflush
+/* 801C9C14 001C5874 81 9D 00 44 */ lwz r12, 0x44(r29)
+/* 801C9C18 001C5878 7C 7E 1B 78 */ mr r30, r3
+/* 801C9C1C 001C587C 80 7D 00 00 */ lwz r3, 0(r29)
+/* 801C9C20 001C5880 7D 89 03 A6 */ mtctr r12
+/* 801C9C24 001C5884 4E 80 04 21 */ bctrl
+/* 801C9C28 001C5888 80 1D 00 08 */ lwz r0, 8(r29)
+/* 801C9C2C 001C588C 38 A0 00 00 */ li r5, 0
+/* 801C9C30 001C5890 80 9D 00 04 */ lwz r4, 4(r29)
+/* 801C9C34 001C5894 7C 7F 1B 78 */ mr r31, r3
+/* 801C9C38 001C5898 54 00 27 FF */ rlwinm. r0, r0, 4, 0x1f, 0x1f
+/* 801C9C3C 001C589C 90 BD 00 00 */ stw r5, 0(r29)
+/* 801C9C40 001C58A0 54 84 02 8C */ rlwinm r4, r4, 0, 0xa, 6
+/* 801C9C44 001C58A4 90 9D 00 04 */ stw r4, 4(r29)
+/* 801C9C48 001C58A8 41 82 00 0C */ beq lbl_801C9C54
+/* 801C9C4C 001C58AC 80 7D 00 1C */ lwz r3, 0x1c(r29)
+/* 801C9C50 001C58B0 4B E4 0B 75 */ bl func_8000A7C4
+lbl_801C9C54:
+/* 801C9C54 001C58B4 2C 1E 00 00 */ cmpwi r30, 0
+/* 801C9C58 001C58B8 38 00 00 00 */ li r0, 0
+/* 801C9C5C 001C58BC 40 82 00 0C */ bne lbl_801C9C68
+/* 801C9C60 001C58C0 2C 1F 00 00 */ cmpwi r31, 0
+/* 801C9C64 001C58C4 41 82 00 08 */ beq lbl_801C9C6C
+lbl_801C9C68:
+/* 801C9C68 001C58C8 38 00 00 01 */ li r0, 1
+lbl_801C9C6C:
+/* 801C9C6C 001C58CC 7C 60 00 D0 */ neg r3, r0
+lbl_801C9C70:
+/* 801C9C70 001C58D0 80 01 00 24 */ lwz r0, 0x24(r1)
+/* 801C9C74 001C58D4 83 E1 00 1C */ lwz r31, 0x1c(r1)
+/* 801C9C78 001C58D8 83 C1 00 18 */ lwz r30, 0x18(r1)
+/* 801C9C7C 001C58DC 83 A1 00 14 */ lwz r29, 0x14(r1)
+/* 801C9C80 001C58E0 7C 08 03 A6 */ mtlr r0
+/* 801C9C84 001C58E4 38 21 00 20 */ addi r1, r1, 0x20
+/* 801C9C88 001C58E8 4E 80 00 20 */ blr
+
+.global fflush
+fflush:
+/* 801C9C8C 001C58EC 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 801C9C90 001C58F0 7C 08 02 A6 */ mflr r0
+/* 801C9C94 001C58F4 2C 03 00 00 */ cmpwi r3, 0
+/* 801C9C98 001C58F8 90 01 00 14 */ stw r0, 0x14(r1)
+/* 801C9C9C 001C58FC 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 801C9CA0 001C5900 7C 7F 1B 78 */ mr r31, r3
+/* 801C9CA4 001C5904 93 C1 00 08 */ stw r30, 8(r1)
+/* 801C9CA8 001C5908 40 82 00 0C */ bne lbl_801C9CB4
+/* 801C9CAC 001C590C 4B FF DD 11 */ bl __flush_all
+/* 801C9CB0 001C5910 48 00 00 F8 */ b lbl_801C9DA8
+lbl_801C9CB4:
+/* 801C9CB4 001C5914 88 03 00 0A */ lbz r0, 0xa(r3)
+/* 801C9CB8 001C5918 2C 00 00 00 */ cmpwi r0, 0
+/* 801C9CBC 001C591C 40 82 00 10 */ bne lbl_801C9CCC
+/* 801C9CC0 001C5920 80 83 00 04 */ lwz r4, 4(r3)
+/* 801C9CC4 001C5924 54 80 57 7F */ rlwinm. r0, r4, 0xa, 0x1d, 0x1f
+/* 801C9CC8 001C5928 40 82 00 0C */ bne lbl_801C9CD4
+lbl_801C9CCC:
+/* 801C9CCC 001C592C 38 60 FF FF */ li r3, -1
+/* 801C9CD0 001C5930 48 00 00 D8 */ b lbl_801C9DA8
+lbl_801C9CD4:
+/* 801C9CD4 001C5934 54 80 2F 7E */ rlwinm r0, r4, 5, 0x1d, 0x1f
+/* 801C9CD8 001C5938 28 00 00 01 */ cmplwi r0, 1
+/* 801C9CDC 001C593C 40 82 00 0C */ bne lbl_801C9CE8
+/* 801C9CE0 001C5940 38 60 00 00 */ li r3, 0
+/* 801C9CE4 001C5944 48 00 00 C4 */ b lbl_801C9DA8
+lbl_801C9CE8:
+/* 801C9CE8 001C5948 80 83 00 08 */ lwz r4, 8(r3)
+/* 801C9CEC 001C594C 54 80 1F 7E */ srwi r0, r4, 0x1d
+/* 801C9CF0 001C5950 28 00 00 03 */ cmplwi r0, 3
+/* 801C9CF4 001C5954 41 80 00 10 */ blt lbl_801C9D04
+/* 801C9CF8 001C5958 38 00 00 02 */ li r0, 2
+/* 801C9CFC 001C595C 50 04 E8 04 */ rlwimi r4, r0, 0x1d, 0, 2
+/* 801C9D00 001C5960 90 83 00 08 */ stw r4, 8(r3)
+lbl_801C9D04:
+/* 801C9D04 001C5964 80 03 00 08 */ lwz r0, 8(r3)
+/* 801C9D08 001C5968 54 00 1F 7E */ srwi r0, r0, 0x1d
+/* 801C9D0C 001C596C 28 00 00 02 */ cmplwi r0, 2
+/* 801C9D10 001C5970 40 82 00 0C */ bne lbl_801C9D1C
+/* 801C9D14 001C5974 38 00 00 00 */ li r0, 0
+/* 801C9D18 001C5978 90 03 00 28 */ stw r0, 0x28(r3)
+lbl_801C9D1C:
+/* 801C9D1C 001C597C 80 83 00 08 */ lwz r4, 8(r3)
+/* 801C9D20 001C5980 54 80 1F 7E */ srwi r0, r4, 0x1d
+/* 801C9D24 001C5984 28 00 00 01 */ cmplwi r0, 1
+/* 801C9D28 001C5988 41 82 00 14 */ beq lbl_801C9D3C
+/* 801C9D2C 001C598C 54 80 00 FE */ clrlwi r0, r4, 3
+/* 801C9D30 001C5990 90 03 00 08 */ stw r0, 8(r3)
+/* 801C9D34 001C5994 38 60 00 00 */ li r3, 0
+/* 801C9D38 001C5998 48 00 00 70 */ b lbl_801C9DA8
+lbl_801C9D3C:
+/* 801C9D3C 001C599C 80 03 00 04 */ lwz r0, 4(r3)
+/* 801C9D40 001C59A0 54 00 57 7E */ rlwinm r0, r0, 0xa, 0x1d, 0x1f
+/* 801C9D44 001C59A4 28 00 00 01 */ cmplwi r0, 1
+/* 801C9D48 001C59A8 41 82 00 0C */ beq lbl_801C9D54
+/* 801C9D4C 001C59AC 3B C0 00 00 */ li r30, 0
+/* 801C9D50 001C59B0 48 00 00 10 */ b lbl_801C9D60
+lbl_801C9D54:
+/* 801C9D54 001C59B4 7F E3 FB 78 */ mr r3, r31
+/* 801C9D58 001C59B8 48 00 01 D1 */ bl ftell
+/* 801C9D5C 001C59BC 7C 7E 1B 78 */ mr r30, r3
+lbl_801C9D60:
+/* 801C9D60 001C59C0 7F E3 FB 78 */ mr r3, r31
+/* 801C9D64 001C59C4 38 80 00 00 */ li r4, 0
+/* 801C9D68 001C59C8 4B FF F7 65 */ bl __flush_buffer
+/* 801C9D6C 001C59CC 2C 03 00 00 */ cmpwi r3, 0
+/* 801C9D70 001C59D0 41 82 00 1C */ beq lbl_801C9D8C
+/* 801C9D74 001C59D4 38 60 00 01 */ li r3, 1
+/* 801C9D78 001C59D8 38 00 00 00 */ li r0, 0
+/* 801C9D7C 001C59DC 98 7F 00 0A */ stb r3, 0xa(r31)
+/* 801C9D80 001C59E0 38 60 FF FF */ li r3, -1
+/* 801C9D84 001C59E4 90 1F 00 28 */ stw r0, 0x28(r31)
+/* 801C9D88 001C59E8 48 00 00 20 */ b lbl_801C9DA8
+lbl_801C9D8C:
+/* 801C9D8C 001C59EC 80 1F 00 08 */ lwz r0, 8(r31)
+/* 801C9D90 001C59F0 38 80 00 00 */ li r4, 0
+/* 801C9D94 001C59F4 93 DF 00 18 */ stw r30, 0x18(r31)
+/* 801C9D98 001C59F8 38 60 00 00 */ li r3, 0
+/* 801C9D9C 001C59FC 54 00 00 FE */ clrlwi r0, r0, 3
+/* 801C9DA0 001C5A00 90 1F 00 08 */ stw r0, 8(r31)
+/* 801C9DA4 001C5A04 90 9F 00 28 */ stw r4, 0x28(r31)
+lbl_801C9DA8:
+/* 801C9DA8 001C5A08 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 801C9DAC 001C5A0C 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 801C9DB0 001C5A10 83 C1 00 08 */ lwz r30, 8(r1)
+/* 801C9DB4 001C5A14 7C 08 03 A6 */ mtlr r0
+/* 801C9DB8 001C5A18 38 21 00 10 */ addi r1, r1, 0x10
+/* 801C9DBC 001C5A1C 4E 80 00 20 */ blr
+
+.global __msl_strnicmp
+__msl_strnicmp:
+/* 801C9DC0 001C5A20 3C C0 80 42 */ lis r6, lbl_80422D48@ha
+/* 801C9DC4 001C5A24 38 C6 2D 48 */ addi r6, r6, lbl_80422D48@l
+/* 801C9DC8 001C5A28 80 C6 00 38 */ lwz r6, 0x38(r6)
+/* 801C9DCC 001C5A2C 7C A9 03 A6 */ mtctr r5
+/* 801C9DD0 001C5A30 2C 05 00 00 */ cmpwi r5, 0
+/* 801C9DD4 001C5A34 40 81 00 A4 */ ble lbl_801C9E78
+lbl_801C9DD8:
+/* 801C9DD8 001C5A38 88 A3 00 00 */ lbz r5, 0(r3)
+/* 801C9DDC 001C5A3C 38 00 00 00 */ li r0, 0
+/* 801C9DE0 001C5A40 38 63 00 01 */ addi r3, r3, 1
+/* 801C9DE4 001C5A44 7C A7 07 75 */ extsb. r7, r5
+/* 801C9DE8 001C5A48 41 80 00 0C */ blt lbl_801C9DF4
+/* 801C9DEC 001C5A4C 2C 07 01 00 */ cmpwi r7, 0x100
+/* 801C9DF0 001C5A50 41 80 00 08 */ blt lbl_801C9DF8
+lbl_801C9DF4:
+/* 801C9DF4 001C5A54 38 00 00 01 */ li r0, 1
+lbl_801C9DF8:
+/* 801C9DF8 001C5A58 2C 00 00 00 */ cmpwi r0, 0
+/* 801C9DFC 001C5A5C 41 82 00 08 */ beq lbl_801C9E04
+/* 801C9E00 001C5A60 48 00 00 0C */ b lbl_801C9E0C
+lbl_801C9E04:
+/* 801C9E04 001C5A64 80 A6 00 10 */ lwz r5, 0x10(r6)
+/* 801C9E08 001C5A68 7C E5 38 AE */ lbzx r7, r5, r7
+lbl_801C9E0C:
+/* 801C9E0C 001C5A6C 88 A4 00 00 */ lbz r5, 0(r4)
+/* 801C9E10 001C5A70 7C E8 07 74 */ extsb r8, r7
+/* 801C9E14 001C5A74 38 00 00 00 */ li r0, 0
+/* 801C9E18 001C5A78 38 84 00 01 */ addi r4, r4, 1
+/* 801C9E1C 001C5A7C 7C A7 07 75 */ extsb. r7, r5
+/* 801C9E20 001C5A80 41 80 00 0C */ blt lbl_801C9E2C
+/* 801C9E24 001C5A84 2C 07 01 00 */ cmpwi r7, 0x100
+/* 801C9E28 001C5A88 41 80 00 08 */ blt lbl_801C9E30
+lbl_801C9E2C:
+/* 801C9E2C 001C5A8C 38 00 00 01 */ li r0, 1
+lbl_801C9E30:
+/* 801C9E30 001C5A90 2C 00 00 00 */ cmpwi r0, 0
+/* 801C9E34 001C5A94 41 82 00 08 */ beq lbl_801C9E3C
+/* 801C9E38 001C5A98 48 00 00 0C */ b lbl_801C9E44
+lbl_801C9E3C:
+/* 801C9E3C 001C5A9C 80 A6 00 10 */ lwz r5, 0x10(r6)
+/* 801C9E40 001C5AA0 7C E5 38 AE */ lbzx r7, r5, r7
+lbl_801C9E44:
+/* 801C9E44 001C5AA4 7C E0 07 74 */ extsb r0, r7
+/* 801C9E48 001C5AA8 7C 08 00 00 */ cmpw r8, r0
+/* 801C9E4C 001C5AAC 40 80 00 0C */ bge lbl_801C9E58
+/* 801C9E50 001C5AB0 38 60 FF FF */ li r3, -1
+/* 801C9E54 001C5AB4 4E 80 00 20 */ blr
+lbl_801C9E58:
+/* 801C9E58 001C5AB8 40 81 00 0C */ ble lbl_801C9E64
+/* 801C9E5C 001C5ABC 38 60 00 01 */ li r3, 1
+/* 801C9E60 001C5AC0 4E 80 00 20 */ blr
+lbl_801C9E64:
+/* 801C9E64 001C5AC4 2C 08 00 00 */ cmpwi r8, 0
+/* 801C9E68 001C5AC8 40 82 00 0C */ bne lbl_801C9E74
+/* 801C9E6C 001C5ACC 38 60 00 00 */ li r3, 0
+/* 801C9E70 001C5AD0 4E 80 00 20 */ blr
+lbl_801C9E74:
+/* 801C9E74 001C5AD4 42 00 FF 64 */ bdnz lbl_801C9DD8
+lbl_801C9E78:
+/* 801C9E78 001C5AD8 38 60 00 00 */ li r3, 0
+/* 801C9E7C 001C5ADC 4E 80 00 20 */ blr
|