diff --git a/Progress.md b/Progress.md index fd0b434670a..cbd7b8faff0 100644 --- a/Progress.md +++ b/Progress.md @@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes) .init | 97.972973% | 9280 | 9472 .extab | 100.000000% | 96 | 96 .extabindex | 100.000000% | 96 | 96 -.text | 23.307153% | 838252 | 3596544 +.text | 23.489216% | 844800 | 3596544 .ctors | 100.000000% | 448 | 448 .dtors | 100.000000% | 32 | 32 .rodata | 100.000000% | 193856 | 193856 .data | 100.000000% | 197632 | 197632 .sdata | 100.000000% | 1408 | 1408 .sdata2 | 100.000000% | 20832 | 20832 -Total | 31.392464% | 1262188 | 4020672 +Total | 31.555322% | 1268736 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 31.392464% | 1262188 | 4020672 +main.dol | 31.555322% | 1268736 | 4020672 RELs | 33.041295% | 3799856 | 11500324 -Total | 32.614170% | 5062044 | 15520996 +Total | 32.656358% | 5068592 | 15520996 ## RELs diff --git a/asm/dolphin/os/OSThread/CheckThreadQueue.s b/asm/dolphin/os/OSThread/CheckThreadQueue.s deleted file mode 100644 index 99b0e15bf8b..00000000000 --- a/asm/dolphin/os/OSThread/CheckThreadQueue.s +++ /dev/null @@ -1,46 +0,0 @@ -lbl_80341E64: -/* 80341E64 80 83 00 00 */ lwz r4, 0(r3) -/* 80341E68 28 04 00 00 */ cmplwi r4, 0 -/* 80341E6C 41 82 00 18 */ beq lbl_80341E84 -/* 80341E70 80 04 02 E4 */ lwz r0, 0x2e4(r4) -/* 80341E74 28 00 00 00 */ cmplwi r0, 0 -/* 80341E78 41 82 00 0C */ beq lbl_80341E84 -/* 80341E7C 38 60 00 00 */ li r3, 0 -/* 80341E80 4E 80 00 20 */ blr -lbl_80341E84: -/* 80341E84 80 63 00 04 */ lwz r3, 4(r3) -/* 80341E88 28 03 00 00 */ cmplwi r3, 0 -/* 80341E8C 41 82 00 18 */ beq lbl_80341EA4 -/* 80341E90 80 03 02 E0 */ lwz r0, 0x2e0(r3) -/* 80341E94 28 00 00 00 */ cmplwi r0, 0 -/* 80341E98 41 82 00 0C */ beq lbl_80341EA4 -/* 80341E9C 38 60 00 00 */ li r3, 0 -/* 80341EA0 4E 80 00 20 */ blr -lbl_80341EA4: -/* 80341EA4 7C 85 23 78 */ mr r5, r4 -/* 80341EA8 48 00 00 48 */ b lbl_80341EF0 -lbl_80341EAC: -/* 80341EAC 80 65 02 E0 */ lwz r3, 0x2e0(r5) -/* 80341EB0 28 03 00 00 */ cmplwi r3, 0 -/* 80341EB4 41 82 00 18 */ beq lbl_80341ECC -/* 80341EB8 80 03 02 E4 */ lwz r0, 0x2e4(r3) -/* 80341EBC 7C 05 00 40 */ cmplw r5, r0 -/* 80341EC0 41 82 00 0C */ beq lbl_80341ECC -/* 80341EC4 38 60 00 00 */ li r3, 0 -/* 80341EC8 4E 80 00 20 */ blr -lbl_80341ECC: -/* 80341ECC 80 85 02 E4 */ lwz r4, 0x2e4(r5) -/* 80341ED0 28 04 00 00 */ cmplwi r4, 0 -/* 80341ED4 41 82 00 18 */ beq lbl_80341EEC -/* 80341ED8 80 04 02 E0 */ lwz r0, 0x2e0(r4) -/* 80341EDC 7C 05 00 40 */ cmplw r5, r0 -/* 80341EE0 41 82 00 0C */ beq lbl_80341EEC -/* 80341EE4 38 60 00 00 */ li r3, 0 -/* 80341EE8 4E 80 00 20 */ blr -lbl_80341EEC: -/* 80341EEC 7C 65 1B 78 */ mr r5, r3 -lbl_80341EF0: -/* 80341EF0 28 05 00 00 */ cmplwi r5, 0 -/* 80341EF4 40 82 FF B8 */ bne lbl_80341EAC -/* 80341EF8 38 60 00 01 */ li r3, 1 -/* 80341EFC 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSCancelThread.s b/asm/dolphin/os/OSThread/OSCancelThread.s deleted file mode 100644 index a5f18fe32cf..00000000000 --- a/asm/dolphin/os/OSThread/OSCancelThread.s +++ /dev/null @@ -1,131 +0,0 @@ -lbl_80341558: -/* 80341558 7C 08 02 A6 */ mflr r0 -/* 8034155C 90 01 00 04 */ stw r0, 4(r1) -/* 80341560 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80341564 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80341568 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8034156C 7C 7E 1B 78 */ mr r30, r3 -/* 80341570 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80341574 4B FF C1 81 */ bl OSDisableInterrupts -/* 80341578 A0 1E 02 C8 */ lhz r0, 0x2c8(r30) -/* 8034157C 3B E3 00 00 */ addi r31, r3, 0 -/* 80341580 2C 00 00 03 */ cmpwi r0, 3 -/* 80341584 41 82 00 DC */ beq lbl_80341660 -/* 80341588 40 80 00 14 */ bge lbl_8034159C -/* 8034158C 2C 00 00 01 */ cmpwi r0, 1 -/* 80341590 41 82 00 18 */ beq lbl_803415A8 -/* 80341594 40 80 00 2C */ bge lbl_803415C0 -/* 80341598 48 00 00 C8 */ b lbl_80341660 -lbl_8034159C: -/* 8034159C 2C 00 00 05 */ cmpwi r0, 5 -/* 803415A0 40 80 00 C0 */ bge lbl_80341660 -/* 803415A4 48 00 00 28 */ b lbl_803415CC -lbl_803415A8: -/* 803415A8 80 1E 02 CC */ lwz r0, 0x2cc(r30) -/* 803415AC 2C 00 00 00 */ cmpwi r0, 0 -/* 803415B0 41 81 00 BC */ bgt lbl_8034166C -/* 803415B4 7F C3 F3 78 */ mr r3, r30 -/* 803415B8 4B FF F7 8D */ bl UnsetRun -/* 803415BC 48 00 00 B0 */ b lbl_8034166C -lbl_803415C0: -/* 803415C0 38 00 00 01 */ li r0, 1 -/* 803415C4 90 0D 91 44 */ stw r0, RunQueueHint(r13) -/* 803415C8 48 00 00 A4 */ b lbl_8034166C -lbl_803415CC: -/* 803415CC 80 9E 02 E0 */ lwz r4, 0x2e0(r30) -/* 803415D0 80 BE 02 E4 */ lwz r5, 0x2e4(r30) -/* 803415D4 28 04 00 00 */ cmplwi r4, 0 -/* 803415D8 40 82 00 10 */ bne lbl_803415E8 -/* 803415DC 80 7E 02 DC */ lwz r3, 0x2dc(r30) -/* 803415E0 90 A3 00 04 */ stw r5, 4(r3) -/* 803415E4 48 00 00 08 */ b lbl_803415EC -lbl_803415E8: -/* 803415E8 90 A4 02 E4 */ stw r5, 0x2e4(r4) -lbl_803415EC: -/* 803415EC 28 05 00 00 */ cmplwi r5, 0 -/* 803415F0 40 82 00 10 */ bne lbl_80341600 -/* 803415F4 80 7E 02 DC */ lwz r3, 0x2dc(r30) -/* 803415F8 90 83 00 00 */ stw r4, 0(r3) -/* 803415FC 48 00 00 08 */ b lbl_80341604 -lbl_80341600: -/* 80341600 90 85 02 E0 */ stw r4, 0x2e0(r5) -lbl_80341604: -/* 80341604 38 00 00 00 */ li r0, 0 -/* 80341608 90 1E 02 DC */ stw r0, 0x2dc(r30) -/* 8034160C 80 1E 02 CC */ lwz r0, 0x2cc(r30) -/* 80341610 2C 00 00 00 */ cmpwi r0, 0 -/* 80341614 41 81 00 58 */ bgt lbl_8034166C -/* 80341618 80 7E 02 F0 */ lwz r3, 0x2f0(r30) -/* 8034161C 28 03 00 00 */ cmplwi r3, 0 -/* 80341620 41 82 00 4C */ beq lbl_8034166C -/* 80341624 83 A3 00 08 */ lwz r29, 8(r3) -lbl_80341628: -/* 80341628 80 1D 02 CC */ lwz r0, 0x2cc(r29) -/* 8034162C 2C 00 00 00 */ cmpwi r0, 0 -/* 80341630 41 81 00 3C */ bgt lbl_8034166C -/* 80341634 7F A3 EB 78 */ mr r3, r29 -/* 80341638 4B FF F7 75 */ bl __OSGetEffectivePriority -/* 8034163C 80 1D 02 D0 */ lwz r0, 0x2d0(r29) -/* 80341640 38 83 00 00 */ addi r4, r3, 0 -/* 80341644 7C 00 20 00 */ cmpw r0, r4 -/* 80341648 41 82 00 24 */ beq lbl_8034166C -/* 8034164C 7F A3 EB 78 */ mr r3, r29 -/* 80341650 4B FF F7 99 */ bl SetEffectivePriority -/* 80341654 7C 7D 1B 79 */ or. r29, r3, r3 -/* 80341658 40 82 FF D0 */ bne lbl_80341628 -/* 8034165C 48 00 00 10 */ b lbl_8034166C -lbl_80341660: -/* 80341660 7F E3 FB 78 */ mr r3, r31 -/* 80341664 4B FF C0 B9 */ bl OSRestoreInterrupts -/* 80341668 48 00 00 90 */ b lbl_803416F8 -lbl_8034166C: -/* 8034166C 7F C3 F3 78 */ mr r3, r30 -/* 80341670 4B FF A9 91 */ bl OSClearContext -/* 80341674 A0 1E 02 CA */ lhz r0, 0x2ca(r30) -/* 80341678 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 8034167C 41 82 00 48 */ beq lbl_803416C4 -/* 80341680 80 9E 02 FC */ lwz r4, 0x2fc(r30) -/* 80341684 80 BE 03 00 */ lwz r5, 0x300(r30) -/* 80341688 28 04 00 00 */ cmplwi r4, 0 -/* 8034168C 40 82 00 10 */ bne lbl_8034169C -/* 80341690 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000E0@ha */ -/* 80341694 90 A3 00 E0 */ stw r5, 0x00E0(r3) /* 0x800000E0@l */ -/* 80341698 48 00 00 08 */ b lbl_803416A0 -lbl_8034169C: -/* 8034169C 90 A4 03 00 */ stw r5, 0x300(r4) -lbl_803416A0: -/* 803416A0 28 05 00 00 */ cmplwi r5, 0 -/* 803416A4 40 82 00 10 */ bne lbl_803416B4 -/* 803416A8 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000DC@ha */ -/* 803416AC 90 83 00 DC */ stw r4, 0x00DC(r3) /* 0x800000DC@l */ -/* 803416B0 48 00 00 08 */ b lbl_803416B8 -lbl_803416B4: -/* 803416B4 90 85 02 FC */ stw r4, 0x2fc(r5) -lbl_803416B8: -/* 803416B8 38 00 00 00 */ li r0, 0 -/* 803416BC B0 1E 02 C8 */ sth r0, 0x2c8(r30) -/* 803416C0 48 00 00 0C */ b lbl_803416CC -lbl_803416C4: -/* 803416C4 38 00 00 08 */ li r0, 8 -/* 803416C8 B0 1E 02 C8 */ sth r0, 0x2c8(r30) -lbl_803416CC: -/* 803416CC 7F C3 F3 78 */ mr r3, r30 -/* 803416D0 4B FF DB 15 */ bl __OSUnlockAllMutex -/* 803416D4 38 7E 02 E8 */ addi r3, r30, 0x2e8 -/* 803416D8 48 00 05 C1 */ bl OSWakeupThread -/* 803416DC 80 0D 91 44 */ lwz r0, RunQueueHint(r13) -/* 803416E0 2C 00 00 00 */ cmpwi r0, 0 -/* 803416E4 41 82 00 0C */ beq lbl_803416F0 -/* 803416E8 38 60 00 00 */ li r3, 0 -/* 803416EC 4B FF F9 0D */ bl SelectThread -lbl_803416F0: -/* 803416F0 7F E3 FB 78 */ mr r3, r31 -/* 803416F4 4B FF C0 29 */ bl OSRestoreInterrupts -lbl_803416F8: -/* 803416F8 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803416FC 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80341700 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80341704 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80341708 38 21 00 20 */ addi r1, r1, 0x20 -/* 8034170C 7C 08 03 A6 */ mtlr r0 -/* 80341710 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSCheckActiveThreads.s b/asm/dolphin/os/OSThread/OSCheckActiveThreads.s deleted file mode 100644 index 6b4b499a344..00000000000 --- a/asm/dolphin/os/OSThread/OSCheckActiveThreads.s +++ /dev/null @@ -1,521 +0,0 @@ -lbl_80341F00: -/* 80341F00 7C 08 02 A6 */ mflr r0 -/* 80341F04 3C 80 80 3D */ lis r4, lit_831@ha /* 0x803D0838@ha */ -/* 80341F08 90 01 00 04 */ stw r0, 4(r1) -/* 80341F0C 3C 60 80 45 */ lis r3, RunQueue@ha /* 0x8044BB78@ha */ -/* 80341F10 94 21 FF C8 */ stwu r1, -0x38(r1) -/* 80341F14 BF 41 00 20 */ stmw r26, 0x20(r1) -/* 80341F18 3B C4 08 38 */ addi r30, r4, lit_831@l /* 0x803D0838@l */ -/* 80341F1C 3B E3 BB 78 */ addi r31, r3, RunQueue@l /* 0x8044BB78@l */ -/* 80341F20 3B 80 00 00 */ li r28, 0 -/* 80341F24 4B FF B7 D1 */ bl OSDisableInterrupts -/* 80341F28 3B 63 00 00 */ addi r27, r3, 0 -/* 80341F2C 3B BF 00 00 */ addi r29, r31, 0 -/* 80341F30 3B 40 00 00 */ li r26, 0 -lbl_80341F34: -/* 80341F34 20 1A 00 1F */ subfic r0, r26, 0x1f -/* 80341F38 80 8D 91 40 */ lwz r4, RunQueueBits(r13) -/* 80341F3C 38 60 00 01 */ li r3, 1 -/* 80341F40 7C 60 00 30 */ slw r0, r3, r0 -/* 80341F44 7C 80 00 39 */ and. r0, r4, r0 -/* 80341F48 41 82 00 44 */ beq lbl_80341F8C -/* 80341F4C 80 1D 00 00 */ lwz r0, 0(r29) -/* 80341F50 28 00 00 00 */ cmplwi r0, 0 -/* 80341F54 41 82 00 10 */ beq lbl_80341F64 -/* 80341F58 80 1D 00 04 */ lwz r0, 4(r29) -/* 80341F5C 28 00 00 00 */ cmplwi r0, 0 -/* 80341F60 40 82 00 68 */ bne lbl_80341FC8 -lbl_80341F64: -/* 80341F64 38 7E 00 00 */ addi r3, r30, 0 -/* 80341F68 4C C6 31 82 */ crclr 6 -/* 80341F6C 38 80 05 E0 */ li r4, 0x5e0 -/* 80341F70 4B CC 4B 4D */ bl OSReport -/* 80341F74 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80341F78 4C C6 31 82 */ crclr 6 -/* 80341F7C 38 80 05 E0 */ li r4, 0x5e0 -/* 80341F80 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80341F84 4B CC 4E F9 */ bl OSPanic -/* 80341F88 48 00 00 40 */ b lbl_80341FC8 -lbl_80341F8C: -/* 80341F8C 80 1D 00 00 */ lwz r0, 0(r29) -/* 80341F90 28 00 00 00 */ cmplwi r0, 0 -/* 80341F94 40 82 00 10 */ bne lbl_80341FA4 -/* 80341F98 80 1D 00 04 */ lwz r0, 4(r29) -/* 80341F9C 28 00 00 00 */ cmplwi r0, 0 -/* 80341FA0 41 82 00 28 */ beq lbl_80341FC8 -lbl_80341FA4: -/* 80341FA4 38 7E 00 6C */ addi r3, r30, 0x6c -/* 80341FA8 4C C6 31 82 */ crclr 6 -/* 80341FAC 38 80 05 E5 */ li r4, 0x5e5 -/* 80341FB0 4B CC 4B 0D */ bl OSReport -/* 80341FB4 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80341FB8 4C C6 31 82 */ crclr 6 -/* 80341FBC 38 80 05 E5 */ li r4, 0x5e5 -/* 80341FC0 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80341FC4 4B CC 4E B9 */ bl OSPanic -lbl_80341FC8: -/* 80341FC8 7F A3 EB 78 */ mr r3, r29 -/* 80341FCC 4B FF FE 99 */ bl CheckThreadQueue -/* 80341FD0 2C 03 00 00 */ cmpwi r3, 0 -/* 80341FD4 40 82 00 28 */ bne lbl_80341FFC -/* 80341FD8 38 7E 00 CC */ addi r3, r30, 0xcc -/* 80341FDC 4C C6 31 82 */ crclr 6 -/* 80341FE0 38 80 05 E7 */ li r4, 0x5e7 -/* 80341FE4 4B CC 4A D9 */ bl OSReport -/* 80341FE8 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80341FEC 4C C6 31 82 */ crclr 6 -/* 80341FF0 38 80 05 E7 */ li r4, 0x5e7 -/* 80341FF4 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80341FF8 4B CC 4E 85 */ bl OSPanic -lbl_80341FFC: -/* 80341FFC 3B 5A 00 01 */ addi r26, r26, 1 -/* 80342000 2C 1A 00 1F */ cmpwi r26, 0x1f -/* 80342004 3B BD 00 08 */ addi r29, r29, 8 -/* 80342008 40 81 FF 2C */ ble lbl_80341F34 -/* 8034200C 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000DC@ha */ -/* 80342010 80 63 00 DC */ lwz r3, 0x00DC(r3) /* 0x800000DC@l */ -/* 80342014 28 03 00 00 */ cmplwi r3, 0 -/* 80342018 41 82 00 34 */ beq lbl_8034204C -/* 8034201C 80 03 03 00 */ lwz r0, 0x300(r3) -/* 80342020 28 00 00 00 */ cmplwi r0, 0 -/* 80342024 41 82 00 28 */ beq lbl_8034204C -/* 80342028 38 7E 01 14 */ addi r3, r30, 0x114 -/* 8034202C 4C C6 31 82 */ crclr 6 -/* 80342030 38 80 05 EC */ li r4, 0x5ec -/* 80342034 4B CC 4A 89 */ bl OSReport -/* 80342038 38 7E 00 60 */ addi r3, r30, 0x60 -/* 8034203C 4C C6 31 82 */ crclr 6 -/* 80342040 38 80 05 EC */ li r4, 0x5ec -/* 80342044 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80342048 4B CC 4E 35 */ bl OSPanic -lbl_8034204C: -/* 8034204C 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000DC@ha */ -/* 80342050 38 63 00 DC */ addi r3, r3, 0x00DC /* 0x800000DC@l */ -/* 80342054 80 63 00 04 */ lwz r3, 4(r3) -/* 80342058 28 03 00 00 */ cmplwi r3, 0 -/* 8034205C 41 82 00 34 */ beq lbl_80342090 -/* 80342060 80 03 02 FC */ lwz r0, 0x2fc(r3) -/* 80342064 28 00 00 00 */ cmplwi r0, 0 -/* 80342068 41 82 00 28 */ beq lbl_80342090 -/* 8034206C 38 7E 01 94 */ addi r3, r30, 0x194 -/* 80342070 4C C6 31 82 */ crclr 6 -/* 80342074 38 80 05 EE */ li r4, 0x5ee -/* 80342078 4B CC 4A 45 */ bl OSReport -/* 8034207C 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80342080 4C C6 31 82 */ crclr 6 -/* 80342084 38 80 05 EE */ li r4, 0x5ee -/* 80342088 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 8034208C 4B CC 4D F1 */ bl OSPanic -lbl_80342090: -/* 80342090 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000DC@ha */ -/* 80342094 83 A3 00 DC */ lwz r29, 0x00DC(r3) /* 0x800000DC@l */ -/* 80342098 48 00 05 90 */ b lbl_80342628 -lbl_8034209C: -/* 8034209C 80 7D 02 FC */ lwz r3, 0x2fc(r29) -/* 803420A0 3B 9C 00 01 */ addi r28, r28, 1 -/* 803420A4 28 03 00 00 */ cmplwi r3, 0 -/* 803420A8 41 82 00 34 */ beq lbl_803420DC -/* 803420AC 80 03 03 00 */ lwz r0, 0x300(r3) -/* 803420B0 7C 1D 00 40 */ cmplw r29, r0 -/* 803420B4 41 82 00 28 */ beq lbl_803420DC -/* 803420B8 38 7E 02 14 */ addi r3, r30, 0x214 -/* 803420BC 4C C6 31 82 */ crclr 6 -/* 803420C0 38 80 05 F6 */ li r4, 0x5f6 -/* 803420C4 4B CC 49 F9 */ bl OSReport -/* 803420C8 38 7E 00 60 */ addi r3, r30, 0x60 -/* 803420CC 4C C6 31 82 */ crclr 6 -/* 803420D0 38 80 05 F6 */ li r4, 0x5f6 -/* 803420D4 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 803420D8 4B CC 4D A5 */ bl OSPanic -lbl_803420DC: -/* 803420DC 80 7D 03 00 */ lwz r3, 0x300(r29) -/* 803420E0 28 03 00 00 */ cmplwi r3, 0 -/* 803420E4 41 82 00 34 */ beq lbl_80342118 -/* 803420E8 80 03 02 FC */ lwz r0, 0x2fc(r3) -/* 803420EC 7C 1D 00 40 */ cmplw r29, r0 -/* 803420F0 41 82 00 28 */ beq lbl_80342118 -/* 803420F4 38 7E 02 90 */ addi r3, r30, 0x290 -/* 803420F8 4C C6 31 82 */ crclr 6 -/* 803420FC 38 80 05 F8 */ li r4, 0x5f8 -/* 80342100 4B CC 49 BD */ bl OSReport -/* 80342104 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80342108 4C C6 31 82 */ crclr 6 -/* 8034210C 38 80 05 F8 */ li r4, 0x5f8 -/* 80342110 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80342114 4B CC 4D 69 */ bl OSPanic -lbl_80342118: -/* 80342118 80 7D 03 08 */ lwz r3, 0x308(r29) -/* 8034211C 80 63 00 00 */ lwz r3, 0(r3) -/* 80342120 3C 03 21 53 */ addis r0, r3, 0x2153 -/* 80342124 28 00 BA BE */ cmplwi r0, 0xbabe -/* 80342128 41 82 00 28 */ beq lbl_80342150 -/* 8034212C 38 7E 03 0C */ addi r3, r30, 0x30c -/* 80342130 4C C6 31 82 */ crclr 6 -/* 80342134 38 80 05 FB */ li r4, 0x5fb -/* 80342138 4B CC 49 85 */ bl OSReport -/* 8034213C 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80342140 4C C6 31 82 */ crclr 6 -/* 80342144 38 80 05 FB */ li r4, 0x5fb -/* 80342148 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 8034214C 4B CC 4D 31 */ bl OSPanic -lbl_80342150: -/* 80342150 80 1D 02 D0 */ lwz r0, 0x2d0(r29) -/* 80342154 2C 00 00 00 */ cmpwi r0, 0 -/* 80342158 41 80 00 0C */ blt lbl_80342164 -/* 8034215C 2C 00 00 20 */ cmpwi r0, 0x20 -/* 80342160 40 81 00 28 */ ble lbl_80342188 -lbl_80342164: -/* 80342164 38 7E 03 60 */ addi r3, r30, 0x360 -/* 80342168 4C C6 31 82 */ crclr 6 -/* 8034216C 38 80 05 FE */ li r4, 0x5fe -/* 80342170 4B CC 49 4D */ bl OSReport -/* 80342174 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80342178 4C C6 31 82 */ crclr 6 -/* 8034217C 38 80 05 FE */ li r4, 0x5fe -/* 80342180 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80342184 4B CC 4C F9 */ bl OSPanic -lbl_80342188: -/* 80342188 80 1D 02 CC */ lwz r0, 0x2cc(r29) -/* 8034218C 2C 00 00 00 */ cmpwi r0, 0 -/* 80342190 40 80 00 28 */ bge lbl_803421B8 -/* 80342194 38 7E 03 D4 */ addi r3, r30, 0x3d4 -/* 80342198 4C C6 31 82 */ crclr 6 -/* 8034219C 38 80 05 FF */ li r4, 0x5ff -/* 803421A0 4B CC 49 1D */ bl OSReport -/* 803421A4 38 7E 00 60 */ addi r3, r30, 0x60 -/* 803421A8 4C C6 31 82 */ crclr 6 -/* 803421AC 38 80 05 FF */ li r4, 0x5ff -/* 803421B0 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 803421B4 4B CC 4C C9 */ bl OSPanic -lbl_803421B8: -/* 803421B8 38 7D 02 E8 */ addi r3, r29, 0x2e8 -/* 803421BC 4B FF FC A9 */ bl CheckThreadQueue -/* 803421C0 2C 03 00 00 */ cmpwi r3, 0 -/* 803421C4 40 82 00 28 */ bne lbl_803421EC -/* 803421C8 38 7E 04 10 */ addi r3, r30, 0x410 -/* 803421CC 4C C6 31 82 */ crclr 6 -/* 803421D0 38 80 06 00 */ li r4, 0x600 -/* 803421D4 4B CC 48 E9 */ bl OSReport -/* 803421D8 38 7E 00 60 */ addi r3, r30, 0x60 -/* 803421DC 4C C6 31 82 */ crclr 6 -/* 803421E0 38 80 06 00 */ li r4, 0x600 -/* 803421E4 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 803421E8 4B CC 4C 95 */ bl OSPanic -lbl_803421EC: -/* 803421EC A0 9D 02 C8 */ lhz r4, 0x2c8(r29) -/* 803421F0 2C 04 00 04 */ cmpwi r4, 4 -/* 803421F4 41 82 02 00 */ beq lbl_803423F4 -/* 803421F8 40 80 00 1C */ bge lbl_80342214 -/* 803421FC 2C 04 00 02 */ cmpwi r4, 2 -/* 80342200 41 82 01 2C */ beq lbl_8034232C -/* 80342204 40 80 03 C8 */ bge lbl_803425CC -/* 80342208 2C 04 00 01 */ cmpwi r4, 1 -/* 8034220C 40 80 00 14 */ bge lbl_80342220 -/* 80342210 48 00 03 BC */ b lbl_803425CC -lbl_80342214: -/* 80342214 2C 04 00 08 */ cmpwi r4, 8 -/* 80342218 41 82 03 74 */ beq lbl_8034258C -/* 8034221C 48 00 03 B0 */ b lbl_803425CC -lbl_80342220: -/* 80342220 80 1D 02 CC */ lwz r0, 0x2cc(r29) -/* 80342224 2C 00 00 00 */ cmpwi r0, 0 -/* 80342228 41 81 03 C8 */ bgt lbl_803425F0 -/* 8034222C 80 1D 02 D0 */ lwz r0, 0x2d0(r29) -/* 80342230 80 7D 02 DC */ lwz r3, 0x2dc(r29) -/* 80342234 54 00 18 38 */ slwi r0, r0, 3 -/* 80342238 7C 1F 02 14 */ add r0, r31, r0 -/* 8034223C 7C 03 00 40 */ cmplw r3, r0 -/* 80342240 41 82 00 28 */ beq lbl_80342268 -/* 80342244 38 7E 04 5C */ addi r3, r30, 0x45c -/* 80342248 4C C6 31 82 */ crclr 6 -/* 8034224C 38 80 06 06 */ li r4, 0x606 -/* 80342250 4B CC 48 6D */ bl OSReport -/* 80342254 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80342258 4C C6 31 82 */ crclr 6 -/* 8034225C 38 80 06 06 */ li r4, 0x606 -/* 80342260 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80342264 4B CC 4C 19 */ bl OSPanic -lbl_80342268: -/* 80342268 80 1D 02 D0 */ lwz r0, 0x2d0(r29) -/* 8034226C 54 00 18 38 */ slwi r0, r0, 3 -/* 80342270 7C 7F 00 2E */ lwzx r3, r31, r0 -/* 80342274 48 00 00 18 */ b lbl_8034228C -lbl_80342278: -/* 80342278 7C 1D 18 40 */ cmplw r29, r3 -/* 8034227C 40 82 00 0C */ bne lbl_80342288 -/* 80342280 38 00 00 01 */ li r0, 1 -/* 80342284 48 00 00 14 */ b lbl_80342298 -lbl_80342288: -/* 80342288 80 63 02 E0 */ lwz r3, 0x2e0(r3) -lbl_8034228C: -/* 8034228C 28 03 00 00 */ cmplwi r3, 0 -/* 80342290 40 82 FF E8 */ bne lbl_80342278 -/* 80342294 38 00 00 00 */ li r0, 0 -lbl_80342298: -/* 80342298 2C 00 00 00 */ cmpwi r0, 0 -/* 8034229C 40 82 00 28 */ bne lbl_803422C4 -/* 803422A0 38 7E 04 B0 */ addi r3, r30, 0x4b0 -/* 803422A4 4C C6 31 82 */ crclr 6 -/* 803422A8 38 80 06 07 */ li r4, 0x607 -/* 803422AC 4B CC 48 11 */ bl OSReport -/* 803422B0 38 7E 00 60 */ addi r3, r30, 0x60 -/* 803422B4 4C C6 31 82 */ crclr 6 -/* 803422B8 38 80 06 07 */ li r4, 0x607 -/* 803422BC 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 803422C0 4B CC 4B BD */ bl OSPanic -lbl_803422C4: -/* 803422C4 80 9D 02 D4 */ lwz r4, 0x2d4(r29) -/* 803422C8 80 7D 02 F4 */ lwz r3, 0x2f4(r29) -/* 803422CC 48 00 00 24 */ b lbl_803422F0 -lbl_803422D0: -/* 803422D0 80 A3 00 00 */ lwz r5, 0(r3) -/* 803422D4 28 05 00 00 */ cmplwi r5, 0 -/* 803422D8 41 82 00 14 */ beq lbl_803422EC -/* 803422DC 80 05 02 D0 */ lwz r0, 0x2d0(r5) -/* 803422E0 7C 00 20 00 */ cmpw r0, r4 -/* 803422E4 40 80 00 08 */ bge lbl_803422EC -/* 803422E8 7C 04 03 78 */ mr r4, r0 -lbl_803422EC: -/* 803422EC 80 63 00 10 */ lwz r3, 0x10(r3) -lbl_803422F0: -/* 803422F0 28 03 00 00 */ cmplwi r3, 0 -/* 803422F4 40 82 FF DC */ bne lbl_803422D0 -/* 803422F8 80 1D 02 D0 */ lwz r0, 0x2d0(r29) -/* 803422FC 7C 00 20 00 */ cmpw r0, r4 -/* 80342300 41 82 02 F0 */ beq lbl_803425F0 -/* 80342304 38 7E 05 04 */ addi r3, r30, 0x504 -/* 80342308 4C C6 31 82 */ crclr 6 -/* 8034230C 38 80 06 08 */ li r4, 0x608 -/* 80342310 4B CC 47 AD */ bl OSReport -/* 80342314 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80342318 4C C6 31 82 */ crclr 6 -/* 8034231C 38 80 06 08 */ li r4, 0x608 -/* 80342320 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80342324 4B CC 4B 59 */ bl OSPanic -/* 80342328 48 00 02 C8 */ b lbl_803425F0 -lbl_8034232C: -/* 8034232C 80 1D 02 CC */ lwz r0, 0x2cc(r29) -/* 80342330 2C 00 00 00 */ cmpwi r0, 0 -/* 80342334 40 81 00 28 */ ble lbl_8034235C -/* 80342338 38 7E 05 60 */ addi r3, r30, 0x560 -/* 8034233C 4C C6 31 82 */ crclr 6 -/* 80342340 38 80 06 0C */ li r4, 0x60c -/* 80342344 4B CC 47 79 */ bl OSReport -/* 80342348 38 7E 00 60 */ addi r3, r30, 0x60 -/* 8034234C 4C C6 31 82 */ crclr 6 -/* 80342350 38 80 06 0C */ li r4, 0x60c -/* 80342354 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80342358 4B CC 4B 25 */ bl OSPanic -lbl_8034235C: -/* 8034235C 80 1D 02 DC */ lwz r0, 0x2dc(r29) -/* 80342360 28 00 00 00 */ cmplwi r0, 0 -/* 80342364 41 82 00 28 */ beq lbl_8034238C -/* 80342368 38 7E 05 A4 */ addi r3, r30, 0x5a4 -/* 8034236C 4C C6 31 82 */ crclr 6 -/* 80342370 38 80 06 0D */ li r4, 0x60d -/* 80342374 4B CC 47 49 */ bl OSReport -/* 80342378 38 7E 00 60 */ addi r3, r30, 0x60 -/* 8034237C 4C C6 31 82 */ crclr 6 -/* 80342380 38 80 06 0D */ li r4, 0x60d -/* 80342384 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80342388 4B CC 4A F5 */ bl OSPanic -lbl_8034238C: -/* 8034238C 80 9D 02 D4 */ lwz r4, 0x2d4(r29) -/* 80342390 80 7D 02 F4 */ lwz r3, 0x2f4(r29) -/* 80342394 48 00 00 24 */ b lbl_803423B8 -lbl_80342398: -/* 80342398 80 A3 00 00 */ lwz r5, 0(r3) -/* 8034239C 28 05 00 00 */ cmplwi r5, 0 -/* 803423A0 41 82 00 14 */ beq lbl_803423B4 -/* 803423A4 80 05 02 D0 */ lwz r0, 0x2d0(r5) -/* 803423A8 7C 00 20 00 */ cmpw r0, r4 -/* 803423AC 40 80 00 08 */ bge lbl_803423B4 -/* 803423B0 7C 04 03 78 */ mr r4, r0 -lbl_803423B4: -/* 803423B4 80 63 00 10 */ lwz r3, 0x10(r3) -lbl_803423B8: -/* 803423B8 28 03 00 00 */ cmplwi r3, 0 -/* 803423BC 40 82 FF DC */ bne lbl_80342398 -/* 803423C0 80 1D 02 D0 */ lwz r0, 0x2d0(r29) -/* 803423C4 7C 00 20 00 */ cmpw r0, r4 -/* 803423C8 41 82 02 28 */ beq lbl_803425F0 -/* 803423CC 38 7E 05 04 */ addi r3, r30, 0x504 -/* 803423D0 4C C6 31 82 */ crclr 6 -/* 803423D4 38 80 06 0E */ li r4, 0x60e -/* 803423D8 4B CC 46 E5 */ bl OSReport -/* 803423DC 38 7E 00 60 */ addi r3, r30, 0x60 -/* 803423E0 4C C6 31 82 */ crclr 6 -/* 803423E4 38 80 06 0E */ li r4, 0x60e -/* 803423E8 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 803423EC 4B CC 4A 91 */ bl OSPanic -/* 803423F0 48 00 02 00 */ b lbl_803425F0 -lbl_803423F4: -/* 803423F4 80 1D 02 DC */ lwz r0, 0x2dc(r29) -/* 803423F8 28 00 00 00 */ cmplwi r0, 0 -/* 803423FC 40 82 00 28 */ bne lbl_80342424 -/* 80342400 38 7E 05 E0 */ addi r3, r30, 0x5e0 -/* 80342404 4C C6 31 82 */ crclr 6 -/* 80342408 38 80 06 11 */ li r4, 0x611 -/* 8034240C 4B CC 46 B1 */ bl OSReport -/* 80342410 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80342414 4C C6 31 82 */ crclr 6 -/* 80342418 38 80 06 11 */ li r4, 0x611 -/* 8034241C 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80342420 4B CC 4A 5D */ bl OSPanic -lbl_80342424: -/* 80342424 80 7D 02 DC */ lwz r3, 0x2dc(r29) -/* 80342428 4B FF FA 3D */ bl CheckThreadQueue -/* 8034242C 2C 03 00 00 */ cmpwi r3, 0 -/* 80342430 40 82 00 28 */ bne lbl_80342458 -/* 80342434 38 7E 06 1C */ addi r3, r30, 0x61c -/* 80342438 4C C6 31 82 */ crclr 6 -/* 8034243C 38 80 06 12 */ li r4, 0x612 -/* 80342440 4B CC 46 7D */ bl OSReport -/* 80342444 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80342448 4C C6 31 82 */ crclr 6 -/* 8034244C 38 80 06 12 */ li r4, 0x612 -/* 80342450 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80342454 4B CC 4A 29 */ bl OSPanic -lbl_80342458: -/* 80342458 80 7D 02 DC */ lwz r3, 0x2dc(r29) -/* 8034245C 80 63 00 00 */ lwz r3, 0(r3) -/* 80342460 48 00 00 18 */ b lbl_80342478 -lbl_80342464: -/* 80342464 7C 1D 18 40 */ cmplw r29, r3 -/* 80342468 40 82 00 0C */ bne lbl_80342474 -/* 8034246C 38 00 00 01 */ li r0, 1 -/* 80342470 48 00 00 14 */ b lbl_80342484 -lbl_80342474: -/* 80342474 80 63 02 E0 */ lwz r3, 0x2e0(r3) -lbl_80342478: -/* 80342478 28 03 00 00 */ cmplwi r3, 0 -/* 8034247C 40 82 FF E8 */ bne lbl_80342464 -/* 80342480 38 00 00 00 */ li r0, 0 -lbl_80342484: -/* 80342484 2C 00 00 00 */ cmpwi r0, 0 -/* 80342488 40 82 00 28 */ bne lbl_803424B0 -/* 8034248C 38 7E 06 60 */ addi r3, r30, 0x660 -/* 80342490 4C C6 31 82 */ crclr 6 -/* 80342494 38 80 06 13 */ li r4, 0x613 -/* 80342498 4B CC 46 25 */ bl OSReport -/* 8034249C 38 7E 00 60 */ addi r3, r30, 0x60 -/* 803424A0 4C C6 31 82 */ crclr 6 -/* 803424A4 38 80 06 13 */ li r4, 0x613 -/* 803424A8 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 803424AC 4B CC 49 D1 */ bl OSPanic -lbl_803424B0: -/* 803424B0 80 1D 02 CC */ lwz r0, 0x2cc(r29) -/* 803424B4 2C 00 00 00 */ cmpwi r0, 0 -/* 803424B8 41 81 00 6C */ bgt lbl_80342524 -/* 803424BC 80 9D 02 D4 */ lwz r4, 0x2d4(r29) -/* 803424C0 80 7D 02 F4 */ lwz r3, 0x2f4(r29) -/* 803424C4 48 00 00 24 */ b lbl_803424E8 -lbl_803424C8: -/* 803424C8 80 A3 00 00 */ lwz r5, 0(r3) -/* 803424CC 28 05 00 00 */ cmplwi r5, 0 -/* 803424D0 41 82 00 14 */ beq lbl_803424E4 -/* 803424D4 80 05 02 D0 */ lwz r0, 0x2d0(r5) -/* 803424D8 7C 00 20 00 */ cmpw r0, r4 -/* 803424DC 40 80 00 08 */ bge lbl_803424E4 -/* 803424E0 7C 04 03 78 */ mr r4, r0 -lbl_803424E4: -/* 803424E4 80 63 00 10 */ lwz r3, 0x10(r3) -lbl_803424E8: -/* 803424E8 28 03 00 00 */ cmplwi r3, 0 -/* 803424EC 40 82 FF DC */ bne lbl_803424C8 -/* 803424F0 80 1D 02 D0 */ lwz r0, 0x2d0(r29) -/* 803424F4 7C 00 20 00 */ cmpw r0, r4 -/* 803424F8 41 82 00 5C */ beq lbl_80342554 -/* 803424FC 38 7E 05 04 */ addi r3, r30, 0x504 -/* 80342500 4C C6 31 82 */ crclr 6 -/* 80342504 38 80 06 16 */ li r4, 0x616 -/* 80342508 4B CC 45 B5 */ bl OSReport -/* 8034250C 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80342510 4C C6 31 82 */ crclr 6 -/* 80342514 38 80 06 16 */ li r4, 0x616 -/* 80342518 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 8034251C 4B CC 49 61 */ bl OSPanic -/* 80342520 48 00 00 34 */ b lbl_80342554 -lbl_80342524: -/* 80342524 80 1D 02 D0 */ lwz r0, 0x2d0(r29) -/* 80342528 2C 00 00 20 */ cmpwi r0, 0x20 -/* 8034252C 41 82 00 28 */ beq lbl_80342554 -/* 80342530 38 7E 06 A4 */ addi r3, r30, 0x6a4 -/* 80342534 4C C6 31 82 */ crclr 6 -/* 80342538 38 80 06 1A */ li r4, 0x61a -/* 8034253C 4B CC 45 81 */ bl OSReport -/* 80342540 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80342544 4C C6 31 82 */ crclr 6 -/* 80342548 38 80 06 1A */ li r4, 0x61a -/* 8034254C 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80342550 4B CC 49 2D */ bl OSPanic -lbl_80342554: -/* 80342554 7F A3 EB 78 */ mr r3, r29 -/* 80342558 4B FF CF CD */ bl __OSCheckDeadLock -/* 8034255C 2C 03 00 00 */ cmpwi r3, 0 -/* 80342560 41 82 00 90 */ beq lbl_803425F0 -/* 80342564 38 7E 06 E0 */ addi r3, r30, 0x6e0 -/* 80342568 4C C6 31 82 */ crclr 6 -/* 8034256C 38 80 06 1C */ li r4, 0x61c -/* 80342570 4B CC 45 4D */ bl OSReport -/* 80342574 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80342578 4C C6 31 82 */ crclr 6 -/* 8034257C 38 80 06 1C */ li r4, 0x61c -/* 80342580 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80342584 4B CC 48 F9 */ bl OSPanic -/* 80342588 48 00 00 68 */ b lbl_803425F0 -lbl_8034258C: -/* 8034258C 80 1D 02 F4 */ lwz r0, 0x2f4(r29) -/* 80342590 28 00 00 00 */ cmplwi r0, 0 -/* 80342594 40 82 00 10 */ bne lbl_803425A4 -/* 80342598 80 1D 02 F8 */ lwz r0, 0x2f8(r29) -/* 8034259C 28 00 00 00 */ cmplwi r0, 0 -/* 803425A0 41 82 00 50 */ beq lbl_803425F0 -lbl_803425A4: -/* 803425A4 38 7E 07 20 */ addi r3, r30, 0x720 -/* 803425A8 4C C6 31 82 */ crclr 6 -/* 803425AC 38 80 06 20 */ li r4, 0x620 -/* 803425B0 4B CC 45 0D */ bl OSReport -/* 803425B4 38 7E 00 60 */ addi r3, r30, 0x60 -/* 803425B8 4C C6 31 82 */ crclr 6 -/* 803425BC 38 80 06 20 */ li r4, 0x620 -/* 803425C0 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 803425C4 4B CC 48 B9 */ bl OSPanic -/* 803425C8 48 00 00 28 */ b lbl_803425F0 -lbl_803425CC: -/* 803425CC 4C C6 31 82 */ crclr 6 -/* 803425D0 38 BD 00 00 */ addi r5, r29, 0 -/* 803425D4 38 7E 07 88 */ addi r3, r30, 0x788 -/* 803425D8 4B CC 44 E5 */ bl OSReport -/* 803425DC 38 7E 00 60 */ addi r3, r30, 0x60 -/* 803425E0 4C C6 31 82 */ crclr 6 -/* 803425E4 38 80 06 26 */ li r4, 0x626 -/* 803425E8 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 803425EC 4B CC 48 91 */ bl OSPanic -lbl_803425F0: -/* 803425F0 7F A3 EB 78 */ mr r3, r29 -/* 803425F4 4B FF CF 69 */ bl __OSCheckMutexes -/* 803425F8 2C 03 00 00 */ cmpwi r3, 0 -/* 803425FC 40 82 00 28 */ bne lbl_80342624 -/* 80342600 38 7E 07 D0 */ addi r3, r30, 0x7d0 -/* 80342604 4C C6 31 82 */ crclr 6 -/* 80342608 38 80 06 2B */ li r4, 0x62b -/* 8034260C 4B CC 44 B1 */ bl OSReport -/* 80342610 38 7E 00 60 */ addi r3, r30, 0x60 -/* 80342614 4C C6 31 82 */ crclr 6 -/* 80342618 38 80 06 2B */ li r4, 0x62b -/* 8034261C 38 AD 84 3C */ la r5, lit_833(r13) /* 804509BC-_SDA_BASE_ */ -/* 80342620 4B CC 48 5D */ bl OSPanic -lbl_80342624: -/* 80342624 83 BD 02 FC */ lwz r29, 0x2fc(r29) -lbl_80342628: -/* 80342628 28 1D 00 00 */ cmplwi r29, 0 -/* 8034262C 40 82 FA 70 */ bne lbl_8034209C -/* 80342630 7F 63 DB 78 */ mr r3, r27 -/* 80342634 4B FF B0 E9 */ bl OSRestoreInterrupts -/* 80342638 7F 83 E3 78 */ mr r3, r28 -/* 8034263C BB 41 00 20 */ lmw r26, 0x20(r1) -/* 80342640 80 01 00 3C */ lwz r0, 0x3c(r1) -/* 80342644 38 21 00 38 */ addi r1, r1, 0x38 -/* 80342648 7C 08 03 A6 */ mtlr r0 -/* 8034264C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSClearStack.s b/asm/dolphin/os/OSThread/OSClearStack.s deleted file mode 100644 index 677aa7e1ab3..00000000000 --- a/asm/dolphin/os/OSThread/OSClearStack.s +++ /dev/null @@ -1,48 +0,0 @@ -lbl_80342650: -/* 80342650 7C 08 02 A6 */ mflr r0 -/* 80342654 90 01 00 04 */ stw r0, 4(r1) -/* 80342658 54 60 82 1E */ rlwinm r0, r3, 0x10, 8, 0xf -/* 8034265C 50 60 C0 0E */ rlwimi r0, r3, 0x18, 0, 7 -/* 80342660 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80342664 50 60 44 2E */ rlwimi r0, r3, 8, 0x10, 0x17 -/* 80342668 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8034266C 7C 1F 03 78 */ mr r31, r0 -/* 80342670 50 7F 06 3E */ rlwimi r31, r3, 0, 0x18, 0x1f -/* 80342674 4B FF 99 85 */ bl OSGetStackPointer -/* 80342678 3C 80 80 00 */ lis r4, 0x8000 /* 0x800000E4@ha */ -/* 8034267C 80 A4 00 E4 */ lwz r5, 0x00E4(r4) /* 0x800000E4@l */ -/* 80342680 38 83 00 03 */ addi r4, r3, 3 -/* 80342684 80 A5 03 08 */ lwz r5, 0x308(r5) -/* 80342688 38 A5 00 04 */ addi r5, r5, 4 -/* 8034268C 7C 05 18 40 */ cmplw r5, r3 -/* 80342690 7C 85 20 50 */ subf r4, r5, r4 -/* 80342694 54 84 F0 BE */ srwi r4, r4, 2 -/* 80342698 40 80 00 50 */ bge lbl_803426E8 -/* 8034269C 54 80 E8 FF */ rlwinm. r0, r4, 0x1d, 3, 0x1f -/* 803426A0 7C 09 03 A6 */ mtctr r0 -/* 803426A4 41 82 00 34 */ beq lbl_803426D8 -lbl_803426A8: -/* 803426A8 93 E5 00 00 */ stw r31, 0(r5) -/* 803426AC 93 E5 00 04 */ stw r31, 4(r5) -/* 803426B0 93 E5 00 08 */ stw r31, 8(r5) -/* 803426B4 93 E5 00 0C */ stw r31, 0xc(r5) -/* 803426B8 93 E5 00 10 */ stw r31, 0x10(r5) -/* 803426BC 93 E5 00 14 */ stw r31, 0x14(r5) -/* 803426C0 93 E5 00 18 */ stw r31, 0x18(r5) -/* 803426C4 93 E5 00 1C */ stw r31, 0x1c(r5) -/* 803426C8 38 A5 00 20 */ addi r5, r5, 0x20 -/* 803426CC 42 00 FF DC */ bdnz lbl_803426A8 -/* 803426D0 70 84 00 07 */ andi. r4, r4, 7 -/* 803426D4 41 82 00 14 */ beq lbl_803426E8 -lbl_803426D8: -/* 803426D8 7C 89 03 A6 */ mtctr r4 -lbl_803426DC: -/* 803426DC 93 E5 00 00 */ stw r31, 0(r5) -/* 803426E0 38 A5 00 04 */ addi r5, r5, 4 -/* 803426E4 42 00 FF F8 */ bdnz lbl_803426DC -lbl_803426E8: -/* 803426E8 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 803426EC 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 803426F0 38 21 00 18 */ addi r1, r1, 0x18 -/* 803426F4 7C 08 03 A6 */ mtlr r0 -/* 803426F8 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSCreateThread.s b/asm/dolphin/os/OSThread/OSCreateThread.s deleted file mode 100644 index 616d67cb48c..00000000000 --- a/asm/dolphin/os/OSThread/OSCreateThread.s +++ /dev/null @@ -1,130 +0,0 @@ -lbl_8034128C: -/* 8034128C 7C 08 02 A6 */ mflr r0 -/* 80341290 2C 08 00 00 */ cmpwi r8, 0 -/* 80341294 90 01 00 04 */ stw r0, 4(r1) -/* 80341298 94 21 FF B0 */ stwu r1, -0x50(r1) -/* 8034129C BF 61 00 3C */ stmw r27, 0x3c(r1) -/* 803412A0 3B E3 00 00 */ addi r31, r3, 0 -/* 803412A4 3B 65 00 00 */ addi r27, r5, 0 -/* 803412A8 3B 86 00 00 */ addi r28, r6, 0 -/* 803412AC 3B A7 00 00 */ addi r29, r7, 0 -/* 803412B0 41 80 00 0C */ blt lbl_803412BC -/* 803412B4 2C 08 00 1F */ cmpwi r8, 0x1f -/* 803412B8 40 81 00 0C */ ble lbl_803412C4 -lbl_803412BC: -/* 803412BC 38 60 00 00 */ li r3, 0 -/* 803412C0 48 00 01 A0 */ b lbl_80341460 -lbl_803412C4: -/* 803412C4 38 C0 00 01 */ li r6, 1 -/* 803412C8 B0 DF 02 C8 */ sth r6, 0x2c8(r31) -/* 803412CC 55 20 07 FE */ clrlwi r0, r9, 0x1f -/* 803412D0 57 87 00 38 */ rlwinm r7, r28, 0, 0, 0x1c -/* 803412D4 B0 1F 02 CA */ sth r0, 0x2ca(r31) -/* 803412D8 38 00 FF FF */ li r0, -1 -/* 803412DC 3B C0 00 00 */ li r30, 0 -/* 803412E0 91 1F 02 D4 */ stw r8, 0x2d4(r31) -/* 803412E4 38 7F 00 00 */ addi r3, r31, 0 -/* 803412E8 38 A7 FF F8 */ addi r5, r7, -8 -/* 803412EC 91 1F 02 D0 */ stw r8, 0x2d0(r31) -/* 803412F0 90 DF 02 CC */ stw r6, 0x2cc(r31) -/* 803412F4 90 1F 02 D8 */ stw r0, 0x2d8(r31) -/* 803412F8 93 DF 02 F0 */ stw r30, 0x2f0(r31) -/* 803412FC 93 DF 02 EC */ stw r30, 0x2ec(r31) -/* 80341300 93 DF 02 E8 */ stw r30, 0x2e8(r31) -/* 80341304 93 DF 02 F8 */ stw r30, 0x2f8(r31) -/* 80341308 93 DF 02 F4 */ stw r30, 0x2f4(r31) -/* 8034130C 93 C7 FF F8 */ stw r30, -8(r7) -/* 80341310 93 C7 FF FC */ stw r30, -4(r7) -/* 80341314 4B FF AD 11 */ bl OSInitContext -/* 80341318 3C 60 80 34 */ lis r3, OSExitThread@ha /* 0x80341474@ha */ -/* 8034131C 38 03 14 74 */ addi r0, r3, OSExitThread@l /* 0x80341474@l */ -/* 80341320 90 1F 00 84 */ stw r0, 0x84(r31) -/* 80341324 3C 60 DE AE */ lis r3, 0xDEAE /* 0xDEADBABE@ha */ -/* 80341328 7C 9D E0 50 */ subf r4, r29, r28 -/* 8034132C 93 7F 00 0C */ stw r27, 0xc(r31) -/* 80341330 38 03 BA BE */ addi r0, r3, 0xBABE /* 0xDEADBABE@l */ -/* 80341334 93 9F 03 04 */ stw r28, 0x304(r31) -/* 80341338 90 9F 03 08 */ stw r4, 0x308(r31) -/* 8034133C 80 7F 03 08 */ lwz r3, 0x308(r31) -/* 80341340 90 03 00 00 */ stw r0, 0(r3) -/* 80341344 93 DF 03 0C */ stw r30, 0x30c(r31) -/* 80341348 93 DF 03 10 */ stw r30, 0x310(r31) -/* 8034134C 93 DF 03 14 */ stw r30, 0x314(r31) -/* 80341350 4B FF C3 A5 */ bl OSDisableInterrupts -/* 80341354 3C 80 80 45 */ lis r4, __OSErrorTable@ha /* 0x8044BAD0@ha */ -/* 80341358 38 84 BA D0 */ addi r4, r4, __OSErrorTable@l /* 0x8044BAD0@l */ -/* 8034135C 80 04 00 40 */ lwz r0, 0x40(r4) -/* 80341360 28 00 00 00 */ cmplwi r0, 0 -/* 80341364 41 82 00 C4 */ beq lbl_80341428 -/* 80341368 80 9F 01 9C */ lwz r4, 0x19c(r31) -/* 8034136C 38 00 00 04 */ li r0, 4 -/* 80341370 7C 09 03 A6 */ mtctr r0 -/* 80341374 38 BF 00 00 */ addi r5, r31, 0 -/* 80341378 60 80 09 00 */ ori r0, r4, 0x900 -/* 8034137C 90 1F 01 9C */ stw r0, 0x19c(r31) -/* 80341380 A0 1F 01 A2 */ lhz r0, 0x1a2(r31) -/* 80341384 60 00 00 01 */ ori r0, r0, 1 -/* 80341388 B0 1F 01 A2 */ sth r0, 0x1a2(r31) -/* 8034138C 80 0D 84 20 */ lwz r0, __OSFpscrEnableBits(r13) -/* 80341390 54 00 06 38 */ rlwinm r0, r0, 0, 0x18, 0x1c -/* 80341394 60 00 00 04 */ ori r0, r0, 4 -/* 80341398 90 1F 01 94 */ stw r0, 0x194(r31) -lbl_8034139C: -/* 8034139C 38 00 FF FF */ li r0, -1 -/* 803413A0 90 05 00 94 */ stw r0, 0x94(r5) -/* 803413A4 90 05 00 90 */ stw r0, 0x90(r5) -/* 803413A8 90 05 01 CC */ stw r0, 0x1cc(r5) -/* 803413AC 90 05 01 C8 */ stw r0, 0x1c8(r5) -/* 803413B0 90 05 00 9C */ stw r0, 0x9c(r5) -/* 803413B4 90 05 00 98 */ stw r0, 0x98(r5) -/* 803413B8 90 05 01 D4 */ stw r0, 0x1d4(r5) -/* 803413BC 90 05 01 D0 */ stw r0, 0x1d0(r5) -/* 803413C0 90 05 00 A4 */ stw r0, 0xa4(r5) -/* 803413C4 90 05 00 A0 */ stw r0, 0xa0(r5) -/* 803413C8 90 05 01 DC */ stw r0, 0x1dc(r5) -/* 803413CC 90 05 01 D8 */ stw r0, 0x1d8(r5) -/* 803413D0 90 05 00 AC */ stw r0, 0xac(r5) -/* 803413D4 90 05 00 A8 */ stw r0, 0xa8(r5) -/* 803413D8 90 05 01 E4 */ stw r0, 0x1e4(r5) -/* 803413DC 90 05 01 E0 */ stw r0, 0x1e0(r5) -/* 803413E0 90 05 00 B4 */ stw r0, 0xb4(r5) -/* 803413E4 90 05 00 B0 */ stw r0, 0xb0(r5) -/* 803413E8 90 05 01 EC */ stw r0, 0x1ec(r5) -/* 803413EC 90 05 01 E8 */ stw r0, 0x1e8(r5) -/* 803413F0 90 05 00 BC */ stw r0, 0xbc(r5) -/* 803413F4 90 05 00 B8 */ stw r0, 0xb8(r5) -/* 803413F8 90 05 01 F4 */ stw r0, 0x1f4(r5) -/* 803413FC 90 05 01 F0 */ stw r0, 0x1f0(r5) -/* 80341400 90 05 00 C4 */ stw r0, 0xc4(r5) -/* 80341404 90 05 00 C0 */ stw r0, 0xc0(r5) -/* 80341408 90 05 01 FC */ stw r0, 0x1fc(r5) -/* 8034140C 90 05 01 F8 */ stw r0, 0x1f8(r5) -/* 80341410 90 05 00 CC */ stw r0, 0xcc(r5) -/* 80341414 90 05 00 C8 */ stw r0, 0xc8(r5) -/* 80341418 90 05 02 04 */ stw r0, 0x204(r5) -/* 8034141C 90 05 02 00 */ stw r0, 0x200(r5) -/* 80341420 38 A5 00 40 */ addi r5, r5, 0x40 -/* 80341424 42 00 FF 78 */ bdnz lbl_8034139C -lbl_80341428: -/* 80341428 3C 80 80 00 */ lis r4, 0x8000 /* 0x800000DC@ha */ -/* 8034142C 38 A4 00 DC */ addi r5, r4, 0x00DC /* 0x800000DC@l */ -/* 80341430 84 C5 00 04 */ lwzu r6, 4(r5) -/* 80341434 28 06 00 00 */ cmplwi r6, 0 -/* 80341438 40 82 00 0C */ bne lbl_80341444 -/* 8034143C 93 E4 00 DC */ stw r31, 0xdc(r4) -/* 80341440 48 00 00 08 */ b lbl_80341448 -lbl_80341444: -/* 80341444 93 E6 02 FC */ stw r31, 0x2fc(r6) -lbl_80341448: -/* 80341448 90 DF 03 00 */ stw r6, 0x300(r31) -/* 8034144C 38 00 00 00 */ li r0, 0 -/* 80341450 90 1F 02 FC */ stw r0, 0x2fc(r31) -/* 80341454 93 E5 00 00 */ stw r31, 0(r5) -/* 80341458 4B FF C2 C5 */ bl OSRestoreInterrupts -/* 8034145C 38 60 00 01 */ li r3, 1 -lbl_80341460: -/* 80341460 BB 61 00 3C */ lmw r27, 0x3c(r1) -/* 80341464 80 01 00 54 */ lwz r0, 0x54(r1) -/* 80341468 38 21 00 50 */ addi r1, r1, 0x50 -/* 8034146C 7C 08 03 A6 */ mtlr r0 -/* 80341470 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSDetachThread.s b/asm/dolphin/os/OSThread/OSDetachThread.s deleted file mode 100644 index 1b839448f6d..00000000000 --- a/asm/dolphin/os/OSThread/OSDetachThread.s +++ /dev/null @@ -1,46 +0,0 @@ -lbl_80341714: -/* 80341714 7C 08 02 A6 */ mflr r0 -/* 80341718 90 01 00 04 */ stw r0, 4(r1) -/* 8034171C 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80341720 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80341724 93 C1 00 10 */ stw r30, 0x10(r1) -/* 80341728 7C 7E 1B 78 */ mr r30, r3 -/* 8034172C 4B FF BF C9 */ bl OSDisableInterrupts -/* 80341730 A0 1E 02 CA */ lhz r0, 0x2ca(r30) -/* 80341734 3B E3 00 00 */ addi r31, r3, 0 -/* 80341738 60 00 00 01 */ ori r0, r0, 1 -/* 8034173C B0 1E 02 CA */ sth r0, 0x2ca(r30) -/* 80341740 A0 1E 02 C8 */ lhz r0, 0x2c8(r30) -/* 80341744 28 00 00 08 */ cmplwi r0, 8 -/* 80341748 40 82 00 44 */ bne lbl_8034178C -/* 8034174C 80 9E 02 FC */ lwz r4, 0x2fc(r30) -/* 80341750 80 BE 03 00 */ lwz r5, 0x300(r30) -/* 80341754 28 04 00 00 */ cmplwi r4, 0 -/* 80341758 40 82 00 10 */ bne lbl_80341768 -/* 8034175C 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000E0@ha */ -/* 80341760 90 A3 00 E0 */ stw r5, 0x00E0(r3) /* 0x800000E0@l */ -/* 80341764 48 00 00 08 */ b lbl_8034176C -lbl_80341768: -/* 80341768 90 A4 03 00 */ stw r5, 0x300(r4) -lbl_8034176C: -/* 8034176C 28 05 00 00 */ cmplwi r5, 0 -/* 80341770 40 82 00 10 */ bne lbl_80341780 -/* 80341774 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000DC@ha */ -/* 80341778 90 83 00 DC */ stw r4, 0x00DC(r3) /* 0x800000DC@l */ -/* 8034177C 48 00 00 08 */ b lbl_80341784 -lbl_80341780: -/* 80341780 90 85 02 FC */ stw r4, 0x2fc(r5) -lbl_80341784: -/* 80341784 38 00 00 00 */ li r0, 0 -/* 80341788 B0 1E 02 C8 */ sth r0, 0x2c8(r30) -lbl_8034178C: -/* 8034178C 38 7E 02 E8 */ addi r3, r30, 0x2e8 -/* 80341790 48 00 05 09 */ bl OSWakeupThread -/* 80341794 7F E3 FB 78 */ mr r3, r31 -/* 80341798 4B FF BF 85 */ bl OSRestoreInterrupts -/* 8034179C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 803417A0 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 803417A4 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 803417A8 38 21 00 18 */ addi r1, r1, 0x18 -/* 803417AC 7C 08 03 A6 */ mtlr r0 -/* 803417B0 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSDisableScheduler.s b/asm/dolphin/os/OSThread/OSDisableScheduler.s deleted file mode 100644 index 9c9b3c5bb68..00000000000 --- a/asm/dolphin/os/OSThread/OSDisableScheduler.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_80340CC4: -/* 80340CC4 7C 08 02 A6 */ mflr r0 -/* 80340CC8 90 01 00 04 */ stw r0, 4(r1) -/* 80340CCC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80340CD0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80340CD4 4B FF CA 21 */ bl OSDisableInterrupts -/* 80340CD8 80 8D 91 48 */ lwz r4, Reschedule(r13) -/* 80340CDC 38 04 00 01 */ addi r0, r4, 1 -/* 80340CE0 90 0D 91 48 */ stw r0, Reschedule(r13) -/* 80340CE4 7C 9F 23 78 */ mr r31, r4 -/* 80340CE8 4B FF CA 35 */ bl OSRestoreInterrupts -/* 80340CEC 7F E3 FB 78 */ mr r3, r31 -/* 80340CF0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80340CF4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80340CF8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80340CFC 7C 08 03 A6 */ mtlr r0 -/* 80340D00 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSEnableScheduler.s b/asm/dolphin/os/OSThread/OSEnableScheduler.s deleted file mode 100644 index 7056360ab3c..00000000000 --- a/asm/dolphin/os/OSThread/OSEnableScheduler.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_80340D04: -/* 80340D04 7C 08 02 A6 */ mflr r0 -/* 80340D08 90 01 00 04 */ stw r0, 4(r1) -/* 80340D0C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80340D10 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80340D14 4B FF C9 E1 */ bl OSDisableInterrupts -/* 80340D18 80 8D 91 48 */ lwz r4, Reschedule(r13) -/* 80340D1C 38 04 FF FF */ addi r0, r4, -1 -/* 80340D20 90 0D 91 48 */ stw r0, Reschedule(r13) -/* 80340D24 7C 9F 23 78 */ mr r31, r4 -/* 80340D28 4B FF C9 F5 */ bl OSRestoreInterrupts -/* 80340D2C 7F E3 FB 78 */ mr r3, r31 -/* 80340D30 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80340D34 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80340D38 38 21 00 10 */ addi r1, r1, 0x10 -/* 80340D3C 7C 08 03 A6 */ mtlr r0 -/* 80340D40 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSExitThread.s b/asm/dolphin/os/OSThread/OSExitThread.s deleted file mode 100644 index b14ba2e22ae..00000000000 --- a/asm/dolphin/os/OSThread/OSExitThread.s +++ /dev/null @@ -1,65 +0,0 @@ -lbl_80341474: -/* 80341474 7C 08 02 A6 */ mflr r0 -/* 80341478 90 01 00 04 */ stw r0, 4(r1) -/* 8034147C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80341480 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80341484 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80341488 93 A1 00 14 */ stw r29, 0x14(r1) -/* 8034148C 93 81 00 10 */ stw r28, 0x10(r1) -/* 80341490 7C 7C 1B 78 */ mr r28, r3 -/* 80341494 4B FF C2 61 */ bl OSDisableInterrupts -/* 80341498 3F E0 80 00 */ lis r31, 0x8000 /* 0x800000E4@ha */ -/* 8034149C 83 DF 00 E4 */ lwz r30, 0x00E4(r31) /* 0x800000E4@l */ -/* 803414A0 3B A3 00 00 */ addi r29, r3, 0 -/* 803414A4 38 7E 00 00 */ addi r3, r30, 0 -/* 803414A8 4B FF AB 59 */ bl OSClearContext -/* 803414AC A0 1E 02 CA */ lhz r0, 0x2ca(r30) -/* 803414B0 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 803414B4 41 82 00 44 */ beq lbl_803414F8 -/* 803414B8 80 9E 02 FC */ lwz r4, 0x2fc(r30) -/* 803414BC 80 BE 03 00 */ lwz r5, 0x300(r30) -/* 803414C0 28 04 00 00 */ cmplwi r4, 0 -/* 803414C4 40 82 00 0C */ bne lbl_803414D0 -/* 803414C8 90 BF 00 E0 */ stw r5, 0xe0(r31) -/* 803414CC 48 00 00 08 */ b lbl_803414D4 -lbl_803414D0: -/* 803414D0 90 A4 03 00 */ stw r5, 0x300(r4) -lbl_803414D4: -/* 803414D4 28 05 00 00 */ cmplwi r5, 0 -/* 803414D8 40 82 00 10 */ bne lbl_803414E8 -/* 803414DC 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000DC@ha */ -/* 803414E0 90 83 00 DC */ stw r4, 0x00DC(r3) /* 0x800000DC@l */ -/* 803414E4 48 00 00 08 */ b lbl_803414EC -lbl_803414E8: -/* 803414E8 90 85 02 FC */ stw r4, 0x2fc(r5) -lbl_803414EC: -/* 803414EC 38 00 00 00 */ li r0, 0 -/* 803414F0 B0 1E 02 C8 */ sth r0, 0x2c8(r30) -/* 803414F4 48 00 00 10 */ b lbl_80341504 -lbl_803414F8: -/* 803414F8 38 00 00 08 */ li r0, 8 -/* 803414FC B0 1E 02 C8 */ sth r0, 0x2c8(r30) -/* 80341500 93 9E 02 D8 */ stw r28, 0x2d8(r30) -lbl_80341504: -/* 80341504 7F C3 F3 78 */ mr r3, r30 -/* 80341508 4B FF DC DD */ bl __OSUnlockAllMutex -/* 8034150C 38 7E 02 E8 */ addi r3, r30, 0x2e8 -/* 80341510 48 00 07 89 */ bl OSWakeupThread -/* 80341514 38 00 00 01 */ li r0, 1 -/* 80341518 90 0D 91 44 */ stw r0, RunQueueHint(r13) -/* 8034151C 80 0D 91 44 */ lwz r0, RunQueueHint(r13) -/* 80341520 2C 00 00 00 */ cmpwi r0, 0 -/* 80341524 41 82 00 0C */ beq lbl_80341530 -/* 80341528 38 60 00 00 */ li r3, 0 -/* 8034152C 4B FF FA CD */ bl SelectThread -lbl_80341530: -/* 80341530 7F A3 EB 78 */ mr r3, r29 -/* 80341534 4B FF C1 E9 */ bl OSRestoreInterrupts -/* 80341538 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8034153C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80341540 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80341544 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80341548 83 81 00 10 */ lwz r28, 0x10(r1) -/* 8034154C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80341550 7C 08 03 A6 */ mtlr r0 -/* 80341554 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSResumeThread.s b/asm/dolphin/os/OSThread/OSResumeThread.s deleted file mode 100644 index a98246247b9..00000000000 --- a/asm/dolphin/os/OSThread/OSResumeThread.s +++ /dev/null @@ -1,189 +0,0 @@ -lbl_803417B4: -/* 803417B4 7C 08 02 A6 */ mflr r0 -/* 803417B8 90 01 00 04 */ stw r0, 4(r1) -/* 803417BC 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 803417C0 93 E1 00 24 */ stw r31, 0x24(r1) -/* 803417C4 93 C1 00 20 */ stw r30, 0x20(r1) -/* 803417C8 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 803417CC 7C 7D 1B 78 */ mr r29, r3 -/* 803417D0 4B FF BF 25 */ bl OSDisableInterrupts -/* 803417D4 80 9D 02 CC */ lwz r4, 0x2cc(r29) -/* 803417D8 3B E3 00 00 */ addi r31, r3, 0 -/* 803417DC 38 04 FF FF */ addi r0, r4, -1 -/* 803417E0 90 1D 02 CC */ stw r0, 0x2cc(r29) -/* 803417E4 7C 9E 23 78 */ mr r30, r4 -/* 803417E8 80 1D 02 CC */ lwz r0, 0x2cc(r29) -/* 803417EC 2C 00 00 00 */ cmpwi r0, 0 -/* 803417F0 40 80 00 10 */ bge lbl_80341800 -/* 803417F4 38 00 00 00 */ li r0, 0 -/* 803417F8 90 1D 02 CC */ stw r0, 0x2cc(r29) -/* 803417FC 48 00 02 18 */ b lbl_80341A14 -lbl_80341800: -/* 80341800 40 82 02 14 */ bne lbl_80341A14 -/* 80341804 A0 1D 02 C8 */ lhz r0, 0x2c8(r29) -/* 80341808 2C 00 00 04 */ cmpwi r0, 4 -/* 8034180C 41 82 00 B8 */ beq lbl_803418C4 -/* 80341810 40 80 01 F0 */ bge lbl_80341A00 -/* 80341814 2C 00 00 01 */ cmpwi r0, 1 -/* 80341818 41 82 00 08 */ beq lbl_80341820 -/* 8034181C 48 00 01 E4 */ b lbl_80341A00 -lbl_80341820: -/* 80341820 80 1D 02 D4 */ lwz r0, 0x2d4(r29) -/* 80341824 80 7D 02 F4 */ lwz r3, 0x2f4(r29) -/* 80341828 48 00 00 24 */ b lbl_8034184C -lbl_8034182C: -/* 8034182C 80 83 00 00 */ lwz r4, 0(r3) -/* 80341830 28 04 00 00 */ cmplwi r4, 0 -/* 80341834 41 82 00 14 */ beq lbl_80341848 -/* 80341838 80 84 02 D0 */ lwz r4, 0x2d0(r4) -/* 8034183C 7C 04 00 00 */ cmpw r4, r0 -/* 80341840 40 80 00 08 */ bge lbl_80341848 -/* 80341844 7C 80 23 78 */ mr r0, r4 -lbl_80341848: -/* 80341848 80 63 00 10 */ lwz r3, 0x10(r3) -lbl_8034184C: -/* 8034184C 28 03 00 00 */ cmplwi r3, 0 -/* 80341850 40 82 FF DC */ bne lbl_8034182C -/* 80341854 90 1D 02 D0 */ stw r0, 0x2d0(r29) -/* 80341858 3C 60 80 45 */ lis r3, RunQueue@ha /* 0x8044BB78@ha */ -/* 8034185C 38 03 BB 78 */ addi r0, r3, RunQueue@l /* 0x8044BB78@l */ -/* 80341860 80 7D 02 D0 */ lwz r3, 0x2d0(r29) -/* 80341864 54 63 18 38 */ slwi r3, r3, 3 -/* 80341868 7C 00 1A 14 */ add r0, r0, r3 -/* 8034186C 90 1D 02 DC */ stw r0, 0x2dc(r29) -/* 80341870 80 9D 02 DC */ lwz r4, 0x2dc(r29) -/* 80341874 80 64 00 04 */ lwz r3, 4(r4) -/* 80341878 28 03 00 00 */ cmplwi r3, 0 -/* 8034187C 40 82 00 0C */ bne lbl_80341888 -/* 80341880 93 A4 00 00 */ stw r29, 0(r4) -/* 80341884 48 00 00 08 */ b lbl_8034188C -lbl_80341888: -/* 80341888 93 A3 02 E0 */ stw r29, 0x2e0(r3) -lbl_8034188C: -/* 8034188C 90 7D 02 E4 */ stw r3, 0x2e4(r29) -/* 80341890 38 00 00 00 */ li r0, 0 -/* 80341894 38 60 00 01 */ li r3, 1 -/* 80341898 90 1D 02 E0 */ stw r0, 0x2e0(r29) -/* 8034189C 80 9D 02 DC */ lwz r4, 0x2dc(r29) -/* 803418A0 93 A4 00 04 */ stw r29, 4(r4) -/* 803418A4 80 1D 02 D0 */ lwz r0, 0x2d0(r29) -/* 803418A8 80 8D 91 40 */ lwz r4, RunQueueBits(r13) -/* 803418AC 20 00 00 1F */ subfic r0, r0, 0x1f -/* 803418B0 7C 60 00 30 */ slw r0, r3, r0 -/* 803418B4 7C 80 03 78 */ or r0, r4, r0 -/* 803418B8 90 0D 91 40 */ stw r0, RunQueueBits(r13) -/* 803418BC 90 6D 91 44 */ stw r3, RunQueueHint(r13) -/* 803418C0 48 00 01 40 */ b lbl_80341A00 -lbl_803418C4: -/* 803418C4 80 9D 02 E0 */ lwz r4, 0x2e0(r29) -/* 803418C8 80 BD 02 E4 */ lwz r5, 0x2e4(r29) -/* 803418CC 28 04 00 00 */ cmplwi r4, 0 -/* 803418D0 40 82 00 10 */ bne lbl_803418E0 -/* 803418D4 80 7D 02 DC */ lwz r3, 0x2dc(r29) -/* 803418D8 90 A3 00 04 */ stw r5, 4(r3) -/* 803418DC 48 00 00 08 */ b lbl_803418E4 -lbl_803418E0: -/* 803418E0 90 A4 02 E4 */ stw r5, 0x2e4(r4) -lbl_803418E4: -/* 803418E4 28 05 00 00 */ cmplwi r5, 0 -/* 803418E8 40 82 00 10 */ bne lbl_803418F8 -/* 803418EC 80 7D 02 DC */ lwz r3, 0x2dc(r29) -/* 803418F0 90 83 00 00 */ stw r4, 0(r3) -/* 803418F4 48 00 00 08 */ b lbl_803418FC -lbl_803418F8: -/* 803418F8 90 85 02 E0 */ stw r4, 0x2e0(r5) -lbl_803418FC: -/* 803418FC 80 1D 02 D4 */ lwz r0, 0x2d4(r29) -/* 80341900 80 7D 02 F4 */ lwz r3, 0x2f4(r29) -/* 80341904 48 00 00 24 */ b lbl_80341928 -lbl_80341908: -/* 80341908 80 83 00 00 */ lwz r4, 0(r3) -/* 8034190C 28 04 00 00 */ cmplwi r4, 0 -/* 80341910 41 82 00 14 */ beq lbl_80341924 -/* 80341914 80 84 02 D0 */ lwz r4, 0x2d0(r4) -/* 80341918 7C 04 00 00 */ cmpw r4, r0 -/* 8034191C 40 80 00 08 */ bge lbl_80341924 -/* 80341920 7C 80 23 78 */ mr r0, r4 -lbl_80341924: -/* 80341924 80 63 00 10 */ lwz r3, 0x10(r3) -lbl_80341928: -/* 80341928 28 03 00 00 */ cmplwi r3, 0 -/* 8034192C 40 82 FF DC */ bne lbl_80341908 -/* 80341930 90 1D 02 D0 */ stw r0, 0x2d0(r29) -/* 80341934 80 9D 02 DC */ lwz r4, 0x2dc(r29) -/* 80341938 80 A4 00 00 */ lwz r5, 0(r4) -/* 8034193C 48 00 00 08 */ b lbl_80341944 -lbl_80341940: -/* 80341940 80 A5 02 E0 */ lwz r5, 0x2e0(r5) -lbl_80341944: -/* 80341944 28 05 00 00 */ cmplwi r5, 0 -/* 80341948 41 82 00 14 */ beq lbl_8034195C -/* 8034194C 80 65 02 D0 */ lwz r3, 0x2d0(r5) -/* 80341950 80 1D 02 D0 */ lwz r0, 0x2d0(r29) -/* 80341954 7C 03 00 00 */ cmpw r3, r0 -/* 80341958 40 81 FF E8 */ ble lbl_80341940 -lbl_8034195C: -/* 8034195C 28 05 00 00 */ cmplwi r5, 0 -/* 80341960 40 82 00 34 */ bne lbl_80341994 -/* 80341964 80 64 00 04 */ lwz r3, 4(r4) -/* 80341968 28 03 00 00 */ cmplwi r3, 0 -/* 8034196C 40 82 00 0C */ bne lbl_80341978 -/* 80341970 93 A4 00 00 */ stw r29, 0(r4) -/* 80341974 48 00 00 08 */ b lbl_8034197C -lbl_80341978: -/* 80341978 93 A3 02 E0 */ stw r29, 0x2e0(r3) -lbl_8034197C: -/* 8034197C 90 7D 02 E4 */ stw r3, 0x2e4(r29) -/* 80341980 38 00 00 00 */ li r0, 0 -/* 80341984 90 1D 02 E0 */ stw r0, 0x2e0(r29) -/* 80341988 80 7D 02 DC */ lwz r3, 0x2dc(r29) -/* 8034198C 93 A3 00 04 */ stw r29, 4(r3) -/* 80341990 48 00 00 2C */ b lbl_803419BC -lbl_80341994: -/* 80341994 90 BD 02 E0 */ stw r5, 0x2e0(r29) -/* 80341998 80 65 02 E4 */ lwz r3, 0x2e4(r5) -/* 8034199C 93 A5 02 E4 */ stw r29, 0x2e4(r5) -/* 803419A0 28 03 00 00 */ cmplwi r3, 0 -/* 803419A4 90 7D 02 E4 */ stw r3, 0x2e4(r29) -/* 803419A8 40 82 00 10 */ bne lbl_803419B8 -/* 803419AC 80 7D 02 DC */ lwz r3, 0x2dc(r29) -/* 803419B0 93 A3 00 00 */ stw r29, 0(r3) -/* 803419B4 48 00 00 08 */ b lbl_803419BC -lbl_803419B8: -/* 803419B8 93 A3 02 E0 */ stw r29, 0x2e0(r3) -lbl_803419BC: -/* 803419BC 80 7D 02 F0 */ lwz r3, 0x2f0(r29) -/* 803419C0 28 03 00 00 */ cmplwi r3, 0 -/* 803419C4 41 82 00 3C */ beq lbl_80341A00 -/* 803419C8 83 A3 00 08 */ lwz r29, 8(r3) -lbl_803419CC: -/* 803419CC 80 1D 02 CC */ lwz r0, 0x2cc(r29) -/* 803419D0 2C 00 00 00 */ cmpwi r0, 0 -/* 803419D4 41 81 00 2C */ bgt lbl_80341A00 -/* 803419D8 7F A3 EB 78 */ mr r3, r29 -/* 803419DC 4B FF F3 D1 */ bl __OSGetEffectivePriority -/* 803419E0 80 1D 02 D0 */ lwz r0, 0x2d0(r29) -/* 803419E4 38 83 00 00 */ addi r4, r3, 0 -/* 803419E8 7C 00 20 00 */ cmpw r0, r4 -/* 803419EC 41 82 00 14 */ beq lbl_80341A00 -/* 803419F0 7F A3 EB 78 */ mr r3, r29 -/* 803419F4 4B FF F3 F5 */ bl SetEffectivePriority -/* 803419F8 7C 7D 1B 79 */ or. r29, r3, r3 -/* 803419FC 40 82 FF D0 */ bne lbl_803419CC -lbl_80341A00: -/* 80341A00 80 0D 91 44 */ lwz r0, RunQueueHint(r13) -/* 80341A04 2C 00 00 00 */ cmpwi r0, 0 -/* 80341A08 41 82 00 0C */ beq lbl_80341A14 -/* 80341A0C 38 60 00 00 */ li r3, 0 -/* 80341A10 4B FF F5 E9 */ bl SelectThread -lbl_80341A14: -/* 80341A14 7F E3 FB 78 */ mr r3, r31 -/* 80341A18 4B FF BD 05 */ bl OSRestoreInterrupts -/* 80341A1C 7F C3 F3 78 */ mr r3, r30 -/* 80341A20 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 80341A24 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 80341A28 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 80341A2C 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 80341A30 38 21 00 28 */ addi r1, r1, 0x28 -/* 80341A34 7C 08 03 A6 */ mtlr r0 -/* 80341A38 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSSetSwitchThreadCallback.s b/asm/dolphin/os/OSThread/OSSetSwitchThreadCallback.s deleted file mode 100644 index be8d2761167..00000000000 --- a/asm/dolphin/os/OSThread/OSSetSwitchThreadCallback.s +++ /dev/null @@ -1,34 +0,0 @@ -lbl_80340AA8: -/* 80340AA8 7C 08 02 A6 */ mflr r0 -/* 80340AAC 90 01 00 04 */ stw r0, 4(r1) -/* 80340AB0 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80340AB4 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80340AB8 93 C1 00 10 */ stw r30, 0x10(r1) -/* 80340ABC 7C 7E 1B 78 */ mr r30, r3 -/* 80340AC0 4B FF CC 35 */ bl OSDisableInterrupts -/* 80340AC4 28 1E 00 00 */ cmplwi r30, 0 -/* 80340AC8 83 ED 84 38 */ lwz r31, SwitchThreadCallback(r13) -/* 80340ACC 41 82 00 0C */ beq lbl_80340AD8 -/* 80340AD0 7F C0 F3 78 */ mr r0, r30 -/* 80340AD4 48 00 00 0C */ b lbl_80340AE0 -lbl_80340AD8: -/* 80340AD8 3C 80 80 34 */ lis r4, DefaultSwitchThreadCallback@ha /* 0x80340AA4@ha */ -/* 80340ADC 38 04 0A A4 */ addi r0, r4, DefaultSwitchThreadCallback@l /* 0x80340AA4@l */ -lbl_80340AE0: -/* 80340AE0 90 0D 84 38 */ stw r0, SwitchThreadCallback(r13) -/* 80340AE4 4B FF CC 39 */ bl OSRestoreInterrupts -/* 80340AE8 3C 60 80 34 */ lis r3, DefaultSwitchThreadCallback@ha /* 0x80340AA4@ha */ -/* 80340AEC 38 03 0A A4 */ addi r0, r3, DefaultSwitchThreadCallback@l /* 0x80340AA4@l */ -/* 80340AF0 7C 1F 00 40 */ cmplw r31, r0 -/* 80340AF4 40 82 00 0C */ bne lbl_80340B00 -/* 80340AF8 38 60 00 00 */ li r3, 0 -/* 80340AFC 48 00 00 08 */ b lbl_80340B04 -lbl_80340B00: -/* 80340B00 7F E3 FB 78 */ mr r3, r31 -lbl_80340B04: -/* 80340B04 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80340B08 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80340B0C 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80340B10 38 21 00 18 */ addi r1, r1, 0x18 -/* 80340B14 7C 08 03 A6 */ mtlr r0 -/* 80340B18 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSSetThreadPriority.s b/asm/dolphin/os/OSThread/OSSetThreadPriority.s deleted file mode 100644 index 03b5afd8464..00000000000 --- a/asm/dolphin/os/OSThread/OSSetThreadPriority.s +++ /dev/null @@ -1,55 +0,0 @@ -lbl_80341D9C: -/* 80341D9C 7C 08 02 A6 */ mflr r0 -/* 80341DA0 90 01 00 04 */ stw r0, 4(r1) -/* 80341DA4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80341DA8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80341DAC 7C 9F 23 79 */ or. r31, r4, r4 -/* 80341DB0 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80341DB4 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80341DB8 3B A3 00 00 */ addi r29, r3, 0 -/* 80341DBC 41 80 00 0C */ blt lbl_80341DC8 -/* 80341DC0 2C 1F 00 1F */ cmpwi r31, 0x1f -/* 80341DC4 40 81 00 0C */ ble lbl_80341DD0 -lbl_80341DC8: -/* 80341DC8 38 60 00 00 */ li r3, 0 -/* 80341DCC 48 00 00 74 */ b lbl_80341E40 -lbl_80341DD0: -/* 80341DD0 4B FF B9 25 */ bl OSDisableInterrupts -/* 80341DD4 80 1D 02 D4 */ lwz r0, 0x2d4(r29) -/* 80341DD8 3B C3 00 00 */ addi r30, r3, 0 -/* 80341DDC 7C 00 F8 00 */ cmpw r0, r31 -/* 80341DE0 41 82 00 54 */ beq lbl_80341E34 -/* 80341DE4 93 FD 02 D4 */ stw r31, 0x2d4(r29) -/* 80341DE8 7F BF EB 78 */ mr r31, r29 -lbl_80341DEC: -/* 80341DEC 80 1F 02 CC */ lwz r0, 0x2cc(r31) -/* 80341DF0 2C 00 00 00 */ cmpwi r0, 0 -/* 80341DF4 41 81 00 2C */ bgt lbl_80341E20 -/* 80341DF8 7F E3 FB 78 */ mr r3, r31 -/* 80341DFC 4B FF EF B1 */ bl __OSGetEffectivePriority -/* 80341E00 80 1F 02 D0 */ lwz r0, 0x2d0(r31) -/* 80341E04 38 83 00 00 */ addi r4, r3, 0 -/* 80341E08 7C 00 20 00 */ cmpw r0, r4 -/* 80341E0C 41 82 00 14 */ beq lbl_80341E20 -/* 80341E10 7F E3 FB 78 */ mr r3, r31 -/* 80341E14 4B FF EF D5 */ bl SetEffectivePriority -/* 80341E18 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80341E1C 40 82 FF D0 */ bne lbl_80341DEC -lbl_80341E20: -/* 80341E20 80 0D 91 44 */ lwz r0, RunQueueHint(r13) -/* 80341E24 2C 00 00 00 */ cmpwi r0, 0 -/* 80341E28 41 82 00 0C */ beq lbl_80341E34 -/* 80341E2C 38 60 00 00 */ li r3, 0 -/* 80341E30 4B FF F1 C9 */ bl SelectThread -lbl_80341E34: -/* 80341E34 7F C3 F3 78 */ mr r3, r30 -/* 80341E38 4B FF B8 E5 */ bl OSRestoreInterrupts -/* 80341E3C 38 60 00 01 */ li r3, 1 -lbl_80341E40: -/* 80341E40 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80341E44 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80341E48 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80341E4C 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80341E50 38 21 00 20 */ addi r1, r1, 0x20 -/* 80341E54 7C 08 03 A6 */ mtlr r0 -/* 80341E58 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSSleepThread.s b/asm/dolphin/os/OSThread/OSSleepThread.s deleted file mode 100644 index 5ebaadb6954..00000000000 --- a/asm/dolphin/os/OSThread/OSSleepThread.s +++ /dev/null @@ -1,69 +0,0 @@ -lbl_80341BAC: -/* 80341BAC 7C 08 02 A6 */ mflr r0 -/* 80341BB0 90 01 00 04 */ stw r0, 4(r1) -/* 80341BB4 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80341BB8 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80341BBC 93 C1 00 10 */ stw r30, 0x10(r1) -/* 80341BC0 7C 7E 1B 78 */ mr r30, r3 -/* 80341BC4 4B FF BB 31 */ bl OSDisableInterrupts -/* 80341BC8 3C 80 80 00 */ lis r4, 0x8000 /* 0x800000E4@ha */ -/* 80341BCC 80 84 00 E4 */ lwz r4, 0x00E4(r4) /* 0x800000E4@l */ -/* 80341BD0 38 00 00 04 */ li r0, 4 -/* 80341BD4 7C 7F 1B 78 */ mr r31, r3 -/* 80341BD8 B0 04 02 C8 */ sth r0, 0x2c8(r4) -/* 80341BDC 93 C4 02 DC */ stw r30, 0x2dc(r4) -/* 80341BE0 80 BE 00 00 */ lwz r5, 0(r30) -/* 80341BE4 48 00 00 08 */ b lbl_80341BEC -lbl_80341BE8: -/* 80341BE8 80 A5 02 E0 */ lwz r5, 0x2e0(r5) -lbl_80341BEC: -/* 80341BEC 28 05 00 00 */ cmplwi r5, 0 -/* 80341BF0 41 82 00 14 */ beq lbl_80341C04 -/* 80341BF4 80 65 02 D0 */ lwz r3, 0x2d0(r5) -/* 80341BF8 80 04 02 D0 */ lwz r0, 0x2d0(r4) -/* 80341BFC 7C 03 00 00 */ cmpw r3, r0 -/* 80341C00 40 81 FF E8 */ ble lbl_80341BE8 -lbl_80341C04: -/* 80341C04 28 05 00 00 */ cmplwi r5, 0 -/* 80341C08 40 82 00 30 */ bne lbl_80341C38 -/* 80341C0C 80 7E 00 04 */ lwz r3, 4(r30) -/* 80341C10 28 03 00 00 */ cmplwi r3, 0 -/* 80341C14 40 82 00 0C */ bne lbl_80341C20 -/* 80341C18 90 9E 00 00 */ stw r4, 0(r30) -/* 80341C1C 48 00 00 08 */ b lbl_80341C24 -lbl_80341C20: -/* 80341C20 90 83 02 E0 */ stw r4, 0x2e0(r3) -lbl_80341C24: -/* 80341C24 90 64 02 E4 */ stw r3, 0x2e4(r4) -/* 80341C28 38 00 00 00 */ li r0, 0 -/* 80341C2C 90 04 02 E0 */ stw r0, 0x2e0(r4) -/* 80341C30 90 9E 00 04 */ stw r4, 4(r30) -/* 80341C34 48 00 00 28 */ b lbl_80341C5C -lbl_80341C38: -/* 80341C38 90 A4 02 E0 */ stw r5, 0x2e0(r4) -/* 80341C3C 80 65 02 E4 */ lwz r3, 0x2e4(r5) -/* 80341C40 90 85 02 E4 */ stw r4, 0x2e4(r5) -/* 80341C44 28 03 00 00 */ cmplwi r3, 0 -/* 80341C48 90 64 02 E4 */ stw r3, 0x2e4(r4) -/* 80341C4C 40 82 00 0C */ bne lbl_80341C58 -/* 80341C50 90 9E 00 00 */ stw r4, 0(r30) -/* 80341C54 48 00 00 08 */ b lbl_80341C5C -lbl_80341C58: -/* 80341C58 90 83 02 E0 */ stw r4, 0x2e0(r3) -lbl_80341C5C: -/* 80341C5C 38 00 00 01 */ li r0, 1 -/* 80341C60 90 0D 91 44 */ stw r0, RunQueueHint(r13) -/* 80341C64 80 0D 91 44 */ lwz r0, RunQueueHint(r13) -/* 80341C68 2C 00 00 00 */ cmpwi r0, 0 -/* 80341C6C 41 82 00 0C */ beq lbl_80341C78 -/* 80341C70 38 60 00 00 */ li r3, 0 -/* 80341C74 4B FF F3 85 */ bl SelectThread -lbl_80341C78: -/* 80341C78 7F E3 FB 78 */ mr r3, r31 -/* 80341C7C 4B FF BA A1 */ bl OSRestoreInterrupts -/* 80341C80 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80341C84 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80341C88 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80341C8C 38 21 00 18 */ addi r1, r1, 0x18 -/* 80341C90 7C 08 03 A6 */ mtlr r0 -/* 80341C94 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSSuspendThread.s b/asm/dolphin/os/OSThread/OSSuspendThread.s deleted file mode 100644 index 56c357749f3..00000000000 --- a/asm/dolphin/os/OSThread/OSSuspendThread.s +++ /dev/null @@ -1,106 +0,0 @@ -lbl_80341A3C: -/* 80341A3C 7C 08 02 A6 */ mflr r0 -/* 80341A40 90 01 00 04 */ stw r0, 4(r1) -/* 80341A44 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80341A48 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80341A4C 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80341A50 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80341A54 7C 7D 1B 78 */ mr r29, r3 -/* 80341A58 4B FF BC 9D */ bl OSDisableInterrupts -/* 80341A5C 80 9D 02 CC */ lwz r4, 0x2cc(r29) -/* 80341A60 3B E3 00 00 */ addi r31, r3, 0 -/* 80341A64 38 04 00 01 */ addi r0, r4, 1 -/* 80341A68 7C 9E 23 79 */ or. r30, r4, r4 -/* 80341A6C 90 1D 02 CC */ stw r0, 0x2cc(r29) -/* 80341A70 40 82 01 14 */ bne lbl_80341B84 -/* 80341A74 A0 1D 02 C8 */ lhz r0, 0x2c8(r29) -/* 80341A78 2C 00 00 03 */ cmpwi r0, 3 -/* 80341A7C 41 82 00 F4 */ beq lbl_80341B70 -/* 80341A80 40 80 00 14 */ bge lbl_80341A94 -/* 80341A84 2C 00 00 01 */ cmpwi r0, 1 -/* 80341A88 41 82 00 28 */ beq lbl_80341AB0 -/* 80341A8C 40 80 00 14 */ bge lbl_80341AA0 -/* 80341A90 48 00 00 E0 */ b lbl_80341B70 -lbl_80341A94: -/* 80341A94 2C 00 00 05 */ cmpwi r0, 5 -/* 80341A98 40 80 00 D8 */ bge lbl_80341B70 -/* 80341A9C 48 00 00 20 */ b lbl_80341ABC -lbl_80341AA0: -/* 80341AA0 38 00 00 01 */ li r0, 1 -/* 80341AA4 90 0D 91 44 */ stw r0, RunQueueHint(r13) -/* 80341AA8 B0 1D 02 C8 */ sth r0, 0x2c8(r29) -/* 80341AAC 48 00 00 C4 */ b lbl_80341B70 -lbl_80341AB0: -/* 80341AB0 7F A3 EB 78 */ mr r3, r29 -/* 80341AB4 4B FF F2 91 */ bl UnsetRun -/* 80341AB8 48 00 00 B8 */ b lbl_80341B70 -lbl_80341ABC: -/* 80341ABC 80 9D 02 E0 */ lwz r4, 0x2e0(r29) -/* 80341AC0 80 BD 02 E4 */ lwz r5, 0x2e4(r29) -/* 80341AC4 28 04 00 00 */ cmplwi r4, 0 -/* 80341AC8 40 82 00 10 */ bne lbl_80341AD8 -/* 80341ACC 80 7D 02 DC */ lwz r3, 0x2dc(r29) -/* 80341AD0 90 A3 00 04 */ stw r5, 4(r3) -/* 80341AD4 48 00 00 08 */ b lbl_80341ADC -lbl_80341AD8: -/* 80341AD8 90 A4 02 E4 */ stw r5, 0x2e4(r4) -lbl_80341ADC: -/* 80341ADC 28 05 00 00 */ cmplwi r5, 0 -/* 80341AE0 40 82 00 10 */ bne lbl_80341AF0 -/* 80341AE4 80 7D 02 DC */ lwz r3, 0x2dc(r29) -/* 80341AE8 90 83 00 00 */ stw r4, 0(r3) -/* 80341AEC 48 00 00 08 */ b lbl_80341AF4 -lbl_80341AF0: -/* 80341AF0 90 85 02 E0 */ stw r4, 0x2e0(r5) -lbl_80341AF4: -/* 80341AF4 38 00 00 20 */ li r0, 0x20 -/* 80341AF8 90 1D 02 D0 */ stw r0, 0x2d0(r29) -/* 80341AFC 80 9D 02 DC */ lwz r4, 0x2dc(r29) -/* 80341B00 80 64 00 04 */ lwz r3, 4(r4) -/* 80341B04 28 03 00 00 */ cmplwi r3, 0 -/* 80341B08 40 82 00 0C */ bne lbl_80341B14 -/* 80341B0C 93 A4 00 00 */ stw r29, 0(r4) -/* 80341B10 48 00 00 08 */ b lbl_80341B18 -lbl_80341B14: -/* 80341B14 93 A3 02 E0 */ stw r29, 0x2e0(r3) -lbl_80341B18: -/* 80341B18 90 7D 02 E4 */ stw r3, 0x2e4(r29) -/* 80341B1C 38 00 00 00 */ li r0, 0 -/* 80341B20 90 1D 02 E0 */ stw r0, 0x2e0(r29) -/* 80341B24 80 7D 02 DC */ lwz r3, 0x2dc(r29) -/* 80341B28 93 A3 00 04 */ stw r29, 4(r3) -/* 80341B2C 80 7D 02 F0 */ lwz r3, 0x2f0(r29) -/* 80341B30 28 03 00 00 */ cmplwi r3, 0 -/* 80341B34 41 82 00 3C */ beq lbl_80341B70 -/* 80341B38 83 A3 00 08 */ lwz r29, 8(r3) -lbl_80341B3C: -/* 80341B3C 80 1D 02 CC */ lwz r0, 0x2cc(r29) -/* 80341B40 2C 00 00 00 */ cmpwi r0, 0 -/* 80341B44 41 81 00 2C */ bgt lbl_80341B70 -/* 80341B48 7F A3 EB 78 */ mr r3, r29 -/* 80341B4C 4B FF F2 61 */ bl __OSGetEffectivePriority -/* 80341B50 80 1D 02 D0 */ lwz r0, 0x2d0(r29) -/* 80341B54 38 83 00 00 */ addi r4, r3, 0 -/* 80341B58 7C 00 20 00 */ cmpw r0, r4 -/* 80341B5C 41 82 00 14 */ beq lbl_80341B70 -/* 80341B60 7F A3 EB 78 */ mr r3, r29 -/* 80341B64 4B FF F2 85 */ bl SetEffectivePriority -/* 80341B68 7C 7D 1B 79 */ or. r29, r3, r3 -/* 80341B6C 40 82 FF D0 */ bne lbl_80341B3C -lbl_80341B70: -/* 80341B70 80 0D 91 44 */ lwz r0, RunQueueHint(r13) -/* 80341B74 2C 00 00 00 */ cmpwi r0, 0 -/* 80341B78 41 82 00 0C */ beq lbl_80341B84 -/* 80341B7C 38 60 00 00 */ li r3, 0 -/* 80341B80 4B FF F4 79 */ bl SelectThread -lbl_80341B84: -/* 80341B84 7F E3 FB 78 */ mr r3, r31 -/* 80341B88 4B FF BB 95 */ bl OSRestoreInterrupts -/* 80341B8C 7F C3 F3 78 */ mr r3, r30 -/* 80341B90 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80341B94 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80341B98 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80341B9C 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80341BA0 38 21 00 20 */ addi r1, r1, 0x20 -/* 80341BA4 7C 08 03 A6 */ mtlr r0 -/* 80341BA8 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSWakeupThread.s b/asm/dolphin/os/OSThread/OSWakeupThread.s deleted file mode 100644 index 9c00ce24e9b..00000000000 --- a/asm/dolphin/os/OSThread/OSWakeupThread.s +++ /dev/null @@ -1,73 +0,0 @@ -lbl_80341C98: -/* 80341C98 7C 08 02 A6 */ mflr r0 -/* 80341C9C 90 01 00 04 */ stw r0, 4(r1) -/* 80341CA0 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80341CA4 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80341CA8 93 C1 00 10 */ stw r30, 0x10(r1) -/* 80341CAC 7C 7E 1B 78 */ mr r30, r3 -/* 80341CB0 4B FF BA 45 */ bl OSDisableInterrupts -/* 80341CB4 3C 80 80 45 */ lis r4, RunQueue@ha /* 0x8044BB78@ha */ -/* 80341CB8 3B E3 00 00 */ addi r31, r3, 0 -/* 80341CBC 38 A4 BB 78 */ addi r5, r4, RunQueue@l /* 0x8044BB78@l */ -/* 80341CC0 48 00 00 9C */ b lbl_80341D5C -lbl_80341CC4: -/* 80341CC4 80 66 02 E0 */ lwz r3, 0x2e0(r6) -/* 80341CC8 28 03 00 00 */ cmplwi r3, 0 -/* 80341CCC 40 82 00 10 */ bne lbl_80341CDC -/* 80341CD0 38 00 00 00 */ li r0, 0 -/* 80341CD4 90 1E 00 04 */ stw r0, 4(r30) -/* 80341CD8 48 00 00 0C */ b lbl_80341CE4 -lbl_80341CDC: -/* 80341CDC 38 00 00 00 */ li r0, 0 -/* 80341CE0 90 03 02 E4 */ stw r0, 0x2e4(r3) -lbl_80341CE4: -/* 80341CE4 90 7E 00 00 */ stw r3, 0(r30) -/* 80341CE8 38 00 00 01 */ li r0, 1 -/* 80341CEC B0 06 02 C8 */ sth r0, 0x2c8(r6) -/* 80341CF0 80 06 02 CC */ lwz r0, 0x2cc(r6) -/* 80341CF4 2C 00 00 00 */ cmpwi r0, 0 -/* 80341CF8 41 81 00 64 */ bgt lbl_80341D5C -/* 80341CFC 80 06 02 D0 */ lwz r0, 0x2d0(r6) -/* 80341D00 54 00 18 38 */ slwi r0, r0, 3 -/* 80341D04 7C 05 02 14 */ add r0, r5, r0 -/* 80341D08 90 06 02 DC */ stw r0, 0x2dc(r6) -/* 80341D0C 80 86 02 DC */ lwz r4, 0x2dc(r6) -/* 80341D10 80 64 00 04 */ lwz r3, 4(r4) -/* 80341D14 28 03 00 00 */ cmplwi r3, 0 -/* 80341D18 40 82 00 0C */ bne lbl_80341D24 -/* 80341D1C 90 C4 00 00 */ stw r6, 0(r4) -/* 80341D20 48 00 00 08 */ b lbl_80341D28 -lbl_80341D24: -/* 80341D24 90 C3 02 E0 */ stw r6, 0x2e0(r3) -lbl_80341D28: -/* 80341D28 90 66 02 E4 */ stw r3, 0x2e4(r6) -/* 80341D2C 38 00 00 00 */ li r0, 0 -/* 80341D30 38 60 00 01 */ li r3, 1 -/* 80341D34 90 06 02 E0 */ stw r0, 0x2e0(r6) -/* 80341D38 80 86 02 DC */ lwz r4, 0x2dc(r6) -/* 80341D3C 90 C4 00 04 */ stw r6, 4(r4) -/* 80341D40 80 06 02 D0 */ lwz r0, 0x2d0(r6) -/* 80341D44 80 8D 91 40 */ lwz r4, RunQueueBits(r13) -/* 80341D48 20 00 00 1F */ subfic r0, r0, 0x1f -/* 80341D4C 7C 60 00 30 */ slw r0, r3, r0 -/* 80341D50 7C 80 03 78 */ or r0, r4, r0 -/* 80341D54 90 0D 91 40 */ stw r0, RunQueueBits(r13) -/* 80341D58 90 6D 91 44 */ stw r3, RunQueueHint(r13) -lbl_80341D5C: -/* 80341D5C 80 DE 00 00 */ lwz r6, 0(r30) -/* 80341D60 28 06 00 00 */ cmplwi r6, 0 -/* 80341D64 40 82 FF 60 */ bne lbl_80341CC4 -/* 80341D68 80 0D 91 44 */ lwz r0, RunQueueHint(r13) -/* 80341D6C 2C 00 00 00 */ cmpwi r0, 0 -/* 80341D70 41 82 00 0C */ beq lbl_80341D7C -/* 80341D74 38 60 00 00 */ li r3, 0 -/* 80341D78 4B FF F2 81 */ bl SelectThread -lbl_80341D7C: -/* 80341D7C 7F E3 FB 78 */ mr r3, r31 -/* 80341D80 4B FF B9 9D */ bl OSRestoreInterrupts -/* 80341D84 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80341D88 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80341D8C 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80341D90 38 21 00 18 */ addi r1, r1, 0x18 -/* 80341D94 7C 08 03 A6 */ mtlr r0 -/* 80341D98 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/SelectThread.s b/asm/dolphin/os/OSThread/SelectThread.s deleted file mode 100644 index be05df93b71..00000000000 --- a/asm/dolphin/os/OSThread/SelectThread.s +++ /dev/null @@ -1,153 +0,0 @@ -lbl_80340FF8: -/* 80340FF8 7C 08 02 A6 */ mflr r0 -/* 80340FFC 3C 80 80 45 */ lis r4, RunQueue@ha /* 0x8044BB78@ha */ -/* 80341000 90 01 00 04 */ stw r0, 4(r1) -/* 80341004 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80341008 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8034100C 3B E4 BB 78 */ addi r31, r4, RunQueue@l /* 0x8044BB78@l */ -/* 80341010 93 C1 00 10 */ stw r30, 0x10(r1) -/* 80341014 3B C3 00 00 */ addi r30, r3, 0 -/* 80341018 80 0D 91 48 */ lwz r0, Reschedule(r13) -/* 8034101C 2C 00 00 00 */ cmpwi r0, 0 -/* 80341020 40 81 00 0C */ ble lbl_8034102C -/* 80341024 38 60 00 00 */ li r3, 0 -/* 80341028 48 00 01 E0 */ b lbl_80341208 -lbl_8034102C: -/* 8034102C 4B FF AE 69 */ bl OSGetCurrentContext -/* 80341030 3C 80 80 00 */ lis r4, 0x8000 /* 0x800000E4@ha */ -/* 80341034 80 C4 00 E4 */ lwz r6, 0x00E4(r4) /* 0x800000E4@l */ -/* 80341038 7C 03 30 40 */ cmplw r3, r6 -/* 8034103C 38 66 00 00 */ addi r3, r6, 0 -/* 80341040 41 82 00 0C */ beq lbl_8034104C -/* 80341044 38 60 00 00 */ li r3, 0 -/* 80341048 48 00 01 C0 */ b lbl_80341208 -lbl_8034104C: -/* 8034104C 28 06 00 00 */ cmplwi r6, 0 -/* 80341050 41 82 00 BC */ beq lbl_8034110C -/* 80341054 A0 06 02 C8 */ lhz r0, 0x2c8(r6) -/* 80341058 28 00 00 02 */ cmplwi r0, 2 -/* 8034105C 40 82 00 90 */ bne lbl_803410EC -/* 80341060 2C 1E 00 00 */ cmpwi r30, 0 -/* 80341064 40 82 00 20 */ bne lbl_80341084 -/* 80341068 80 8D 91 40 */ lwz r4, RunQueueBits(r13) -/* 8034106C 80 06 02 D0 */ lwz r0, 0x2d0(r6) -/* 80341070 7C 84 00 34 */ cntlzw r4, r4 -/* 80341074 7C 00 20 00 */ cmpw r0, r4 -/* 80341078 41 81 00 0C */ bgt lbl_80341084 -/* 8034107C 38 60 00 00 */ li r3, 0 -/* 80341080 48 00 01 88 */ b lbl_80341208 -lbl_80341084: -/* 80341084 38 00 00 01 */ li r0, 1 -/* 80341088 B0 06 02 C8 */ sth r0, 0x2c8(r6) -/* 8034108C 80 06 02 D0 */ lwz r0, 0x2d0(r6) -/* 80341090 54 00 18 38 */ slwi r0, r0, 3 -/* 80341094 7C 1F 02 14 */ add r0, r31, r0 -/* 80341098 90 06 02 DC */ stw r0, 0x2dc(r6) -/* 8034109C 80 A6 02 DC */ lwz r5, 0x2dc(r6) -/* 803410A0 80 85 00 04 */ lwz r4, 4(r5) -/* 803410A4 28 04 00 00 */ cmplwi r4, 0 -/* 803410A8 40 82 00 0C */ bne lbl_803410B4 -/* 803410AC 90 C5 00 00 */ stw r6, 0(r5) -/* 803410B0 48 00 00 08 */ b lbl_803410B8 -lbl_803410B4: -/* 803410B4 90 C4 02 E0 */ stw r6, 0x2e0(r4) -lbl_803410B8: -/* 803410B8 90 86 02 E4 */ stw r4, 0x2e4(r6) -/* 803410BC 38 00 00 00 */ li r0, 0 -/* 803410C0 38 80 00 01 */ li r4, 1 -/* 803410C4 90 06 02 E0 */ stw r0, 0x2e0(r6) -/* 803410C8 80 A6 02 DC */ lwz r5, 0x2dc(r6) -/* 803410CC 90 C5 00 04 */ stw r6, 4(r5) -/* 803410D0 80 06 02 D0 */ lwz r0, 0x2d0(r6) -/* 803410D4 80 AD 91 40 */ lwz r5, RunQueueBits(r13) -/* 803410D8 20 00 00 1F */ subfic r0, r0, 0x1f -/* 803410DC 7C 80 00 30 */ slw r0, r4, r0 -/* 803410E0 7C A0 03 78 */ or r0, r5, r0 -/* 803410E4 90 0D 91 40 */ stw r0, RunQueueBits(r13) -/* 803410E8 90 8D 91 44 */ stw r4, RunQueueHint(r13) -lbl_803410EC: -/* 803410EC A0 06 01 A2 */ lhz r0, 0x1a2(r6) -/* 803410F0 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e -/* 803410F4 40 82 00 18 */ bne lbl_8034110C -/* 803410F8 4B FF AD A9 */ bl OSSaveContext -/* 803410FC 28 03 00 00 */ cmplwi r3, 0 -/* 80341100 41 82 00 0C */ beq lbl_8034110C -/* 80341104 38 60 00 00 */ li r3, 0 -/* 80341108 48 00 01 00 */ b lbl_80341208 -lbl_8034110C: -/* 8034110C 80 0D 91 40 */ lwz r0, RunQueueBits(r13) -/* 80341110 28 00 00 00 */ cmplwi r0, 0 -/* 80341114 40 82 00 54 */ bne lbl_80341168 -/* 80341118 81 8D 84 38 */ lwz r12, SwitchThreadCallback(r13) -/* 8034111C 3F C0 80 00 */ lis r30, 0x8000 /* 0x800000E4@ha */ -/* 80341120 80 7E 00 E4 */ lwz r3, 0x00E4(r30) /* 0x800000E4@l */ -/* 80341124 38 80 00 00 */ li r4, 0 -/* 80341128 7D 88 03 A6 */ mtlr r12 -/* 8034112C 4E 80 00 21 */ blrl -/* 80341130 38 00 00 00 */ li r0, 0 -/* 80341134 90 1E 00 E4 */ stw r0, 0xe4(r30) -/* 80341138 38 7F 07 30 */ addi r3, r31, 0x730 -/* 8034113C 4B FF AC FD */ bl OSSetCurrentContext -lbl_80341140: -/* 80341140 4B FF C5 C9 */ bl OSEnableInterrupts -lbl_80341144: -/* 80341144 80 0D 91 40 */ lwz r0, RunQueueBits(r13) -/* 80341148 28 00 00 00 */ cmplwi r0, 0 -/* 8034114C 41 82 FF F8 */ beq lbl_80341144 -/* 80341150 4B FF C5 A5 */ bl OSDisableInterrupts -/* 80341154 80 0D 91 40 */ lwz r0, RunQueueBits(r13) -/* 80341158 28 00 00 00 */ cmplwi r0, 0 -/* 8034115C 41 82 FF E4 */ beq lbl_80341140 -/* 80341160 38 7F 07 30 */ addi r3, r31, 0x730 -/* 80341164 4B FF AE 9D */ bl OSClearContext -lbl_80341168: -/* 80341168 38 60 00 00 */ li r3, 0 -/* 8034116C 90 6D 91 44 */ stw r3, RunQueueHint(r13) -/* 80341170 80 0D 91 40 */ lwz r0, RunQueueBits(r13) -/* 80341174 7C 07 00 34 */ cntlzw r7, r0 -/* 80341178 54 E0 18 38 */ slwi r0, r7, 3 -/* 8034117C 7C 9F 02 14 */ add r4, r31, r0 -/* 80341180 80 A4 00 00 */ lwz r5, 0(r4) -/* 80341184 80 C5 02 E0 */ lwz r6, 0x2e0(r5) -/* 80341188 3B C5 00 00 */ addi r30, r5, 0 -/* 8034118C 28 06 00 00 */ cmplwi r6, 0 -/* 80341190 40 82 00 0C */ bne lbl_8034119C -/* 80341194 90 64 00 04 */ stw r3, 4(r4) -/* 80341198 48 00 00 08 */ b lbl_803411A0 -lbl_8034119C: -/* 8034119C 90 66 02 E4 */ stw r3, 0x2e4(r6) -lbl_803411A0: -/* 803411A0 90 C4 00 00 */ stw r6, 0(r4) -/* 803411A4 80 04 00 00 */ lwz r0, 0(r4) -/* 803411A8 28 00 00 00 */ cmplwi r0, 0 -/* 803411AC 40 82 00 1C */ bne lbl_803411C8 -/* 803411B0 20 07 00 1F */ subfic r0, r7, 0x1f -/* 803411B4 80 8D 91 40 */ lwz r4, RunQueueBits(r13) -/* 803411B8 38 60 00 01 */ li r3, 1 -/* 803411BC 7C 60 00 30 */ slw r0, r3, r0 -/* 803411C0 7C 80 00 78 */ andc r0, r4, r0 -/* 803411C4 90 0D 91 40 */ stw r0, RunQueueBits(r13) -lbl_803411C8: -/* 803411C8 38 00 00 00 */ li r0, 0 -/* 803411CC 90 1E 02 DC */ stw r0, 0x2dc(r30) -/* 803411D0 38 00 00 02 */ li r0, 2 -/* 803411D4 3F E0 80 00 */ lis r31, 0x8000 /* 0x800000E4@ha */ -/* 803411D8 B0 1E 02 C8 */ sth r0, 0x2c8(r30) -/* 803411DC 7F C4 F3 78 */ mr r4, r30 -/* 803411E0 81 8D 84 38 */ lwz r12, SwitchThreadCallback(r13) -/* 803411E4 80 7F 00 E4 */ lwz r3, 0x00E4(r31) /* 0x800000E4@l */ -/* 803411E8 7D 88 03 A6 */ mtlr r12 -/* 803411EC 4E 80 00 21 */ blrl -/* 803411F0 93 DF 00 E4 */ stw r30, 0xe4(r31) -/* 803411F4 7F C3 F3 78 */ mr r3, r30 -/* 803411F8 4B FF AC 41 */ bl OSSetCurrentContext -/* 803411FC 7F C3 F3 78 */ mr r3, r30 -/* 80341200 4B FF AD 21 */ bl OSLoadContext -/* 80341204 7F C3 F3 78 */ mr r3, r30 -lbl_80341208: -/* 80341208 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8034120C 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80341210 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80341214 38 21 00 18 */ addi r1, r1, 0x18 -/* 80341218 7C 08 03 A6 */ mtlr r0 -/* 8034121C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/SetEffectivePriority.s b/asm/dolphin/os/OSThread/SetEffectivePriority.s deleted file mode 100644 index 09eb2024436..00000000000 --- a/asm/dolphin/os/OSThread/SetEffectivePriority.s +++ /dev/null @@ -1,133 +0,0 @@ -lbl_80340DE8: -/* 80340DE8 7C 08 02 A6 */ mflr r0 -/* 80340DEC 90 01 00 04 */ stw r0, 4(r1) -/* 80340DF0 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80340DF4 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80340DF8 7C 7F 1B 78 */ mr r31, r3 -/* 80340DFC 93 C1 00 10 */ stw r30, 0x10(r1) -/* 80340E00 3B C4 00 00 */ addi r30, r4, 0 -/* 80340E04 A0 03 02 C8 */ lhz r0, 0x2c8(r3) -/* 80340E08 2C 00 00 03 */ cmpwi r0, 3 -/* 80340E0C 41 82 01 80 */ beq lbl_80340F8C -/* 80340E10 40 80 00 14 */ bge lbl_80340E24 -/* 80340E14 2C 00 00 01 */ cmpwi r0, 1 -/* 80340E18 41 82 00 18 */ beq lbl_80340E30 -/* 80340E1C 40 80 01 64 */ bge lbl_80340F80 -/* 80340E20 48 00 01 6C */ b lbl_80340F8C -lbl_80340E24: -/* 80340E24 2C 00 00 05 */ cmpwi r0, 5 -/* 80340E28 40 80 01 64 */ bge lbl_80340F8C -/* 80340E2C 48 00 00 7C */ b lbl_80340EA8 -lbl_80340E30: -/* 80340E30 7F E3 FB 78 */ mr r3, r31 -/* 80340E34 4B FF FF 11 */ bl UnsetRun -/* 80340E38 93 DF 02 D0 */ stw r30, 0x2d0(r31) -/* 80340E3C 3C 60 80 45 */ lis r3, RunQueue@ha /* 0x8044BB78@ha */ -/* 80340E40 38 03 BB 78 */ addi r0, r3, RunQueue@l /* 0x8044BB78@l */ -/* 80340E44 80 7F 02 D0 */ lwz r3, 0x2d0(r31) -/* 80340E48 54 63 18 38 */ slwi r3, r3, 3 -/* 80340E4C 7C 00 1A 14 */ add r0, r0, r3 -/* 80340E50 90 1F 02 DC */ stw r0, 0x2dc(r31) -/* 80340E54 80 9F 02 DC */ lwz r4, 0x2dc(r31) -/* 80340E58 80 64 00 04 */ lwz r3, 4(r4) -/* 80340E5C 28 03 00 00 */ cmplwi r3, 0 -/* 80340E60 40 82 00 0C */ bne lbl_80340E6C -/* 80340E64 93 E4 00 00 */ stw r31, 0(r4) -/* 80340E68 48 00 00 08 */ b lbl_80340E70 -lbl_80340E6C: -/* 80340E6C 93 E3 02 E0 */ stw r31, 0x2e0(r3) -lbl_80340E70: -/* 80340E70 90 7F 02 E4 */ stw r3, 0x2e4(r31) -/* 80340E74 38 00 00 00 */ li r0, 0 -/* 80340E78 38 60 00 01 */ li r3, 1 -/* 80340E7C 90 1F 02 E0 */ stw r0, 0x2e0(r31) -/* 80340E80 80 9F 02 DC */ lwz r4, 0x2dc(r31) -/* 80340E84 93 E4 00 04 */ stw r31, 4(r4) -/* 80340E88 80 1F 02 D0 */ lwz r0, 0x2d0(r31) -/* 80340E8C 80 8D 91 40 */ lwz r4, RunQueueBits(r13) -/* 80340E90 20 00 00 1F */ subfic r0, r0, 0x1f -/* 80340E94 7C 60 00 30 */ slw r0, r3, r0 -/* 80340E98 7C 80 03 78 */ or r0, r4, r0 -/* 80340E9C 90 0D 91 40 */ stw r0, RunQueueBits(r13) -/* 80340EA0 90 6D 91 44 */ stw r3, RunQueueHint(r13) -/* 80340EA4 48 00 00 E8 */ b lbl_80340F8C -lbl_80340EA8: -/* 80340EA8 80 9F 02 E0 */ lwz r4, 0x2e0(r31) -/* 80340EAC 80 BF 02 E4 */ lwz r5, 0x2e4(r31) -/* 80340EB0 28 04 00 00 */ cmplwi r4, 0 -/* 80340EB4 40 82 00 10 */ bne lbl_80340EC4 -/* 80340EB8 80 7F 02 DC */ lwz r3, 0x2dc(r31) -/* 80340EBC 90 A3 00 04 */ stw r5, 4(r3) -/* 80340EC0 48 00 00 08 */ b lbl_80340EC8 -lbl_80340EC4: -/* 80340EC4 90 A4 02 E4 */ stw r5, 0x2e4(r4) -lbl_80340EC8: -/* 80340EC8 28 05 00 00 */ cmplwi r5, 0 -/* 80340ECC 40 82 00 10 */ bne lbl_80340EDC -/* 80340ED0 80 7F 02 DC */ lwz r3, 0x2dc(r31) -/* 80340ED4 90 83 00 00 */ stw r4, 0(r3) -/* 80340ED8 48 00 00 08 */ b lbl_80340EE0 -lbl_80340EDC: -/* 80340EDC 90 85 02 E0 */ stw r4, 0x2e0(r5) -lbl_80340EE0: -/* 80340EE0 93 DF 02 D0 */ stw r30, 0x2d0(r31) -/* 80340EE4 80 9F 02 DC */ lwz r4, 0x2dc(r31) -/* 80340EE8 80 A4 00 00 */ lwz r5, 0(r4) -/* 80340EEC 48 00 00 08 */ b lbl_80340EF4 -lbl_80340EF0: -/* 80340EF0 80 A5 02 E0 */ lwz r5, 0x2e0(r5) -lbl_80340EF4: -/* 80340EF4 28 05 00 00 */ cmplwi r5, 0 -/* 80340EF8 41 82 00 14 */ beq lbl_80340F0C -/* 80340EFC 80 65 02 D0 */ lwz r3, 0x2d0(r5) -/* 80340F00 80 1F 02 D0 */ lwz r0, 0x2d0(r31) -/* 80340F04 7C 03 00 00 */ cmpw r3, r0 -/* 80340F08 40 81 FF E8 */ ble lbl_80340EF0 -lbl_80340F0C: -/* 80340F0C 28 05 00 00 */ cmplwi r5, 0 -/* 80340F10 40 82 00 34 */ bne lbl_80340F44 -/* 80340F14 80 64 00 04 */ lwz r3, 4(r4) -/* 80340F18 28 03 00 00 */ cmplwi r3, 0 -/* 80340F1C 40 82 00 0C */ bne lbl_80340F28 -/* 80340F20 93 E4 00 00 */ stw r31, 0(r4) -/* 80340F24 48 00 00 08 */ b lbl_80340F2C -lbl_80340F28: -/* 80340F28 93 E3 02 E0 */ stw r31, 0x2e0(r3) -lbl_80340F2C: -/* 80340F2C 90 7F 02 E4 */ stw r3, 0x2e4(r31) -/* 80340F30 38 00 00 00 */ li r0, 0 -/* 80340F34 90 1F 02 E0 */ stw r0, 0x2e0(r31) -/* 80340F38 80 7F 02 DC */ lwz r3, 0x2dc(r31) -/* 80340F3C 93 E3 00 04 */ stw r31, 4(r3) -/* 80340F40 48 00 00 2C */ b lbl_80340F6C -lbl_80340F44: -/* 80340F44 90 BF 02 E0 */ stw r5, 0x2e0(r31) -/* 80340F48 80 65 02 E4 */ lwz r3, 0x2e4(r5) -/* 80340F4C 93 E5 02 E4 */ stw r31, 0x2e4(r5) -/* 80340F50 28 03 00 00 */ cmplwi r3, 0 -/* 80340F54 90 7F 02 E4 */ stw r3, 0x2e4(r31) -/* 80340F58 40 82 00 10 */ bne lbl_80340F68 -/* 80340F5C 80 7F 02 DC */ lwz r3, 0x2dc(r31) -/* 80340F60 93 E3 00 00 */ stw r31, 0(r3) -/* 80340F64 48 00 00 08 */ b lbl_80340F6C -lbl_80340F68: -/* 80340F68 93 E3 02 E0 */ stw r31, 0x2e0(r3) -lbl_80340F6C: -/* 80340F6C 80 7F 02 F0 */ lwz r3, 0x2f0(r31) -/* 80340F70 28 03 00 00 */ cmplwi r3, 0 -/* 80340F74 41 82 00 18 */ beq lbl_80340F8C -/* 80340F78 80 63 00 08 */ lwz r3, 8(r3) -/* 80340F7C 48 00 00 14 */ b lbl_80340F90 -lbl_80340F80: -/* 80340F80 38 00 00 01 */ li r0, 1 -/* 80340F84 90 0D 91 44 */ stw r0, RunQueueHint(r13) -/* 80340F88 93 DF 02 D0 */ stw r30, 0x2d0(r31) -lbl_80340F8C: -/* 80340F8C 38 60 00 00 */ li r3, 0 -lbl_80340F90: -/* 80340F90 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80340F94 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80340F98 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80340F9C 38 21 00 18 */ addi r1, r1, 0x18 -/* 80340FA0 7C 08 03 A6 */ mtlr r0 -/* 80340FA4 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/__OSPromoteThread.s b/asm/dolphin/os/OSThread/__OSPromoteThread.s deleted file mode 100644 index 09a12a15272..00000000000 --- a/asm/dolphin/os/OSThread/__OSPromoteThread.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_80340FA8: -/* 80340FA8 7C 08 02 A6 */ mflr r0 -/* 80340FAC 90 01 00 04 */ stw r0, 4(r1) -/* 80340FB0 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80340FB4 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80340FB8 7C 9F 23 78 */ mr r31, r4 -lbl_80340FBC: -/* 80340FBC 80 03 02 CC */ lwz r0, 0x2cc(r3) -/* 80340FC0 2C 00 00 00 */ cmpwi r0, 0 -/* 80340FC4 41 81 00 20 */ bgt lbl_80340FE4 -/* 80340FC8 80 03 02 D0 */ lwz r0, 0x2d0(r3) -/* 80340FCC 7C 00 F8 00 */ cmpw r0, r31 -/* 80340FD0 40 81 00 14 */ ble lbl_80340FE4 -/* 80340FD4 7F E4 FB 78 */ mr r4, r31 -/* 80340FD8 4B FF FE 11 */ bl SetEffectivePriority -/* 80340FDC 28 03 00 00 */ cmplwi r3, 0 -/* 80340FE0 40 82 FF DC */ bne lbl_80340FBC -lbl_80340FE4: -/* 80340FE4 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80340FE8 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80340FEC 38 21 00 18 */ addi r1, r1, 0x18 -/* 80340FF0 7C 08 03 A6 */ mtlr r0 -/* 80340FF4 4E 80 00 20 */ blr diff --git a/include/dolphin/os/OSThread.h b/include/dolphin/os/OSThread.h index b7009c7f042..888e668d5d0 100644 --- a/include/dolphin/os/OSThread.h +++ b/include/dolphin/os/OSThread.h @@ -104,9 +104,9 @@ void OSSleepThread(OSThreadQueue* queue); void OSWakeupThread(OSThreadQueue* queue); s32 OSSetThreadPriority(OSThread* thread, s32 priority); s32 OSGetThreadPriority(OSThread* thread); -static s32 CheckThreadQueue(OSThread* thread); +static s32 CheckThreadQueue(OSThreadQueue* thread); s32 OSCheckActiveThreads(void); -static void OSClearStack(u32 value); +static void OSClearStack(u8 value); extern u8 data_804516D0[8]; #ifdef __cplusplus diff --git a/libs/dolphin/os/OSThread.c b/libs/dolphin/os/OSThread.c index 1bd8360ce02..b6cf5bd25d1 100644 --- a/libs/dolphin/os/OSThread.c +++ b/libs/dolphin/os/OSThread.c @@ -79,7 +79,7 @@ volatile OSContext* __OSFPUContext : OS_BASE_CACHED + 0x00D8; // External References: // -extern u8 __OSErrorTable[68 + 12 /* padding */]; +extern OSErrorHandlerEx __OSErrorTable[17]; extern u32 __OSFpscrEnableBits; void _epilog(); @@ -92,17 +92,27 @@ static void DefaultSwitchThreadCallback(OSThread* from, OSThread* to) {} /* ############################################################################################## */ /* 804509B8-804509BC -00001 0004+00 3/3 0/0 0/0 .sdata SwitchThreadCallback */ -SECTION_SDATA static OSSwitchThreadCallback SwitchThreadCallback = DefaultSwitchThreadCallback; +static OSSwitchThreadCallback SwitchThreadCallback = DefaultSwitchThreadCallback; /* 80340AA8-80340B1C 33B3E8 0074+00 0/0 1/1 0/0 .text OSSetSwitchThreadCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm OSSwitchThreadCallback OSSetSwitchThreadCallback(OSSwitchThreadCallback func) { - nofralloc -#include "asm/dolphin/os/OSThread/OSSetSwitchThreadCallback.s" +OSSwitchThreadCallback OSSetSwitchThreadCallback(OSSwitchThreadCallback func) { + BOOL enable = OSDisableInterrupts(); + OSSwitchThreadCallback prev = SwitchThreadCallback; + OSSwitchThreadCallback temp; + if (func) { + temp = func; + } else { + temp = DefaultSwitchThreadCallback; + } + SwitchThreadCallback = temp; + + OSRestoreInterrupts(enable); + if (prev == DefaultSwitchThreadCallback) { + return NULL; + } + + return prev; } -#pragma pop /* ############################################################################################## */ /* 8044BB78-8044BC78 078898 0100+00 6/6 0/0 0/0 .bss RunQueue */ @@ -127,10 +137,10 @@ static OSContext IdleContext; #pragma pop /* 804516C0-804516C4 000BC0 0004+00 7/7 0/0 0/0 .sbss RunQueueBits */ -static u32 RunQueueBits; +static vu32 RunQueueBits; /* 804516C4-804516C8 000BC4 0004+00 11/11 0/0 0/0 .sbss RunQueueHint */ -static BOOL RunQueueHint; +static volatile BOOL RunQueueHint; /* 804516C8-804516D0 000BC8 0004+04 4/4 0/0 0/0 .sbss Reschedule */ static volatile s32 Reschedule; @@ -213,24 +223,20 @@ BOOL OSIsThreadTerminated(OSThread* thread) { } /* 80340CC4-80340D04 33B604 0040+00 0/0 8/8 0/0 .text OSDisableScheduler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 OSDisableScheduler(void) { - nofralloc -#include "asm/dolphin/os/OSThread/OSDisableScheduler.s" +s32 OSDisableScheduler(void) { + BOOL intr = OSDisableInterrupts(); + s32 ret = Reschedule++; + OSRestoreInterrupts(intr); + return ret; } -#pragma pop /* 80340D04-80340D44 33B644 0040+00 0/0 10/10 0/0 .text OSEnableScheduler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 OSEnableScheduler(void) { - nofralloc -#include "asm/dolphin/os/OSThread/OSEnableScheduler.s" +s32 OSEnableScheduler(void) { + BOOL intr = OSDisableInterrupts(); + s32 ret = Reschedule--; + OSRestoreInterrupts(intr); + return ret; } -#pragma pop static inline void SetRun(OSThread* thread) { thread->queue = &RunQueue[thread->effective_priority]; @@ -240,7 +246,8 @@ static inline void SetRun(OSThread* thread) { } /* 80340D44-80340DAC 33B684 0068+00 3/3 0/0 0/0 .text UnsetRun */ -static void UnsetRun(OSThread* thread) { +#pragma dont_inline on +static void UnsetRun(OSThread* thread) { OSThreadQueue* queue; OSThread* next; OSThread* prev; @@ -267,6 +274,7 @@ static void UnsetRun(OSThread* thread) { thread->queue = NULL; } +#pragma dont_inline reset /* 80340DAC-80340DE8 33B6EC 003C+00 4/4 2/2 0/0 .text __OSGetEffectivePriority */ s32 __OSGetEffectivePriority(OSThread* thread) { @@ -284,8 +292,6 @@ s32 __OSGetEffectivePriority(OSThread* thread) { } /* 80340DE8-80340FA8 33B728 01C0+00 5/5 0/0 0/0 .text SetEffectivePriority */ -// needs compiler epilogue patch -#ifdef NONMATCHING static OSThread* SetEffectivePriority(OSThread* thread, s32 priority) { switch (thread->state) { case OS_THREAD_STATE_READY: @@ -308,26 +314,32 @@ static OSThread* SetEffectivePriority(OSThread* thread, s32 priority) { } return NULL; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm OSThread* SetEffectivePriority(OSThread* thread, s32 priority) { - nofralloc -#include "asm/dolphin/os/OSThread/SetEffectivePriority.s" + +static void UpdatePriority(OSThread* thread) { + OSPriority priority; + + do { + if (0 < thread->suspend_count) { + break; + } + priority = __OSGetEffectivePriority(thread); + if (thread->effective_priority == priority) { + break; + } + thread = SetEffectivePriority(thread, priority); + } while (thread); } -#pragma pop -#endif /* 80340FA8-80340FF8 33B8E8 0050+00 0/0 1/1 0/0 .text __OSPromoteThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSPromoteThread(OSThread* thread, s32 priority) { - nofralloc -#include "asm/dolphin/os/OSThread/__OSPromoteThread.s" +void __OSPromoteThread(OSThread* thread, s32 priority) { + do { + if (thread->suspend_count > 0 || thread->effective_priority <= priority) { + break; + } + + thread = SetEffectivePriority(thread, priority); + } while(thread != NULL); } -#pragma pop static inline void __OSSwitchThread(OSThread* nextThread) { OSSetCurrentThread(nextThread); @@ -336,7 +348,6 @@ static inline void __OSSwitchThread(OSThread* nextThread) { } /* 80340FF8-80341220 33B938 0228+00 9/9 0/0 0/0 .text SelectThread */ -#ifdef NONMATCHING inline OSThread* i_OSGetCurrentThread(void) { return OS_CURRENT_THREAD; } @@ -376,8 +387,8 @@ static OSThread* SelectThread(BOOL yield) { } } - OSSetCurrentThread(NULL); if (RunQueueBits == 0) { + OSSetCurrentThread(NULL); OSSetCurrentContext(&IdleContext); do { OSEnableInterrupts(); @@ -402,16 +413,6 @@ static OSThread* SelectThread(BOOL yield) { __OSSwitchThread(nextThread); return nextThread; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm OSThread* SelectThread(BOOL yield) { - nofralloc -#include "asm/dolphin/os/OSThread/SelectThread.s" -} -#pragma pop -#endif /* 80341220-80341250 33BB60 0030+00 0/0 3/3 0/0 .text __OSReschedule */ void __OSReschedule(void) { @@ -432,95 +433,258 @@ void OSYieldThread(void) { } /* 8034128C-80341474 33BBCC 01E8+00 0/0 5/5 3/3 .text OSCreateThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL OSCreateThread(OSThread* thread, void* func, void* param, void* stackBase, u32 stackSize, - s32 priority, u16 attribute) { - nofralloc -#include "asm/dolphin/os/OSThread/OSCreateThread.s" +BOOL OSCreateThread(OSThread* thread_, void* func, void* param, void* stackBase, u32 stackSize, + s32 priority, u16 attribute) { + BOOL enabled; + u32 i; + u32* stack; + OSThread* thread; + u32 stack1, stack2; + + if (priority < 0 || priority > 31) { + return FALSE; + } + + thread = thread_; + + thread->state = OS_THREAD_STATE_READY; + thread->attributes = attribute & 1; + thread->base_priority = priority; + thread->effective_priority = priority; + thread->suspend_count = 1; + thread->exit_value = (void*)-1; + thread->mutex = NULL; + thread->join_queue.tail = NULL; + thread->join_queue.head = NULL; + thread->owned_mutexes.tail = NULL; + thread->owned_mutexes.head = NULL; + stack = (u32*)((u32)stackBase & 0xfffffff8); + stack[-2] = 0; + stack[-1] = 0; + OSInitContext(&thread->context, (u32)func,(u32)stack - 8); + thread->context.lr = (u32) OSExitThread; + thread->context.gpr[3] = (u32) param; + thread->stack_base = (u8*)stackBase; + thread->stack_end = (void*)((u32)stackBase - stackSize); + *(u32*)thread->stack_end = OS_THREAD_STACK_MAGIC; + thread->error_code = NULL; + thread->data[0] = NULL; + thread->data[1] = NULL; + enabled = OSDisableInterrupts(); + if (__OSErrorTable[16]) { + thread->context.srr1 |= 0x900; + thread->context.state |= 1; + thread->context.fpscr = (__OSFpscrEnableBits & 0xf8) | 4; + for (i = 0; i < 32; ++i) { + *(u64*)&thread->context.fpr[i] = (u64)0xffffffffffffffffLL; + *(u64*)&thread->context.ps[i] = (u64)0xffffffffffffffffLL; + } + } + + AddTail(&OS_THREAD_QUEUE, thread, active_threads_link); + OSRestoreInterrupts(enabled); + return TRUE; } -#pragma pop /* 80341474-80341558 33BDB4 00E4+00 1/1 1/1 0/0 .text OSExitThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSExitThread(void* exitValue) { - nofralloc -#include "asm/dolphin/os/OSThread/OSExitThread.s" +void OSExitThread(void* exitValue) { + OSThread* currentThread; + BOOL enabled; + enabled = OSDisableInterrupts(); + currentThread = OS_CURRENT_THREAD; + OSClearContext(¤tThread->context); + + if (currentThread->attributes & OS_THREAD_ATTR_DETACH) { + RemoveItem(&OS_THREAD_QUEUE, currentThread, active_threads_link); + currentThread->state = OS_THREAD_STATE_UNINITIALIZED; + } else { + currentThread->state = OS_THREAD_STATE_DEAD; + currentThread->exit_value = exitValue; + } + + __OSUnlockAllMutex(currentThread); + OSWakeupThread(¤tThread->join_queue); + RunQueueHint = TRUE; + + if (RunQueueHint) { + SelectThread(FALSE); + } + + OSRestoreInterrupts(enabled); } -#pragma pop /* 80341558-80341714 33BE98 01BC+00 0/0 4/4 3/3 .text OSCancelThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSCancelThread(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/OSCancelThread.s" +void OSCancelThread(OSThread* thread) { + BOOL enabled; + + enabled = OSDisableInterrupts(); + + switch (thread->state) { + case OS_THREAD_STATE_READY: + if (!(0 < thread->suspend_count)) { + UnsetRun(thread); + } + break; + case OS_THREAD_STATE_RUNNING: + RunQueueHint = TRUE; + break; + case OS_THREAD_STATE_WAITING: + RemoveItem(thread->queue, thread, link); + thread->queue = NULL; + if (!(0 < thread->suspend_count) && thread->mutex) { + UpdatePriority(thread->mutex->thread); + } + break; + default: + OSRestoreInterrupts(enabled); + return; + } + + OSClearContext(&thread->context); + if (thread->attributes & OS_THREAD_ATTR_DETACH) { + RemoveItem(&__OSActiveThreadQueue, thread, active_threads_link); + thread->state = 0; + } else { + thread->state = OS_THREAD_STATE_DEAD; + } + + __OSUnlockAllMutex(thread); + + OSWakeupThread(&thread->join_queue); + + __OSReschedule(); + OSRestoreInterrupts(enabled); } -#pragma pop /* 80341714-803417B4 33C054 00A0+00 0/0 2/2 0/0 .text OSDetachThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSDetachThread(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/OSDetachThread.s" +void OSDetachThread(OSThread* thread) { + BOOL enabled; + + enabled = OSDisableInterrupts(); + thread->attributes |= OS_THREAD_ATTR_DETACH; + + if (thread->state == OS_THREAD_STATE_DEAD) { + RemoveItem(&__OSActiveThreadQueue, thread, active_threads_link); + thread->state = OS_THREAD_STATE_UNINITIALIZED; + } + + OSWakeupThread(&thread->join_queue); + OSRestoreInterrupts(enabled); } -#pragma pop /* 803417B4-80341A3C 33C0F4 0288+00 0/0 13/13 3/3 .text OSResumeThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 OSResumeThread(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/OSResumeThread.s" +s32 OSResumeThread(OSThread* thread) { + BOOL enabled; + s32 suspendCount; + + enabled = OSDisableInterrupts(); + suspendCount = thread->suspend_count--; + if (thread->suspend_count < 0) { + thread->suspend_count = 0; + } else if (thread->suspend_count == 0) { + switch (thread->state) { + case OS_THREAD_STATE_READY: + thread->effective_priority = __OSGetEffectivePriority(thread); + SetRun(thread); + break; + case OS_THREAD_STATE_WAITING: + RemoveItem(thread->queue, thread, link); + thread->effective_priority = __OSGetEffectivePriority(thread); + AddPrio(thread->queue, thread, link); + if (thread->mutex) { + UpdatePriority(thread->mutex->thread); + } + break; + } + __OSReschedule(); + } + OSRestoreInterrupts(enabled); + return suspendCount; } -#pragma pop /* 80341A3C-80341BAC 33C37C 0170+00 0/0 7/7 4/4 .text OSSuspendThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 OSSuspendThread(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/OSSuspendThread.s" +s32 OSSuspendThread(OSThread* thread) { + BOOL enabled; + s32 suspendCount; + + enabled = OSDisableInterrupts(); + suspendCount = thread->suspend_count++; + if (suspendCount == 0) { + switch (thread->state) { + case OS_THREAD_STATE_RUNNING: + RunQueueHint = TRUE; + thread->state = OS_THREAD_STATE_READY; + break; + case OS_THREAD_STATE_READY: + UnsetRun(thread); + break; + case OS_THREAD_STATE_WAITING: + RemoveItem(thread->queue, thread, link); + thread->effective_priority = 32; + AddTail(thread->queue, thread, link); + if (thread->mutex) { + UpdatePriority(thread->mutex->thread); + } + break; + } + + __OSReschedule(); + } + OSRestoreInterrupts(enabled); + return suspendCount; } -#pragma pop /* 80341BAC-80341C98 33C4EC 00EC+00 0/0 12/12 0/0 .text OSSleepThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSSleepThread(OSThreadQueue* queue) { - nofralloc -#include "asm/dolphin/os/OSThread/OSSleepThread.s" +void OSSleepThread(OSThreadQueue* queue) { + BOOL enabled; + OSThread* currentThread; + + enabled = OSDisableInterrupts(); + currentThread = OSGetCurrentThread(); + + currentThread->state = OS_THREAD_STATE_WAITING; + currentThread->queue = queue; + AddPrio(queue, currentThread, link); + RunQueueHint = TRUE; + __OSReschedule(); + OSRestoreInterrupts(enabled); } -#pragma pop /* 80341C98-80341D9C 33C5D8 0104+00 3/3 13/13 0/0 .text OSWakeupThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSWakeupThread(OSThreadQueue* queue) { - nofralloc -#include "asm/dolphin/os/OSThread/OSWakeupThread.s" +void OSWakeupThread(OSThreadQueue* queue) { + BOOL enabled; + OSThread* thread; + + enabled = OSDisableInterrupts(); + while (queue->head) { + RemoveHead(queue, thread, link); + thread->state = OS_THREAD_STATE_READY; + if (!(0 < thread->suspend_count)) { + SetRun(thread); + } + } + __OSReschedule(); + OSRestoreInterrupts(enabled); } -#pragma pop /* 80341D9C-80341E5C 33C6DC 00C0+00 0/0 1/1 0/0 .text OSSetThreadPriority */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 OSSetThreadPriority(OSThread* thread, s32 priority) { - nofralloc -#include "asm/dolphin/os/OSThread/OSSetThreadPriority.s" +s32 OSSetThreadPriority(OSThread* thread, s32 priority) { + BOOL enabled; + + if (priority < 0 || priority > 31) { + return FALSE; + } + + enabled = OSDisableInterrupts(); + if ((s32)thread->base_priority != priority) { + thread->base_priority = priority; + + UpdatePriority(thread); + __OSReschedule(); + } + OSRestoreInterrupts(enabled); + return TRUE; } -#pragma pop /* 80341E5C-80341E64 33C79C 0008+00 0/0 4/4 0/0 .text OSGetThreadPriority */ s32 OSGetThreadPriority(OSThread* thread) { @@ -528,210 +692,218 @@ s32 OSGetThreadPriority(OSThread* thread) { } /* 80341E64-80341F00 33C7A4 009C+00 1/1 0/0 0/0 .text CheckThreadQueue */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm s32 CheckThreadQueue(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/CheckThreadQueue.s" +s32 CheckThreadQueue(OSThreadQueue* thread) { + OSThread* current; + if (thread->head && thread->head->link.prev) { + return 0; + } + + if (thread->tail && thread->tail->link.next) { + return 0; + } + + current = thread->head; + + while(current) { + if (current->link.next && current != current->link.next->link.prev) { + return 0; + } + + if (current->link.prev && current != current->link.prev->link.next) { + return 0; + } + + current = current->link.next; + } + + return 1; } -#pragma pop -/* ############################################################################################## */ -/* 803D0838-803D0898 02D958 005F+01 1/1 0/0 0/0 .data @831 */ -SECTION_DATA static char lit_831[] = "OSCheckActiveThreads: Failed RunQueue[prio].head != NULL && " - "RunQueue[prio].tail != NULL in %d\n"; +static BOOL isMember(OSThreadQueue* queue, OSThread* thread) { + OSThread* current = queue->head; + while (current != NULL) { + if (thread == current) { + return TRUE; + } -/* 803D0898-803D08A4 02D9B8 000B+01 0/1 0/0 0/0 .data @832 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_832[] = "OSThread.c"; -#pragma pop - -/* 803D08A4-803D0904 02D9C4 005F+01 0/1 0/0 0/0 .data @834 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_834[] = "OSCheckActiveThreads: Failed RunQueue[prio].head == NULL && " - "RunQueue[prio].tail == NULL in %d\n"; -#pragma pop - -/* 803D0904-803D094C 02DA24 0046+02 0/1 0/0 0/0 .data @835 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_835[] = - "OSCheckActiveThreads: Failed CheckThreadQueue(&RunQueue[prio]) in %d\n"; -#pragma pop - -/* 803D094C-803D09CC 02DA6C 007E+02 0/1 0/0 0/0 .data @836 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_836[] = - "OSCheckActiveThreads: Failed __OSActiveThreadQueue.head == NULL || " - "__OSActiveThreadQueue.head->linkActive.prev == NULL in %d\n"; -#pragma pop - -/* 803D09CC-803D0A4C 02DAEC 007E+02 0/1 0/0 0/0 .data @837 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_837[] = - "OSCheckActiveThreads: Failed __OSActiveThreadQueue.tail == NULL || " - "__OSActiveThreadQueue.tail->linkActive.next == NULL in %d\n"; -#pragma pop - -/* 803D0A4C-803D0AC8 02DB6C 007A+02 0/1 0/0 0/0 .data @838 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_838[] = - "OSCheckActiveThreads: Failed thread->linkActive.next == NULL || thread == " - "thread->linkActive.next->linkActive.prev in %d\n"; -#pragma pop - -/* 803D0AC8-803D0B44 02DBE8 007A+02 0/1 0/0 0/0 .data @839 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_839[] = - "OSCheckActiveThreads: Failed thread->linkActive.prev == NULL || thread == " - "thread->linkActive.prev->linkActive.next in %d\n"; -#pragma pop - -/* 803D0B44-803D0B98 02DC64 0051+03 0/1 0/0 0/0 .data @840 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_840[] = - "OSCheckActiveThreads: Failed *(thread->stackEnd) == OS_THREAD_STACK_MAGIC in %d\n"; -#pragma pop - -/* 803D0B98-803D0C0C 02DCB8 0071+03 0/1 0/0 0/0 .data @841 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_841[] = - "OSCheckActiveThreads: Failed OS_PRIORITY_MIN <= thread->priority && thread->priority <= " - "OS_PRIORITY_MAX+1 in %d\n"; -#pragma pop - -/* 803D0C0C-803D0C48 02DD2C 0039+03 0/1 0/0 0/0 .data @842 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_842[] = "OSCheckActiveThreads: Failed 0 <= thread->suspend in %d\n"; -#pragma pop - -/* 803D0C48-803D0C94 02DD68 0049+03 0/1 0/0 0/0 .data @843 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_843[] = - "OSCheckActiveThreads: Failed CheckThreadQueue(&thread->queueJoin) in %d\n"; -#pragma pop - -/* 803D0C94-803D0CE8 02DDB4 0051+03 0/1 0/0 0/0 .data @844 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_844[] = - "OSCheckActiveThreads: Failed thread->queue == &RunQueue[thread->priority] in %d\n"; -#pragma pop - -/* 803D0CE8-803D0D3C 02DE08 0052+02 0/1 0/0 0/0 .data @845 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_845[] = - "OSCheckActiveThreads: Failed IsMember(&RunQueue[thread->priority], thread) in %d\n"; -#pragma pop - -/* 803D0D3C-803D0D98 02DE5C 0059+03 0/1 0/0 0/0 .data @846 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_846[] = - "OSCheckActiveThreads: Failed thread->priority == __OSGetEffectivePriority(thread) in %d\n"; -#pragma pop - -/* 803D0D98-803D0DDC 02DEB8 0042+02 0/1 0/0 0/0 .data @847 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_847[] = - "OSCheckActiveThreads: Failed !IsSuspended(thread->suspend) in %d\n"; -#pragma pop - -/* 803D0DDC-803D0E18 02DEFC 003A+02 0/1 0/0 0/0 .data @848 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_848[] = "OSCheckActiveThreads: Failed thread->queue == NULL in %d\n"; -#pragma pop - -/* 803D0E18-803D0E54 02DF38 003A+02 0/1 0/0 0/0 .data @849 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_849[] = "OSCheckActiveThreads: Failed thread->queue != NULL in %d\n"; -#pragma pop - -/* 803D0E54-803D0E98 02DF74 0044+00 0/1 0/0 0/0 .data @850 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_850[] = - "OSCheckActiveThreads: Failed CheckThreadQueue(thread->queue) in %d\n"; -#pragma pop - -/* 803D0E98-803D0EDC 02DFB8 0044+00 0/1 0/0 0/0 .data @851 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_851[] = - "OSCheckActiveThreads: Failed IsMember(thread->queue, thread) in %d\n"; -#pragma pop - -/* 803D0EDC-803D0F18 02DFFC 003B+01 0/1 0/0 0/0 .data @852 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_852[] = "OSCheckActiveThreads: Failed thread->priority == 32 in %d\n"; -#pragma pop - -/* 803D0F18-803D0F58 02E038 003F+01 0/1 0/0 0/0 .data @853 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_853[] = - "OSCheckActiveThreads: Failed !__OSCheckDeadLock(thread) in %d\n"; -#pragma pop - -/* 803D0F58-803D0FC0 02E078 0067+01 0/1 0/0 0/0 .data @854 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_854[] = "OSCheckActiveThreads: Failed thread->queueMutex.head == NULL " - "&& thread->queueMutex.tail == NULL in %d\n"; -#pragma pop - -/* 803D0FC0-803D1008 02E0E0 0045+03 0/1 0/0 0/0 .data @855 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_855[] = - "OSCheckActiveThreads: Failed. unkown thread state (%d) of thread %p\n"; -#pragma pop - -/* 803D1008-803D1048 02E128 003D+03 0/1 0/0 0/0 .data @856 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_856[] = - "OSCheckActiveThreads: Failed __OSCheckMutexes(thread) in %d\n"; -#pragma pop - -/* 804509BC-804509C0 00043C 0001+03 1/1 0/0 0/0 .sdata @833 */ -SECTION_SDATA static char lit_833[] = ""; + current = current->link.next; + } + return FALSE; +} /* 80341F00-80342650 33C840 0750+00 0/0 1/1 0/0 .text OSCheckActiveThreads */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 OSCheckActiveThreads(void) { - nofralloc -#include "asm/dolphin/os/OSThread/OSCheckActiveThreads.s" +s32 OSCheckActiveThreads(void) { + s32 i; + OSThread* thread; + s32 rv = 0; + BOOL enabled; + enabled = OSDisableInterrupts(); + + for (i = 0; i <= 31; i++) { + if (RunQueueBits & (1 << (31-i))) { + if (RunQueue[i].head == NULL || RunQueue[i].tail == NULL) { + OSReport("OSCheckActiveThreads: Failed RunQueue[prio].head != NULL && RunQueue[prio].tail != NULL in %d\n", 0x5e0); + OSPanic(__FILE__, 0x5e0, ""); + } + } else { + if (RunQueue[i].head != NULL || RunQueue[i].tail != NULL) { + OSReport("OSCheckActiveThreads: Failed RunQueue[prio].head == NULL && RunQueue[prio].tail == NULL in %d\n", 0x5e5); + OSPanic(__FILE__, 0x5e5, ""); + } + } + + if (CheckThreadQueue(&RunQueue[i]) == 0) { + OSReport("OSCheckActiveThreads: Failed CheckThreadQueue(&RunQueue[prio]) in %d\n", 0x5e7); + OSPanic(__FILE__, 0x5e7, ""); + } + } + + if (OS_THREAD_QUEUE.head != NULL && OS_THREAD_QUEUE.head->active_threads_link.prev != NULL) { + OSReport("OSCheckActiveThreads: Failed __OSActiveThreadQueue.head == NULL || __OSActiveThreadQueue.head->linkActive.prev == NULL in %d\n", 0x5ec); + OSPanic(__FILE__, 0x5ec, ""); + } + + if (OS_THREAD_QUEUE.tail != NULL && OS_THREAD_QUEUE.tail->active_threads_link.next != NULL) { + OSReport("OSCheckActiveThreads: Failed __OSActiveThreadQueue.tail == NULL || __OSActiveThreadQueue.tail->linkActive.next == NULL in %d\n", 0x5ee); + OSPanic(__FILE__, 0x5ee, ""); + } + + thread = OS_THREAD_QUEUE.head; + + while (thread != NULL) { + rv++; + if (thread->active_threads_link.next != NULL && thread != thread->active_threads_link.next->active_threads_link.prev) { + OSReport("OSCheckActiveThreads: Failed thread->linkActive.next == NULL || thread == thread->linkActive.next->linkActive.prev in %d\n", 0x5f6); + OSPanic(__FILE__, 0x5f6, ""); + } + + if (thread->active_threads_link.prev != NULL && thread != thread->active_threads_link.prev->active_threads_link.next) { + OSReport("OSCheckActiveThreads: Failed thread->linkActive.prev == NULL || thread == thread->linkActive.prev->linkActive.next in %d\n", 0x5f8); + OSPanic(__FILE__, 0x5f8, ""); + } + + if (*(u32*)thread->stack_end != OS_THREAD_STACK_MAGIC) { + OSReport("OSCheckActiveThreads: Failed *(thread->stackEnd) == OS_THREAD_STACK_MAGIC in %d\n", 0x5fb); + OSPanic(__FILE__, 0x5fb, ""); + } + + if (OS_PRIORITY_MIN > thread->effective_priority || thread->effective_priority > OS_PRIORITY_MAX+1) { + OSReport("OSCheckActiveThreads: Failed OS_PRIORITY_MIN <= thread->priority && thread->priority <= OS_PRIORITY_MAX+1 in %d\n", 0x5fe); + OSPanic(__FILE__, 0x5fe, ""); + } + + if (thread->suspend_count < 0) { + OSReport("OSCheckActiveThreads: Failed 0 <= thread->suspend in %d\n", 0x5ff); + OSPanic(__FILE__, 0x5ff, ""); + } + + if (!CheckThreadQueue(&thread->join_queue)) { + OSReport("OSCheckActiveThreads: Failed CheckThreadQueue(&thread->queueJoin) in %d\n", 0x600); + OSPanic(__FILE__, 0x600, ""); + } + + switch (thread->state) { + case OS_THREAD_STATE_READY: + if (thread->suspend_count <= 0) { + if (thread->queue != &RunQueue[thread->effective_priority]) { + OSReport("OSCheckActiveThreads: Failed thread->queue == &RunQueue[thread->priority] in %d\n", 0x606); + OSPanic(__FILE__, 0x606, ""); + } + + if (!isMember(&RunQueue[thread->effective_priority], thread)) { + OSReport("OSCheckActiveThreads: Failed IsMember(&RunQueue[thread->priority], thread) in %d\n", 0x607); + OSPanic(__FILE__, 0x607, ""); + } + + if (thread->effective_priority != __OSGetEffectivePriority(thread)) { + OSReport("OSCheckActiveThreads: Failed thread->priority == __OSGetEffectivePriority(thread) in %d\n", 0x608); + OSPanic(__FILE__, 0x608, ""); + } + } + break; + case OS_THREAD_STATE_RUNNING: + if (thread->suspend_count > 0) { + OSReport("OSCheckActiveThreads: Failed !IsSuspended(thread->suspend) in %d\n", 0x60c); + OSPanic(__FILE__, 0x60c, ""); + } + + if (thread->queue != NULL) { + OSReport("OSCheckActiveThreads: Failed thread->queue == NULL in %d\n", 0x60d); + OSPanic(__FILE__, 0x60d, ""); + } + + if (thread->effective_priority != __OSGetEffectivePriority(thread)) { + OSReport("OSCheckActiveThreads: Failed thread->priority == __OSGetEffectivePriority(thread) in %d\n", 0x60e); + OSPanic(__FILE__, 0x60e, ""); + } + break; + case OS_THREAD_STATE_WAITING: + if (thread->queue == NULL) { + OSReport("OSCheckActiveThreads: Failed thread->queue != NULL in %d\n", 0x611); + OSPanic(__FILE__, 0x611, ""); + } + + if (CheckThreadQueue(thread->queue) == 0) { + OSReport("OSCheckActiveThreads: Failed CheckThreadQueue(thread->queue) in %d\n", 0x612); + OSPanic(__FILE__, 0x612, ""); + } + + if (!isMember(thread->queue, thread)) { + OSReport("OSCheckActiveThreads: Failed IsMember(thread->queue, thread) in %d\n", 0x613); + OSPanic(__FILE__, 0x613, ""); + } + + if (thread->suspend_count <= 0) { + if (thread->effective_priority != __OSGetEffectivePriority(thread)) { + OSReport("OSCheckActiveThreads: Failed thread->priority == __OSGetEffectivePriority(thread) in %d\n", 0x616); + OSPanic(__FILE__, 0x616, ""); + } + } else if (thread->effective_priority != 32) { + OSReport("OSCheckActiveThreads: Failed thread->priority == 32 in %d\n", 0x61a); + OSPanic(__FILE__, 0x61a, ""); + } + + if (__OSCheckDeadLock(thread)) { + OSReport("OSCheckActiveThreads: Failed !__OSCheckDeadLock(thread) in %d\n", 0x61c); + OSPanic(__FILE__, 0x61c, ""); + } + break; + case OS_THREAD_STATE_DEAD: + if (thread->owned_mutexes.head != NULL || thread->owned_mutexes.tail != NULL) { + OSReport("OSCheckActiveThreads: Failed thread->queueMutex.head == NULL && thread->queueMutex.tail == NULL in %d\n", 0x620); + OSPanic(__FILE__, 0x620, ""); + } + break; + default: + OSReport("OSCheckActiveThreads: Failed. unkown thread state (%d) of thread %p\n", thread->state, thread); + OSPanic(__FILE__, 0x626, ""); + break; + } + + if (!__OSCheckMutexes(thread)) { + OSReport("OSCheckActiveThreads: Failed __OSCheckMutexes(thread) in %d\n", 0x62b); + OSPanic(__FILE__, 0x62b, ""); + } + + thread = thread->active_threads_link.next; + } + + OSRestoreInterrupts(enabled); + return rv; } -#pragma pop /* 80342650-803426FC 33CF90 00AC+00 1/1 0/0 0/0 .text OSClearStack */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void OSClearStack(u32 value) { - nofralloc -#include "asm/dolphin/os/OSThread/OSClearStack.s" +void OSClearStack(u8 val) { + u32* sp; + u32* p; + u32 pattern; + + pattern = ((u32)val << 24) | ((u32)val << 16) | ((u32)val << 8) | (u32)val; + sp = (u32*)OSGetStackPointer(); + for (p = ((u32*)__OSCurrentThread->stack_end) + 1; p < sp; ++p) { + *p = pattern; + } } -#pragma pop /* ############################################################################################## */ /* 804516D0-804516D8 000BD0 0008+00 0/0 2/1 0/0 .sbss None */