summaryrefslogtreecommitdiff
path: root/asm/SDK/OS/OSAlloc.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/SDK/OS/OSAlloc.s')
-rw-r--r--asm/SDK/OS/OSAlloc.s167
1 files changed, 167 insertions, 0 deletions
diff --git a/asm/SDK/OS/OSAlloc.s b/asm/SDK/OS/OSAlloc.s
new file mode 100644
index 0000000..766a0b4
--- /dev/null
+++ b/asm/SDK/OS/OSAlloc.s
@@ -0,0 +1,167 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global DLInsert
+DLInsert:
+/* 80269EB0 00265B10 7C 67 1B 78 */ mr r7, r3
+/* 80269EB4 00265B14 38 C0 00 00 */ li r6, 0
+/* 80269EB8 00265B18 48 00 00 14 */ b lbl_80269ECC
+lbl_80269EBC:
+/* 80269EBC 00265B1C 7C 04 38 40 */ cmplw r4, r7
+/* 80269EC0 00265B20 40 81 00 14 */ ble lbl_80269ED4
+/* 80269EC4 00265B24 7C E6 3B 78 */ mr r6, r7
+/* 80269EC8 00265B28 80 E7 00 04 */ lwz r7, 4(r7)
+lbl_80269ECC:
+/* 80269ECC 00265B2C 2C 07 00 00 */ cmpwi r7, 0
+/* 80269ED0 00265B30 40 82 FF EC */ bne lbl_80269EBC
+lbl_80269ED4:
+/* 80269ED4 00265B34 2C 07 00 00 */ cmpwi r7, 0
+/* 80269ED8 00265B38 90 E4 00 04 */ stw r7, 4(r4)
+/* 80269EDC 00265B3C 90 C4 00 00 */ stw r6, 0(r4)
+/* 80269EE0 00265B40 41 82 00 38 */ beq lbl_80269F18
+/* 80269EE4 00265B44 90 87 00 00 */ stw r4, 0(r7)
+/* 80269EE8 00265B48 80 A4 00 08 */ lwz r5, 8(r4)
+/* 80269EEC 00265B4C 7C 04 2A 14 */ add r0, r4, r5
+/* 80269EF0 00265B50 7C 00 38 40 */ cmplw r0, r7
+/* 80269EF4 00265B54 40 82 00 24 */ bne lbl_80269F18
+/* 80269EF8 00265B58 80 07 00 08 */ lwz r0, 8(r7)
+/* 80269EFC 00265B5C 7C 05 02 14 */ add r0, r5, r0
+/* 80269F00 00265B60 90 04 00 08 */ stw r0, 8(r4)
+/* 80269F04 00265B64 80 E7 00 04 */ lwz r7, 4(r7)
+/* 80269F08 00265B68 2C 07 00 00 */ cmpwi r7, 0
+/* 80269F0C 00265B6C 90 E4 00 04 */ stw r7, 4(r4)
+/* 80269F10 00265B70 41 82 00 08 */ beq lbl_80269F18
+/* 80269F14 00265B74 90 87 00 00 */ stw r4, 0(r7)
+lbl_80269F18:
+/* 80269F18 00265B78 2C 06 00 00 */ cmpwi r6, 0
+/* 80269F1C 00265B7C 41 82 00 38 */ beq lbl_80269F54
+/* 80269F20 00265B80 90 86 00 04 */ stw r4, 4(r6)
+/* 80269F24 00265B84 80 A6 00 08 */ lwz r5, 8(r6)
+/* 80269F28 00265B88 7C 06 2A 14 */ add r0, r6, r5
+/* 80269F2C 00265B8C 7C 00 20 40 */ cmplw r0, r4
+/* 80269F30 00265B90 4C 82 00 20 */ bnelr
+/* 80269F34 00265B94 80 04 00 08 */ lwz r0, 8(r4)
+/* 80269F38 00265B98 2C 07 00 00 */ cmpwi r7, 0
+/* 80269F3C 00265B9C 7C 05 02 14 */ add r0, r5, r0
+/* 80269F40 00265BA0 90 06 00 08 */ stw r0, 8(r6)
+/* 80269F44 00265BA4 90 E6 00 04 */ stw r7, 4(r6)
+/* 80269F48 00265BA8 4D 82 00 20 */ beqlr
+/* 80269F4C 00265BAC 90 C7 00 00 */ stw r6, 0(r7)
+/* 80269F50 00265BB0 4E 80 00 20 */ blr
+lbl_80269F54:
+/* 80269F54 00265BB4 7C 83 23 78 */ mr r3, r4
+/* 80269F58 00265BB8 4E 80 00 20 */ blr
+
+.global OSAllocFromHeap
+OSAllocFromHeap:
+/* 80269F5C 00265BBC 1C 63 00 0C */ mulli r3, r3, 0xc
+/* 80269F60 00265BC0 80 AD A7 B8 */ lwz r5, lbl_8063FA78-_SDA_BASE_(r13)
+/* 80269F64 00265BC4 38 04 00 3F */ addi r0, r4, 0x3f
+/* 80269F68 00265BC8 7C A5 1A 14 */ add r5, r5, r3
+/* 80269F6C 00265BCC 54 04 00 34 */ rlwinm r4, r0, 0, 0, 0x1a
+/* 80269F70 00265BD0 80 65 00 04 */ lwz r3, 4(r5)
+/* 80269F74 00265BD4 7C 66 1B 78 */ mr r6, r3
+/* 80269F78 00265BD8 48 00 00 14 */ b lbl_80269F8C
+lbl_80269F7C:
+/* 80269F7C 00265BDC 80 06 00 08 */ lwz r0, 8(r6)
+/* 80269F80 00265BE0 7C 04 00 00 */ cmpw r4, r0
+/* 80269F84 00265BE4 40 81 00 10 */ ble lbl_80269F94
+/* 80269F88 00265BE8 80 C6 00 04 */ lwz r6, 4(r6)
+lbl_80269F8C:
+/* 80269F8C 00265BEC 2C 06 00 00 */ cmpwi r6, 0
+/* 80269F90 00265BF0 40 82 FF EC */ bne lbl_80269F7C
+lbl_80269F94:
+/* 80269F94 00265BF4 2C 06 00 00 */ cmpwi r6, 0
+/* 80269F98 00265BF8 40 82 00 0C */ bne lbl_80269FA4
+/* 80269F9C 00265BFC 38 60 00 00 */ li r3, 0
+/* 80269FA0 00265C00 4E 80 00 20 */ blr
+lbl_80269FA4:
+/* 80269FA4 00265C04 80 06 00 08 */ lwz r0, 8(r6)
+/* 80269FA8 00265C08 7C 04 00 50 */ subf r0, r4, r0
+/* 80269FAC 00265C0C 28 00 00 40 */ cmplwi r0, 0x40
+/* 80269FB0 00265C10 40 80 00 3C */ bge lbl_80269FEC
+/* 80269FB4 00265C14 80 86 00 04 */ lwz r4, 4(r6)
+/* 80269FB8 00265C18 2C 04 00 00 */ cmpwi r4, 0
+/* 80269FBC 00265C1C 41 82 00 0C */ beq lbl_80269FC8
+/* 80269FC0 00265C20 80 06 00 00 */ lwz r0, 0(r6)
+/* 80269FC4 00265C24 90 04 00 00 */ stw r0, 0(r4)
+lbl_80269FC8:
+/* 80269FC8 00265C28 80 86 00 00 */ lwz r4, 0(r6)
+/* 80269FCC 00265C2C 2C 04 00 00 */ cmpwi r4, 0
+/* 80269FD0 00265C30 40 82 00 0C */ bne lbl_80269FDC
+/* 80269FD4 00265C34 80 66 00 04 */ lwz r3, 4(r6)
+/* 80269FD8 00265C38 48 00 00 0C */ b lbl_80269FE4
+lbl_80269FDC:
+/* 80269FDC 00265C3C 80 06 00 04 */ lwz r0, 4(r6)
+/* 80269FE0 00265C40 90 04 00 04 */ stw r0, 4(r4)
+lbl_80269FE4:
+/* 80269FE4 00265C44 90 65 00 04 */ stw r3, 4(r5)
+/* 80269FE8 00265C48 48 00 00 44 */ b lbl_8026A02C
+lbl_80269FEC:
+/* 80269FEC 00265C4C 90 86 00 08 */ stw r4, 8(r6)
+/* 80269FF0 00265C50 7C 86 22 14 */ add r4, r6, r4
+/* 80269FF4 00265C54 90 04 00 08 */ stw r0, 8(r4)
+/* 80269FF8 00265C58 80 06 00 00 */ lwz r0, 0(r6)
+/* 80269FFC 00265C5C 90 04 00 00 */ stw r0, 0(r4)
+/* 8026A000 00265C60 80 66 00 04 */ lwz r3, 4(r6)
+/* 8026A004 00265C64 2C 03 00 00 */ cmpwi r3, 0
+/* 8026A008 00265C68 90 64 00 04 */ stw r3, 4(r4)
+/* 8026A00C 00265C6C 41 82 00 08 */ beq lbl_8026A014
+/* 8026A010 00265C70 90 83 00 00 */ stw r4, 0(r3)
+lbl_8026A014:
+/* 8026A014 00265C74 80 64 00 00 */ lwz r3, 0(r4)
+/* 8026A018 00265C78 2C 03 00 00 */ cmpwi r3, 0
+/* 8026A01C 00265C7C 41 82 00 0C */ beq lbl_8026A028
+/* 8026A020 00265C80 90 83 00 04 */ stw r4, 4(r3)
+/* 8026A024 00265C84 48 00 00 08 */ b lbl_8026A02C
+lbl_8026A028:
+/* 8026A028 00265C88 90 85 00 04 */ stw r4, 4(r5)
+lbl_8026A02C:
+/* 8026A02C 00265C8C 80 65 00 08 */ lwz r3, 8(r5)
+/* 8026A030 00265C90 38 00 00 00 */ li r0, 0
+/* 8026A034 00265C94 90 66 00 04 */ stw r3, 4(r6)
+/* 8026A038 00265C98 2C 03 00 00 */ cmpwi r3, 0
+/* 8026A03C 00265C9C 90 06 00 00 */ stw r0, 0(r6)
+/* 8026A040 00265CA0 41 82 00 08 */ beq lbl_8026A048
+/* 8026A044 00265CA4 90 C3 00 00 */ stw r6, 0(r3)
+lbl_8026A048:
+/* 8026A048 00265CA8 90 C5 00 08 */ stw r6, 8(r5)
+/* 8026A04C 00265CAC 38 66 00 20 */ addi r3, r6, 0x20
+/* 8026A050 00265CB0 4E 80 00 20 */ blr
+
+.global OSFreeToHeap
+OSFreeToHeap:
+/* 8026A054 00265CB4 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 8026A058 00265CB8 7C 08 02 A6 */ mflr r0
+/* 8026A05C 00265CBC 38 84 FF E0 */ addi r4, r4, -32
+/* 8026A060 00265CC0 90 01 00 14 */ stw r0, 0x14(r1)
+/* 8026A064 00265CC4 1C 03 00 0C */ mulli r0, r3, 0xc
+/* 8026A068 00265CC8 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 8026A06C 00265CCC 80 AD A7 B8 */ lwz r5, lbl_8063FA78-_SDA_BASE_(r13)
+/* 8026A070 00265CD0 80 C4 00 04 */ lwz r6, 4(r4)
+/* 8026A074 00265CD4 7F E5 02 14 */ add r31, r5, r0
+/* 8026A078 00265CD8 2C 06 00 00 */ cmpwi r6, 0
+/* 8026A07C 00265CDC 80 7F 00 08 */ lwz r3, 8(r31)
+/* 8026A080 00265CE0 41 82 00 0C */ beq lbl_8026A08C
+/* 8026A084 00265CE4 80 04 00 00 */ lwz r0, 0(r4)
+/* 8026A088 00265CE8 90 06 00 00 */ stw r0, 0(r6)
+lbl_8026A08C:
+/* 8026A08C 00265CEC 80 A4 00 00 */ lwz r5, 0(r4)
+/* 8026A090 00265CF0 2C 05 00 00 */ cmpwi r5, 0
+/* 8026A094 00265CF4 40 82 00 0C */ bne lbl_8026A0A0
+/* 8026A098 00265CF8 80 64 00 04 */ lwz r3, 4(r4)
+/* 8026A09C 00265CFC 48 00 00 0C */ b lbl_8026A0A8
+lbl_8026A0A0:
+/* 8026A0A0 00265D00 80 04 00 04 */ lwz r0, 4(r4)
+/* 8026A0A4 00265D04 90 05 00 04 */ stw r0, 4(r5)
+lbl_8026A0A8:
+/* 8026A0A8 00265D08 90 7F 00 08 */ stw r3, 8(r31)
+/* 8026A0AC 00265D0C 80 7F 00 04 */ lwz r3, 4(r31)
+/* 8026A0B0 00265D10 4B FF FE 01 */ bl DLInsert
+/* 8026A0B4 00265D14 90 7F 00 04 */ stw r3, 4(r31)
+/* 8026A0B8 00265D18 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8026A0BC 00265D1C 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 8026A0C0 00265D20 7C 08 03 A6 */ mtlr r0
+/* 8026A0C4 00265D24 38 21 00 10 */ addi r1, r1, 0x10
+/* 8026A0C8 00265D28 4E 80 00 20 */ blr