diff options
Diffstat (limited to 'asm/SDK/OS/OSAlloc.s')
-rw-r--r-- | asm/SDK/OS/OSAlloc.s | 167 |
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 |