.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global GKI_init GKI_init: /* 802BAF68 002B6BC8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802BAF6C 002B6BCC 7C 08 02 A6 */ mflr r0 /* 802BAF70 002B6BD0 3C A0 00 03 */ lis r5, 0x00028AE0@ha /* 802BAF74 002B6BD4 38 80 00 00 */ li r4, 0 /* 802BAF78 002B6BD8 90 01 00 14 */ stw r0, 0x14(r1) /* 802BAF7C 002B6BDC 38 A5 8A E0 */ addi r5, r5, 0x00028AE0@l /* 802BAF80 002B6BE0 93 E1 00 0C */ stw r31, 0xc(r1) /* 802BAF84 002B6BE4 93 C1 00 08 */ stw r30, 8(r1) /* 802BAF88 002B6BE8 3F C0 80 54 */ lis r30, lbl_8053C2C0@ha /* 802BAF8C 002B6BEC 38 7E C2 C0 */ addi r3, r30, lbl_8053C2C0@l /* 802BAF90 002B6BF0 4B D4 91 75 */ bl memset /* 802BAF94 002B6BF4 4B FF E8 59 */ bl gki_buffer_init /* 802BAF98 002B6BF8 4B FF FA 79 */ bl gki_timers_init /* 802BAF9C 002B6BFC 3B FE C2 C0 */ addi r31, r30, -15680 /* 802BAFA0 002B6C00 38 80 00 01 */ li r4, 1 /* 802BAFA4 002B6C04 3C 7F 00 03 */ addis r3, r31, 3 /* 802BAFA8 002B6C08 38 00 00 00 */ li r0, 0 /* 802BAFAC 002B6C0C 98 83 88 02 */ stb r4, -0x77fe(r3) /* 802BAFB0 002B6C10 90 03 87 E8 */ stw r0, -0x7818(r3) /* 802BAFB4 002B6C14 90 03 88 48 */ stw r0, -0x77b8(r3) /* 802BAFB8 002B6C18 B0 03 88 0C */ sth r0, -0x77f4(r3) /* 802BAFBC 002B6C1C 98 1E C2 C0 */ stb r0, -0x3d40(r30) /* 802BAFC0 002B6C20 4B FB 37 B1 */ bl OSEnableInterrupts /* 802BAFC4 002B6C24 88 1E C2 C0 */ lbz r0, -0x3d40(r30) /* 802BAFC8 002B6C28 54 00 10 3A */ slwi r0, r0, 2 /* 802BAFCC 002B6C2C 7C 9F 02 14 */ add r4, r31, r0 /* 802BAFD0 002B6C30 90 64 00 04 */ stw r3, 4(r4) /* 802BAFD4 002B6C34 88 7E C2 C0 */ lbz r3, -0x3d40(r30) /* 802BAFD8 002B6C38 38 03 00 01 */ addi r0, r3, 1 /* 802BAFDC 002B6C3C 98 1E C2 C0 */ stb r0, -0x3d40(r30) /* 802BAFE0 002B6C40 83 E1 00 0C */ lwz r31, 0xc(r1) /* 802BAFE4 002B6C44 83 C1 00 08 */ lwz r30, 8(r1) /* 802BAFE8 002B6C48 80 01 00 14 */ lwz r0, 0x14(r1) /* 802BAFEC 002B6C4C 7C 08 03 A6 */ mtlr r0 /* 802BAFF0 002B6C50 38 21 00 10 */ addi r1, r1, 0x10 /* 802BAFF4 002B6C54 4E 80 00 20 */ blr .global GKI_shutdown GKI_shutdown: /* 802BAFF8 002B6C58 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802BAFFC 002B6C5C 7C 08 02 A6 */ mflr r0 /* 802BB000 002B6C60 90 01 00 14 */ stw r0, 0x14(r1) /* 802BB004 002B6C64 93 E1 00 0C */ stw r31, 0xc(r1) /* 802BB008 002B6C68 93 C1 00 08 */ stw r30, 8(r1) /* 802BB00C 002B6C6C 4B FB 37 51 */ bl OSDisableInterrupts /* 802BB010 002B6C70 3F C0 80 54 */ lis r30, lbl_8053C2C0@ha /* 802BB014 002B6C74 38 00 00 00 */ li r0, 0 /* 802BB018 002B6C78 88 BE C2 C0 */ lbz r5, lbl_8053C2C0@l(r30) /* 802BB01C 002B6C7C 3B FE C2 C0 */ addi r31, r30, -15680 /* 802BB020 002B6C80 3C 9F 00 03 */ addis r4, r31, 3 /* 802BB024 002B6C84 54 A5 10 3A */ slwi r5, r5, 2 /* 802BB028 002B6C88 7C BF 2A 14 */ add r5, r31, r5 /* 802BB02C 002B6C8C 90 65 00 04 */ stw r3, 4(r5) /* 802BB030 002B6C90 88 7E C2 C0 */ lbz r3, -0x3d40(r30) /* 802BB034 002B6C94 38 63 00 01 */ addi r3, r3, 1 /* 802BB038 002B6C98 98 7E C2 C0 */ stb r3, -0x3d40(r30) /* 802BB03C 002B6C9C 98 04 88 02 */ stb r0, -0x77fe(r4) /* 802BB040 002B6CA0 88 7E C2 C0 */ lbz r3, -0x3d40(r30) /* 802BB044 002B6CA4 38 63 FF FF */ addi r3, r3, -1 /* 802BB048 002B6CA8 54 60 15 BA */ rlwinm r0, r3, 2, 0x16, 0x1d /* 802BB04C 002B6CAC 98 7E C2 C0 */ stb r3, -0x3d40(r30) /* 802BB050 002B6CB0 7C 7F 02 14 */ add r3, r31, r0 /* 802BB054 002B6CB4 80 63 00 04 */ lwz r3, 4(r3) /* 802BB058 002B6CB8 4B FB 37 2D */ bl OSRestoreInterrupts /* 802BB05C 002B6CBC 48 00 00 20 */ b lbl_802BB07C lbl_802BB060: /* 802BB060 002B6CC0 88 7E C2 C0 */ lbz r3, -0x3d40(r30) /* 802BB064 002B6CC4 38 63 FF FF */ addi r3, r3, -1 /* 802BB068 002B6CC8 54 60 15 BA */ rlwinm r0, r3, 2, 0x16, 0x1d /* 802BB06C 002B6CCC 98 7E C2 C0 */ stb r3, -0x3d40(r30) /* 802BB070 002B6CD0 7C 7F 02 14 */ add r3, r31, r0 /* 802BB074 002B6CD4 80 63 00 04 */ lwz r3, 4(r3) /* 802BB078 002B6CD8 4B FB 37 0D */ bl OSRestoreInterrupts lbl_802BB07C: /* 802BB07C 002B6CDC 88 1E C2 C0 */ lbz r0, -0x3d40(r30) /* 802BB080 002B6CE0 2C 00 00 00 */ cmpwi r0, 0 /* 802BB084 002B6CE4 40 82 FF DC */ bne lbl_802BB060 /* 802BB088 002B6CE8 80 01 00 14 */ lwz r0, 0x14(r1) /* 802BB08C 002B6CEC 83 E1 00 0C */ lwz r31, 0xc(r1) /* 802BB090 002B6CF0 83 C1 00 08 */ lwz r30, 8(r1) /* 802BB094 002B6CF4 7C 08 03 A6 */ mtlr r0 /* 802BB098 002B6CF8 38 21 00 10 */ addi r1, r1, 0x10 /* 802BB09C 002B6CFC 4E 80 00 20 */ blr .global GKI_run GKI_run: /* 802BB0A0 002B6D00 4E 80 00 20 */ blr .global GKI_sched_lock GKI_sched_lock: /* 802BB0A4 002B6D04 4E 80 00 20 */ blr .global GKI_sched_unlock GKI_sched_unlock: /* 802BB0A8 002B6D08 4E 80 00 20 */ blr .global GKI_delay GKI_delay: /* 802BB0AC 002B6D0C 4E 80 00 20 */ blr .global GKI_send_event GKI_send_event: /* 802BB0B0 002B6D10 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802BB0B4 002B6D14 7C 08 02 A6 */ mflr r0 /* 802BB0B8 002B6D18 28 03 00 08 */ cmplwi r3, 8 /* 802BB0BC 002B6D1C 90 01 00 14 */ stw r0, 0x14(r1) /* 802BB0C0 002B6D20 93 E1 00 0C */ stw r31, 0xc(r1) /* 802BB0C4 002B6D24 7C 9F 23 78 */ mr r31, r4 /* 802BB0C8 002B6D28 93 C1 00 08 */ stw r30, 8(r1) /* 802BB0CC 002B6D2C 7C 7E 1B 78 */ mr r30, r3 /* 802BB0D0 002B6D30 41 80 00 0C */ blt lbl_802BB0DC /* 802BB0D4 002B6D34 38 60 00 01 */ li r3, 1 /* 802BB0D8 002B6D38 48 00 00 64 */ b lbl_802BB13C lbl_802BB0DC: /* 802BB0DC 002B6D3C 4B FB 36 81 */ bl OSDisableInterrupts /* 802BB0E0 002B6D40 3C E0 80 54 */ lis r7, lbl_8053C2C0@ha /* 802BB0E4 002B6D44 57 C0 0D FC */ rlwinm r0, r30, 1, 0x17, 0x1e /* 802BB0E8 002B6D48 88 A7 C2 C0 */ lbz r5, lbl_8053C2C0@l(r7) /* 802BB0EC 002B6D4C 38 C7 C2 C0 */ addi r6, r7, -15680 /* 802BB0F0 002B6D50 3C 86 00 03 */ addis r4, r6, 3 /* 802BB0F4 002B6D54 54 A5 10 3A */ slwi r5, r5, 2 /* 802BB0F8 002B6D58 7C A6 2A 14 */ add r5, r6, r5 /* 802BB0FC 002B6D5C 7C 84 02 14 */ add r4, r4, r0 /* 802BB100 002B6D60 90 65 00 04 */ stw r3, 4(r5) /* 802BB104 002B6D64 88 67 C2 C0 */ lbz r3, -0x3d40(r7) /* 802BB108 002B6D68 38 03 00 01 */ addi r0, r3, 1 /* 802BB10C 002B6D6C 98 07 C2 C0 */ stb r0, -0x3d40(r7) /* 802BB110 002B6D70 A0 04 88 08 */ lhz r0, -0x77f8(r4) /* 802BB114 002B6D74 7C 00 FB 78 */ or r0, r0, r31 /* 802BB118 002B6D78 B0 04 88 08 */ sth r0, -0x77f8(r4) /* 802BB11C 002B6D7C 88 67 C2 C0 */ lbz r3, -0x3d40(r7) /* 802BB120 002B6D80 38 63 FF FF */ addi r3, r3, -1 /* 802BB124 002B6D84 54 60 15 BA */ rlwinm r0, r3, 2, 0x16, 0x1d /* 802BB128 002B6D88 98 67 C2 C0 */ stb r3, -0x3d40(r7) /* 802BB12C 002B6D8C 7C 66 02 14 */ add r3, r6, r0 /* 802BB130 002B6D90 80 63 00 04 */ lwz r3, 4(r3) /* 802BB134 002B6D94 4B FB 36 51 */ bl OSRestoreInterrupts /* 802BB138 002B6D98 38 60 00 00 */ li r3, 0 lbl_802BB13C: /* 802BB13C 002B6D9C 80 01 00 14 */ lwz r0, 0x14(r1) /* 802BB140 002B6DA0 83 E1 00 0C */ lwz r31, 0xc(r1) /* 802BB144 002B6DA4 83 C1 00 08 */ lwz r30, 8(r1) /* 802BB148 002B6DA8 7C 08 03 A6 */ mtlr r0 /* 802BB14C 002B6DAC 38 21 00 10 */ addi r1, r1, 0x10 /* 802BB150 002B6DB0 4E 80 00 20 */ blr .global GKI_get_taskid GKI_get_taskid: /* 802BB154 002B6DB4 38 60 00 02 */ li r3, 2 /* 802BB158 002B6DB8 4E 80 00 20 */ blr .global GKI_enable GKI_enable: /* 802BB15C 002B6DBC 3C A0 80 54 */ lis r5, lbl_8053C2C0@ha /* 802BB160 002B6DC0 88 85 C2 C0 */ lbz r4, lbl_8053C2C0@l(r5) /* 802BB164 002B6DC4 38 65 C2 C0 */ addi r3, r5, -15680 /* 802BB168 002B6DC8 38 84 FF FF */ addi r4, r4, -1 /* 802BB16C 002B6DCC 54 80 15 BA */ rlwinm r0, r4, 2, 0x16, 0x1d /* 802BB170 002B6DD0 98 85 C2 C0 */ stb r4, -0x3d40(r5) /* 802BB174 002B6DD4 7C 63 02 14 */ add r3, r3, r0 /* 802BB178 002B6DD8 80 63 00 04 */ lwz r3, 4(r3) /* 802BB17C 002B6DDC 4B FB 36 08 */ b OSRestoreInterrupts .global GKI_disable GKI_disable: /* 802BB180 002B6DE0 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802BB184 002B6DE4 7C 08 02 A6 */ mflr r0 /* 802BB188 002B6DE8 90 01 00 14 */ stw r0, 0x14(r1) /* 802BB18C 002B6DEC 4B FB 35 D1 */ bl OSDisableInterrupts /* 802BB190 002B6DF0 3C A0 80 54 */ lis r5, lbl_8053C2C0@ha /* 802BB194 002B6DF4 88 05 C2 C0 */ lbz r0, lbl_8053C2C0@l(r5) /* 802BB198 002B6DF8 38 85 C2 C0 */ addi r4, r5, -15680 /* 802BB19C 002B6DFC 54 00 10 3A */ slwi r0, r0, 2 /* 802BB1A0 002B6E00 7C 84 02 14 */ add r4, r4, r0 /* 802BB1A4 002B6E04 90 64 00 04 */ stw r3, 4(r4) /* 802BB1A8 002B6E08 88 65 C2 C0 */ lbz r3, -0x3d40(r5) /* 802BB1AC 002B6E0C 38 03 00 01 */ addi r0, r3, 1 /* 802BB1B0 002B6E10 98 05 C2 C0 */ stb r0, -0x3d40(r5) /* 802BB1B4 002B6E14 80 01 00 14 */ lwz r0, 0x14(r1) /* 802BB1B8 002B6E18 7C 08 03 A6 */ mtlr r0 /* 802BB1BC 002B6E1C 38 21 00 10 */ addi r1, r1, 0x10 /* 802BB1C0 002B6E20 4E 80 00 20 */ blr .global GKI_exception GKI_exception: /* 802BB1C4 002B6E24 4E 80 00 20 */ blr .global GKI_os_malloc GKI_os_malloc: /* 802BB1C8 002B6E28 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802BB1CC 002B6E2C 7C 08 02 A6 */ mflr r0 /* 802BB1D0 002B6E30 90 01 00 14 */ stw r0, 0x14(r1) /* 802BB1D4 002B6E34 4B FF 9A ED */ bl App_MEMalloc /* 802BB1D8 002B6E38 2C 03 00 00 */ cmpwi r3, 0 /* 802BB1DC 002B6E3C 40 82 00 08 */ bne lbl_802BB1E4 /* 802BB1E0 002B6E40 38 60 00 00 */ li r3, 0 lbl_802BB1E4: /* 802BB1E4 002B6E44 80 01 00 14 */ lwz r0, 0x14(r1) /* 802BB1E8 002B6E48 7C 08 03 A6 */ mtlr r0 /* 802BB1EC 002B6E4C 38 21 00 10 */ addi r1, r1, 0x10 /* 802BB1F0 002B6E50 4E 80 00 20 */ blr .global GKI_os_free GKI_os_free: /* 802BB1F4 002B6E54 4B FF 9B 1C */ b App_MEMfree