.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global OSInitSemaphore OSInitSemaphore: /* 80270E68 0026CAC8 94 21 FF E0 */ stwu r1, -0x20(r1) /* 80270E6C 0026CACC 7C 08 02 A6 */ mflr r0 /* 80270E70 0026CAD0 90 01 00 24 */ stw r0, 0x24(r1) /* 80270E74 0026CAD4 93 E1 00 1C */ stw r31, 0x1c(r1) /* 80270E78 0026CAD8 93 C1 00 18 */ stw r30, 0x18(r1) /* 80270E7C 0026CADC 7C 9E 23 78 */ mr r30, r4 /* 80270E80 0026CAE0 93 A1 00 14 */ stw r29, 0x14(r1) /* 80270E84 0026CAE4 7C 7D 1B 78 */ mr r29, r3 /* 80270E88 0026CAE8 4B FF D8 D5 */ bl OSDisableInterrupts /* 80270E8C 0026CAEC 7C 7F 1B 78 */ mr r31, r3 /* 80270E90 0026CAF0 38 7D 00 04 */ addi r3, r29, 4 /* 80270E94 0026CAF4 48 00 04 55 */ bl OSInitThreadQueue /* 80270E98 0026CAF8 93 DD 00 00 */ stw r30, 0(r29) /* 80270E9C 0026CAFC 7F E3 FB 78 */ mr r3, r31 /* 80270EA0 0026CB00 4B FF D8 E5 */ bl OSRestoreInterrupts /* 80270EA4 0026CB04 80 01 00 24 */ lwz r0, 0x24(r1) /* 80270EA8 0026CB08 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 80270EAC 0026CB0C 83 C1 00 18 */ lwz r30, 0x18(r1) /* 80270EB0 0026CB10 83 A1 00 14 */ lwz r29, 0x14(r1) /* 80270EB4 0026CB14 7C 08 03 A6 */ mtlr r0 /* 80270EB8 0026CB18 38 21 00 20 */ addi r1, r1, 0x20 /* 80270EBC 0026CB1C 4E 80 00 20 */ blr .global OSWaitSemaphore OSWaitSemaphore: /* 80270EC0 0026CB20 94 21 FF E0 */ stwu r1, -0x20(r1) /* 80270EC4 0026CB24 7C 08 02 A6 */ mflr r0 /* 80270EC8 0026CB28 90 01 00 24 */ stw r0, 0x24(r1) /* 80270ECC 0026CB2C 93 E1 00 1C */ stw r31, 0x1c(r1) /* 80270ED0 0026CB30 93 C1 00 18 */ stw r30, 0x18(r1) /* 80270ED4 0026CB34 93 A1 00 14 */ stw r29, 0x14(r1) /* 80270ED8 0026CB38 7C 7D 1B 78 */ mr r29, r3 /* 80270EDC 0026CB3C 4B FF D8 81 */ bl OSDisableInterrupts /* 80270EE0 0026CB40 7C 7F 1B 78 */ mr r31, r3 /* 80270EE4 0026CB44 48 00 00 0C */ b lbl_80270EF0 lbl_80270EE8: /* 80270EE8 0026CB48 38 7D 00 04 */ addi r3, r29, 4 /* 80270EEC 0026CB4C 48 00 14 89 */ bl OSSleepThread lbl_80270EF0: /* 80270EF0 0026CB50 83 DD 00 00 */ lwz r30, 0(r29) /* 80270EF4 0026CB54 2C 1E 00 00 */ cmpwi r30, 0 /* 80270EF8 0026CB58 40 81 FF F0 */ ble lbl_80270EE8 /* 80270EFC 0026CB5C 80 9D 00 00 */ lwz r4, 0(r29) /* 80270F00 0026CB60 7F E3 FB 78 */ mr r3, r31 /* 80270F04 0026CB64 38 04 FF FF */ addi r0, r4, -1 /* 80270F08 0026CB68 90 1D 00 00 */ stw r0, 0(r29) /* 80270F0C 0026CB6C 4B FF D8 79 */ bl OSRestoreInterrupts /* 80270F10 0026CB70 7F C3 F3 78 */ mr r3, r30 /* 80270F14 0026CB74 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 80270F18 0026CB78 83 C1 00 18 */ lwz r30, 0x18(r1) /* 80270F1C 0026CB7C 83 A1 00 14 */ lwz r29, 0x14(r1) /* 80270F20 0026CB80 80 01 00 24 */ lwz r0, 0x24(r1) /* 80270F24 0026CB84 7C 08 03 A6 */ mtlr r0 /* 80270F28 0026CB88 38 21 00 20 */ addi r1, r1, 0x20 /* 80270F2C 0026CB8C 4E 80 00 20 */ blr .global OSTryWaitSemaphore OSTryWaitSemaphore: /* 80270F30 0026CB90 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80270F34 0026CB94 7C 08 02 A6 */ mflr r0 /* 80270F38 0026CB98 90 01 00 14 */ stw r0, 0x14(r1) /* 80270F3C 0026CB9C 93 E1 00 0C */ stw r31, 0xc(r1) /* 80270F40 0026CBA0 93 C1 00 08 */ stw r30, 8(r1) /* 80270F44 0026CBA4 7C 7E 1B 78 */ mr r30, r3 /* 80270F48 0026CBA8 4B FF D8 15 */ bl OSDisableInterrupts /* 80270F4C 0026CBAC 83 FE 00 00 */ lwz r31, 0(r30) /* 80270F50 0026CBB0 2C 1F 00 00 */ cmpwi r31, 0 /* 80270F54 0026CBB4 40 81 00 0C */ ble lbl_80270F60 /* 80270F58 0026CBB8 38 1F FF FF */ addi r0, r31, -1 /* 80270F5C 0026CBBC 90 1E 00 00 */ stw r0, 0(r30) lbl_80270F60: /* 80270F60 0026CBC0 4B FF D8 25 */ bl OSRestoreInterrupts /* 80270F64 0026CBC4 7F E3 FB 78 */ mr r3, r31 /* 80270F68 0026CBC8 83 E1 00 0C */ lwz r31, 0xc(r1) /* 80270F6C 0026CBCC 83 C1 00 08 */ lwz r30, 8(r1) /* 80270F70 0026CBD0 80 01 00 14 */ lwz r0, 0x14(r1) /* 80270F74 0026CBD4 7C 08 03 A6 */ mtlr r0 /* 80270F78 0026CBD8 38 21 00 10 */ addi r1, r1, 0x10 /* 80270F7C 0026CBDC 4E 80 00 20 */ blr .global OSSignalSemaphore OSSignalSemaphore: /* 80270F80 0026CBE0 94 21 FF E0 */ stwu r1, -0x20(r1) /* 80270F84 0026CBE4 7C 08 02 A6 */ mflr r0 /* 80270F88 0026CBE8 90 01 00 24 */ stw r0, 0x24(r1) /* 80270F8C 0026CBEC 93 E1 00 1C */ stw r31, 0x1c(r1) /* 80270F90 0026CBF0 93 C1 00 18 */ stw r30, 0x18(r1) /* 80270F94 0026CBF4 93 A1 00 14 */ stw r29, 0x14(r1) /* 80270F98 0026CBF8 7C 7D 1B 78 */ mr r29, r3 /* 80270F9C 0026CBFC 4B FF D7 C1 */ bl OSDisableInterrupts /* 80270FA0 0026CC00 83 DD 00 00 */ lwz r30, 0(r29) /* 80270FA4 0026CC04 7C 7F 1B 78 */ mr r31, r3 /* 80270FA8 0026CC08 38 7D 00 04 */ addi r3, r29, 4 /* 80270FAC 0026CC0C 38 1E 00 01 */ addi r0, r30, 1 /* 80270FB0 0026CC10 90 1D 00 00 */ stw r0, 0(r29) /* 80270FB4 0026CC14 48 00 14 AD */ bl OSWakeupThread /* 80270FB8 0026CC18 7F E3 FB 78 */ mr r3, r31 /* 80270FBC 0026CC1C 4B FF D7 C9 */ bl OSRestoreInterrupts /* 80270FC0 0026CC20 7F C3 F3 78 */ mr r3, r30 /* 80270FC4 0026CC24 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 80270FC8 0026CC28 83 C1 00 18 */ lwz r30, 0x18(r1) /* 80270FCC 0026CC2C 83 A1 00 14 */ lwz r29, 0x14(r1) /* 80270FD0 0026CC30 80 01 00 24 */ lwz r0, 0x24(r1) /* 80270FD4 0026CC34 7C 08 03 A6 */ mtlr r0 /* 80270FD8 0026CC38 38 21 00 20 */ addi r1, r1, 0x20 /* 80270FDC 0026CC3C 4E 80 00 20 */ blr