mirror of
https://github.com/encounter/oot-gc.git
synced 2026-03-30 11:33:44 -07:00
1367 lines
61 KiB
ArmAsm
1367 lines
61 KiB
ArmAsm
# OSThread.c
|
|
.include "macros.inc"
|
|
|
|
.section .text, "ax"
|
|
|
|
.balign 4
|
|
|
|
DefaultSwitchThreadCallback:
|
|
/* 09BB38 800A10D8 4E800020 */ blr
|
|
|
|
glabel __OSThreadInit
|
|
/* 09BB3C 800A10DC 7C0802A6 */ mflr r0
|
|
/* 09BB40 800A10E0 3C608013 */ lis r3, RunQueue@ha
|
|
/* 09BB44 800A10E4 90010004 */ stw r0, 4(r1)
|
|
/* 09BB48 800A10E8 38000002 */ li r0, 2
|
|
/* 09BB4C 800A10EC 38800010 */ li r4, 0x10
|
|
/* 09BB50 800A10F0 9421FFE8 */ stwu r1, -0x18(r1)
|
|
/* 09BB54 800A10F4 93E10014 */ stw r31, 0x14(r1)
|
|
/* 09BB58 800A10F8 93C10010 */ stw r30, 0x10(r1)
|
|
/* 09BB5C 800A10FC 93A1000C */ stw r29, 0xc(r1)
|
|
/* 09BB60 800A1100 3BA00000 */ li r29, 0
|
|
/* 09BB64 800A1104 93810008 */ stw r28, 8(r1)
|
|
/* 09BB68 800A1108 3B831038 */ addi r28, r3, RunQueue@l
|
|
/* 09BB6C 800A110C 3BFC0418 */ addi r31, r28, 0x418
|
|
/* 09BB70 800A1110 B01C06E0 */ sth r0, 0x6e0(r28)
|
|
/* 09BB74 800A1114 38000001 */ li r0, 1
|
|
/* 09BB78 800A1118 387F02E8 */ addi r3, r31, 0x2e8
|
|
/* 09BB7C 800A111C B01C06E2 */ sth r0, 0x6e2(r28)
|
|
/* 09BB80 800A1120 3800FFFF */ li r0, -1
|
|
/* 09BB84 800A1124 909C06EC */ stw r4, 0x6ec(r28)
|
|
/* 09BB88 800A1128 909C06E8 */ stw r4, 0x6e8(r28)
|
|
/* 09BB8C 800A112C 93BC06E4 */ stw r29, 0x6e4(r28)
|
|
/* 09BB90 800A1130 901C06F0 */ stw r0, 0x6f0(r28)
|
|
/* 09BB94 800A1134 93BC0708 */ stw r29, 0x708(r28)
|
|
/* 09BB98 800A1138 480000FD */ bl OSInitThreadQueue
|
|
/* 09BB9C 800A113C 93BC0710 */ stw r29, 0x710(r28)
|
|
/* 09BBA0 800A1140 3FC08000 */ lis r30, 0x8000
|
|
/* 09BBA4 800A1144 387F0000 */ addi r3, r31, 0
|
|
/* 09BBA8 800A1148 93BC070C */ stw r29, 0x70c(r28)
|
|
/* 09BBAC 800A114C 93FE00D8 */ stw r31, 0xd8(r30)
|
|
/* 09BBB0 800A1150 4BFFD055 */ bl OSClearContext
|
|
/* 09BBB4 800A1154 7FE3FB78 */ mr r3, r31
|
|
/* 09BBB8 800A1158 4BFFCE85 */ bl OSSetCurrentContext
|
|
/* 09BBBC 800A115C 3C608014 */ lis r3, _stack_addr@ha
|
|
/* 09BBC0 800A1160 38036420 */ addi r0, r3, _stack_addr@l
|
|
/* 09BBC4 800A1164 3C608013 */ lis r3, _f_sbss2@ha
|
|
/* 09BBC8 800A1168 901C071C */ stw r0, 0x71c(r28)
|
|
/* 09BBCC 800A116C 38036420 */ addi r0, r3, _f_sbss2@l
|
|
/* 09BBD0 800A1170 901C0720 */ stw r0, 0x720(r28)
|
|
/* 09BBD4 800A1174 3C60DEAE */ lis r3, 0xdeae
|
|
/* 09BBD8 800A1178 3803BABE */ addi r0, r3, -17730
|
|
/* 09BBDC 800A117C 807C0720 */ lwz r3, 0x720(r28)
|
|
/* 09BBE0 800A1180 7FE4FB78 */ mr r4, r31
|
|
/* 09BBE4 800A1184 90030000 */ stw r0, 0(r3)
|
|
/* 09BBE8 800A1188 818D8760 */ lwz r12, SwitchThreadCallback@sda21(r13)
|
|
/* 09BBEC 800A118C 807E00E4 */ lwz r3, 0xe4(r30)
|
|
/* 09BBF0 800A1190 7D8803A6 */ mtlr r12
|
|
/* 09BBF4 800A1194 4E800021 */ blrl
|
|
/* 09BBF8 800A1198 93FE00E4 */ stw r31, 0xe4(r30)
|
|
/* 09BBFC 800A119C 38600000 */ li r3, 0
|
|
/* 09BC00 800A11A0 4800105D */ bl OSClearStack
|
|
/* 09BC04 800A11A4 93AD8B88 */ stw r29, RunQueueBits@sda21(r13)
|
|
/* 09BC08 800A11A8 3BC00000 */ li r30, 0
|
|
/* 09BC0C 800A11AC 57C01838 */ slwi r0, r30, 3
|
|
/* 09BC10 800A11B0 93AD8B8C */ stw r29, RunQueueHint@sda21(r13)
|
|
/* 09BC14 800A11B4 7FBC0214 */ add r29, r28, r0
|
|
lbl_800A11B8:
|
|
/* 09BC18 800A11B8 7FA3EB78 */ mr r3, r29
|
|
/* 09BC1C 800A11BC 48000079 */ bl OSInitThreadQueue
|
|
/* 09BC20 800A11C0 3BDE0001 */ addi r30, r30, 1
|
|
/* 09BC24 800A11C4 2C1E001F */ cmpwi r30, 0x1f
|
|
/* 09BC28 800A11C8 3BBD0008 */ addi r29, r29, 8
|
|
/* 09BC2C 800A11CC 4081FFEC */ ble lbl_800A11B8
|
|
/* 09BC30 800A11D0 3FC08000 */ lis r30, 0x8000
|
|
/* 09BC34 800A11D4 387E00DC */ addi r3, r30, 0xdc
|
|
/* 09BC38 800A11D8 4800005D */ bl OSInitThreadQueue
|
|
/* 09BC3C 800A11DC 389E00DC */ addi r4, r30, 0xdc
|
|
/* 09BC40 800A11E0 84640004 */ lwzu r3, 4(r4)
|
|
/* 09BC44 800A11E4 28030000 */ cmplwi r3, 0
|
|
/* 09BC48 800A11E8 4082000C */ bne lbl_800A11F4
|
|
/* 09BC4C 800A11EC 93FE00DC */ stw r31, 0xdc(r30)
|
|
/* 09BC50 800A11F0 48000008 */ b lbl_800A11F8
|
|
lbl_800A11F4:
|
|
/* 09BC54 800A11F4 93E302FC */ stw r31, 0x2fc(r3)
|
|
lbl_800A11F8:
|
|
/* 09BC58 800A11F8 907F0300 */ stw r3, 0x300(r31)
|
|
/* 09BC5C 800A11FC 3BC00000 */ li r30, 0
|
|
/* 09BC60 800A1200 387C0730 */ addi r3, r28, 0x730
|
|
/* 09BC64 800A1204 93DF02FC */ stw r30, 0x2fc(r31)
|
|
/* 09BC68 800A1208 93E40000 */ stw r31, 0(r4)
|
|
/* 09BC6C 800A120C 4BFFCF99 */ bl OSClearContext
|
|
/* 09BC70 800A1210 93CD8B90 */ stw r30, Reschedule@sda21(r13)
|
|
/* 09BC74 800A1214 8001001C */ lwz r0, 0x1c(r1)
|
|
/* 09BC78 800A1218 83E10014 */ lwz r31, 0x14(r1)
|
|
/* 09BC7C 800A121C 83C10010 */ lwz r30, 0x10(r1)
|
|
/* 09BC80 800A1220 83A1000C */ lwz r29, 0xc(r1)
|
|
/* 09BC84 800A1224 83810008 */ lwz r28, 8(r1)
|
|
/* 09BC88 800A1228 38210018 */ addi r1, r1, 0x18
|
|
/* 09BC8C 800A122C 7C0803A6 */ mtlr r0
|
|
/* 09BC90 800A1230 4E800020 */ blr
|
|
|
|
glabel OSInitThreadQueue
|
|
/* 09BC94 800A1234 38000000 */ li r0, 0
|
|
/* 09BC98 800A1238 90030004 */ stw r0, 4(r3)
|
|
/* 09BC9C 800A123C 90030000 */ stw r0, 0(r3)
|
|
/* 09BCA0 800A1240 4E800020 */ blr
|
|
|
|
glabel OSGetCurrentThread
|
|
/* 09BCA4 800A1244 3C608000 */ lis r3, 0x8000
|
|
/* 09BCA8 800A1248 806300E4 */ lwz r3, 0xe4(r3)
|
|
/* 09BCAC 800A124C 4E800020 */ blr
|
|
|
|
glabel OSDisableScheduler
|
|
/* 09BCB0 800A1250 7C0802A6 */ mflr r0
|
|
/* 09BCB4 800A1254 90010004 */ stw r0, 4(r1)
|
|
/* 09BCB8 800A1258 9421FFF0 */ stwu r1, -0x10(r1)
|
|
/* 09BCBC 800A125C 93E1000C */ stw r31, 0xc(r1)
|
|
/* 09BCC0 800A1260 4BFFDA9D */ bl OSDisableInterrupts
|
|
/* 09BCC4 800A1264 808D8B90 */ lwz r4, Reschedule@sda21(r13)
|
|
/* 09BCC8 800A1268 38040001 */ addi r0, r4, 1
|
|
/* 09BCCC 800A126C 900D8B90 */ stw r0, Reschedule@sda21(r13)
|
|
/* 09BCD0 800A1270 7C9F2378 */ mr r31, r4
|
|
/* 09BCD4 800A1274 4BFFDAB1 */ bl OSRestoreInterrupts
|
|
/* 09BCD8 800A1278 7FE3FB78 */ mr r3, r31
|
|
/* 09BCDC 800A127C 80010014 */ lwz r0, 0x14(r1)
|
|
/* 09BCE0 800A1280 83E1000C */ lwz r31, 0xc(r1)
|
|
/* 09BCE4 800A1284 38210010 */ addi r1, r1, 0x10
|
|
/* 09BCE8 800A1288 7C0803A6 */ mtlr r0
|
|
/* 09BCEC 800A128C 4E800020 */ blr
|
|
|
|
glabel OSEnableScheduler
|
|
/* 09BCF0 800A1290 7C0802A6 */ mflr r0
|
|
/* 09BCF4 800A1294 90010004 */ stw r0, 4(r1)
|
|
/* 09BCF8 800A1298 9421FFF0 */ stwu r1, -0x10(r1)
|
|
/* 09BCFC 800A129C 93E1000C */ stw r31, 0xc(r1)
|
|
/* 09BD00 800A12A0 4BFFDA5D */ bl OSDisableInterrupts
|
|
/* 09BD04 800A12A4 808D8B90 */ lwz r4, Reschedule@sda21(r13)
|
|
/* 09BD08 800A12A8 3804FFFF */ addi r0, r4, -1
|
|
/* 09BD0C 800A12AC 900D8B90 */ stw r0, Reschedule@sda21(r13)
|
|
/* 09BD10 800A12B0 7C9F2378 */ mr r31, r4
|
|
/* 09BD14 800A12B4 4BFFDA71 */ bl OSRestoreInterrupts
|
|
/* 09BD18 800A12B8 7FE3FB78 */ mr r3, r31
|
|
/* 09BD1C 800A12BC 80010014 */ lwz r0, 0x14(r1)
|
|
/* 09BD20 800A12C0 83E1000C */ lwz r31, 0xc(r1)
|
|
/* 09BD24 800A12C4 38210010 */ addi r1, r1, 0x10
|
|
/* 09BD28 800A12C8 7C0803A6 */ mtlr r0
|
|
/* 09BD2C 800A12CC 4E800020 */ blr
|
|
|
|
UnsetRun:
|
|
/* 09BD30 800A12D0 808302E0 */ lwz r4, 0x2e0(r3)
|
|
/* 09BD34 800A12D4 80A302DC */ lwz r5, 0x2dc(r3)
|
|
/* 09BD38 800A12D8 28040000 */ cmplwi r4, 0
|
|
/* 09BD3C 800A12DC 80C302E4 */ lwz r6, 0x2e4(r3)
|
|
/* 09BD40 800A12E0 4082000C */ bne lbl_800A12EC
|
|
/* 09BD44 800A12E4 90C50004 */ stw r6, 4(r5)
|
|
/* 09BD48 800A12E8 48000008 */ b lbl_800A12F0
|
|
lbl_800A12EC:
|
|
/* 09BD4C 800A12EC 90C402E4 */ stw r6, 0x2e4(r4)
|
|
lbl_800A12F0:
|
|
/* 09BD50 800A12F0 28060000 */ cmplwi r6, 0
|
|
/* 09BD54 800A12F4 4082000C */ bne lbl_800A1300
|
|
/* 09BD58 800A12F8 90850000 */ stw r4, 0(r5)
|
|
/* 09BD5C 800A12FC 48000008 */ b lbl_800A1304
|
|
lbl_800A1300:
|
|
/* 09BD60 800A1300 908602E0 */ stw r4, 0x2e0(r6)
|
|
lbl_800A1304:
|
|
/* 09BD64 800A1304 80050000 */ lwz r0, 0(r5)
|
|
/* 09BD68 800A1308 28000000 */ cmplwi r0, 0
|
|
/* 09BD6C 800A130C 40820020 */ bne lbl_800A132C
|
|
/* 09BD70 800A1310 800302D0 */ lwz r0, 0x2d0(r3)
|
|
/* 09BD74 800A1314 38800001 */ li r4, 1
|
|
/* 09BD78 800A1318 80AD8B88 */ lwz r5, RunQueueBits@sda21(r13)
|
|
/* 09BD7C 800A131C 2000001F */ subfic r0, r0, 0x1f
|
|
/* 09BD80 800A1320 7C800030 */ slw r0, r4, r0
|
|
/* 09BD84 800A1324 7CA00078 */ andc r0, r5, r0
|
|
/* 09BD88 800A1328 900D8B88 */ stw r0, RunQueueBits@sda21(r13)
|
|
lbl_800A132C:
|
|
/* 09BD8C 800A132C 38000000 */ li r0, 0
|
|
/* 09BD90 800A1330 900302DC */ stw r0, 0x2dc(r3)
|
|
/* 09BD94 800A1334 4E800020 */ blr
|
|
|
|
glabel __OSGetEffectivePriority
|
|
/* 09BD98 800A1338 808302D4 */ lwz r4, 0x2d4(r3)
|
|
/* 09BD9C 800A133C 80A302F4 */ lwz r5, 0x2f4(r3)
|
|
/* 09BDA0 800A1340 48000024 */ b lbl_800A1364
|
|
lbl_800A1344:
|
|
/* 09BDA4 800A1344 80650000 */ lwz r3, 0(r5)
|
|
/* 09BDA8 800A1348 28030000 */ cmplwi r3, 0
|
|
/* 09BDAC 800A134C 41820014 */ beq lbl_800A1360
|
|
/* 09BDB0 800A1350 800302D0 */ lwz r0, 0x2d0(r3)
|
|
/* 09BDB4 800A1354 7C002000 */ cmpw r0, r4
|
|
/* 09BDB8 800A1358 40800008 */ bge lbl_800A1360
|
|
/* 09BDBC 800A135C 7C040378 */ mr r4, r0
|
|
lbl_800A1360:
|
|
/* 09BDC0 800A1360 80A50010 */ lwz r5, 0x10(r5)
|
|
lbl_800A1364:
|
|
/* 09BDC4 800A1364 28050000 */ cmplwi r5, 0
|
|
/* 09BDC8 800A1368 4082FFDC */ bne lbl_800A1344
|
|
/* 09BDCC 800A136C 7C832378 */ mr r3, r4
|
|
/* 09BDD0 800A1370 4E800020 */ blr
|
|
|
|
SetEffectivePriority:
|
|
/* 09BDD4 800A1374 7C0802A6 */ mflr r0
|
|
/* 09BDD8 800A1378 90010004 */ stw r0, 4(r1)
|
|
/* 09BDDC 800A137C 9421FFE8 */ stwu r1, -0x18(r1)
|
|
/* 09BDE0 800A1380 93E10014 */ stw r31, 0x14(r1)
|
|
/* 09BDE4 800A1384 7C7F1B78 */ mr r31, r3
|
|
/* 09BDE8 800A1388 93C10010 */ stw r30, 0x10(r1)
|
|
/* 09BDEC 800A138C 3BC40000 */ addi r30, r4, 0
|
|
/* 09BDF0 800A1390 A00302C8 */ lhz r0, 0x2c8(r3)
|
|
/* 09BDF4 800A1394 2C000003 */ cmpwi r0, 3
|
|
/* 09BDF8 800A1398 41820180 */ beq lbl_800A1518
|
|
/* 09BDFC 800A139C 40800014 */ bge lbl_800A13B0
|
|
/* 09BE00 800A13A0 2C000001 */ cmpwi r0, 1
|
|
/* 09BE04 800A13A4 41820018 */ beq lbl_800A13BC
|
|
/* 09BE08 800A13A8 40800164 */ bge lbl_800A150C
|
|
/* 09BE0C 800A13AC 4800016C */ b lbl_800A1518
|
|
lbl_800A13B0:
|
|
/* 09BE10 800A13B0 2C000005 */ cmpwi r0, 5
|
|
/* 09BE14 800A13B4 40800164 */ bge lbl_800A1518
|
|
/* 09BE18 800A13B8 4800007C */ b lbl_800A1434
|
|
lbl_800A13BC:
|
|
/* 09BE1C 800A13BC 7FE3FB78 */ mr r3, r31
|
|
/* 09BE20 800A13C0 4BFFFF11 */ bl UnsetRun
|
|
/* 09BE24 800A13C4 93DF02D0 */ stw r30, 0x2d0(r31)
|
|
/* 09BE28 800A13C8 3C608013 */ lis r3, RunQueue@ha
|
|
/* 09BE2C 800A13CC 38031038 */ addi r0, r3, RunQueue@l
|
|
/* 09BE30 800A13D0 807F02D0 */ lwz r3, 0x2d0(r31)
|
|
/* 09BE34 800A13D4 54631838 */ slwi r3, r3, 3
|
|
/* 09BE38 800A13D8 7C001A14 */ add r0, r0, r3
|
|
/* 09BE3C 800A13DC 901F02DC */ stw r0, 0x2dc(r31)
|
|
/* 09BE40 800A13E0 809F02DC */ lwz r4, 0x2dc(r31)
|
|
/* 09BE44 800A13E4 80640004 */ lwz r3, 4(r4)
|
|
/* 09BE48 800A13E8 28030000 */ cmplwi r3, 0
|
|
/* 09BE4C 800A13EC 4082000C */ bne lbl_800A13F8
|
|
/* 09BE50 800A13F0 93E40000 */ stw r31, 0(r4)
|
|
/* 09BE54 800A13F4 48000008 */ b lbl_800A13FC
|
|
lbl_800A13F8:
|
|
/* 09BE58 800A13F8 93E302E0 */ stw r31, 0x2e0(r3)
|
|
lbl_800A13FC:
|
|
/* 09BE5C 800A13FC 907F02E4 */ stw r3, 0x2e4(r31)
|
|
/* 09BE60 800A1400 38000000 */ li r0, 0
|
|
/* 09BE64 800A1404 38600001 */ li r3, 1
|
|
/* 09BE68 800A1408 901F02E0 */ stw r0, 0x2e0(r31)
|
|
/* 09BE6C 800A140C 809F02DC */ lwz r4, 0x2dc(r31)
|
|
/* 09BE70 800A1410 93E40004 */ stw r31, 4(r4)
|
|
/* 09BE74 800A1414 801F02D0 */ lwz r0, 0x2d0(r31)
|
|
/* 09BE78 800A1418 808D8B88 */ lwz r4, RunQueueBits@sda21(r13)
|
|
/* 09BE7C 800A141C 2000001F */ subfic r0, r0, 0x1f
|
|
/* 09BE80 800A1420 7C600030 */ slw r0, r3, r0
|
|
/* 09BE84 800A1424 7C800378 */ or r0, r4, r0
|
|
/* 09BE88 800A1428 900D8B88 */ stw r0, RunQueueBits@sda21(r13)
|
|
/* 09BE8C 800A142C 906D8B8C */ stw r3, RunQueueHint@sda21(r13)
|
|
/* 09BE90 800A1430 480000E8 */ b lbl_800A1518
|
|
lbl_800A1434:
|
|
/* 09BE94 800A1434 809F02E0 */ lwz r4, 0x2e0(r31)
|
|
/* 09BE98 800A1438 80BF02E4 */ lwz r5, 0x2e4(r31)
|
|
/* 09BE9C 800A143C 28040000 */ cmplwi r4, 0
|
|
/* 09BEA0 800A1440 40820010 */ bne lbl_800A1450
|
|
/* 09BEA4 800A1444 807F02DC */ lwz r3, 0x2dc(r31)
|
|
/* 09BEA8 800A1448 90A30004 */ stw r5, 4(r3)
|
|
/* 09BEAC 800A144C 48000008 */ b lbl_800A1454
|
|
lbl_800A1450:
|
|
/* 09BEB0 800A1450 90A402E4 */ stw r5, 0x2e4(r4)
|
|
lbl_800A1454:
|
|
/* 09BEB4 800A1454 28050000 */ cmplwi r5, 0
|
|
/* 09BEB8 800A1458 40820010 */ bne lbl_800A1468
|
|
/* 09BEBC 800A145C 807F02DC */ lwz r3, 0x2dc(r31)
|
|
/* 09BEC0 800A1460 90830000 */ stw r4, 0(r3)
|
|
/* 09BEC4 800A1464 48000008 */ b lbl_800A146C
|
|
lbl_800A1468:
|
|
/* 09BEC8 800A1468 908502E0 */ stw r4, 0x2e0(r5)
|
|
lbl_800A146C:
|
|
/* 09BECC 800A146C 93DF02D0 */ stw r30, 0x2d0(r31)
|
|
/* 09BED0 800A1470 809F02DC */ lwz r4, 0x2dc(r31)
|
|
/* 09BED4 800A1474 80A40000 */ lwz r5, 0(r4)
|
|
/* 09BED8 800A1478 48000008 */ b lbl_800A1480
|
|
lbl_800A147C:
|
|
/* 09BEDC 800A147C 80A502E0 */ lwz r5, 0x2e0(r5)
|
|
lbl_800A1480:
|
|
/* 09BEE0 800A1480 28050000 */ cmplwi r5, 0
|
|
/* 09BEE4 800A1484 41820014 */ beq lbl_800A1498
|
|
/* 09BEE8 800A1488 806502D0 */ lwz r3, 0x2d0(r5)
|
|
/* 09BEEC 800A148C 801F02D0 */ lwz r0, 0x2d0(r31)
|
|
/* 09BEF0 800A1490 7C030000 */ cmpw r3, r0
|
|
/* 09BEF4 800A1494 4081FFE8 */ ble lbl_800A147C
|
|
lbl_800A1498:
|
|
/* 09BEF8 800A1498 28050000 */ cmplwi r5, 0
|
|
/* 09BEFC 800A149C 40820034 */ bne lbl_800A14D0
|
|
/* 09BF00 800A14A0 80640004 */ lwz r3, 4(r4)
|
|
/* 09BF04 800A14A4 28030000 */ cmplwi r3, 0
|
|
/* 09BF08 800A14A8 4082000C */ bne lbl_800A14B4
|
|
/* 09BF0C 800A14AC 93E40000 */ stw r31, 0(r4)
|
|
/* 09BF10 800A14B0 48000008 */ b lbl_800A14B8
|
|
lbl_800A14B4:
|
|
/* 09BF14 800A14B4 93E302E0 */ stw r31, 0x2e0(r3)
|
|
lbl_800A14B8:
|
|
/* 09BF18 800A14B8 907F02E4 */ stw r3, 0x2e4(r31)
|
|
/* 09BF1C 800A14BC 38000000 */ li r0, 0
|
|
/* 09BF20 800A14C0 901F02E0 */ stw r0, 0x2e0(r31)
|
|
/* 09BF24 800A14C4 807F02DC */ lwz r3, 0x2dc(r31)
|
|
/* 09BF28 800A14C8 93E30004 */ stw r31, 4(r3)
|
|
/* 09BF2C 800A14CC 4800002C */ b lbl_800A14F8
|
|
lbl_800A14D0:
|
|
/* 09BF30 800A14D0 90BF02E0 */ stw r5, 0x2e0(r31)
|
|
/* 09BF34 800A14D4 806502E4 */ lwz r3, 0x2e4(r5)
|
|
/* 09BF38 800A14D8 93E502E4 */ stw r31, 0x2e4(r5)
|
|
/* 09BF3C 800A14DC 28030000 */ cmplwi r3, 0
|
|
/* 09BF40 800A14E0 907F02E4 */ stw r3, 0x2e4(r31)
|
|
/* 09BF44 800A14E4 40820010 */ bne lbl_800A14F4
|
|
/* 09BF48 800A14E8 807F02DC */ lwz r3, 0x2dc(r31)
|
|
/* 09BF4C 800A14EC 93E30000 */ stw r31, 0(r3)
|
|
/* 09BF50 800A14F0 48000008 */ b lbl_800A14F8
|
|
lbl_800A14F4:
|
|
/* 09BF54 800A14F4 93E302E0 */ stw r31, 0x2e0(r3)
|
|
lbl_800A14F8:
|
|
/* 09BF58 800A14F8 807F02F0 */ lwz r3, 0x2f0(r31)
|
|
/* 09BF5C 800A14FC 28030000 */ cmplwi r3, 0
|
|
/* 09BF60 800A1500 41820018 */ beq lbl_800A1518
|
|
/* 09BF64 800A1504 80630008 */ lwz r3, 8(r3)
|
|
/* 09BF68 800A1508 48000014 */ b lbl_800A151C
|
|
lbl_800A150C:
|
|
/* 09BF6C 800A150C 38000001 */ li r0, 1
|
|
/* 09BF70 800A1510 900D8B8C */ stw r0, RunQueueHint@sda21(r13)
|
|
/* 09BF74 800A1514 93DF02D0 */ stw r30, 0x2d0(r31)
|
|
lbl_800A1518:
|
|
/* 09BF78 800A1518 38600000 */ li r3, 0
|
|
lbl_800A151C:
|
|
/* 09BF7C 800A151C 8001001C */ lwz r0, 0x1c(r1)
|
|
/* 09BF80 800A1520 83E10014 */ lwz r31, 0x14(r1)
|
|
/* 09BF84 800A1524 83C10010 */ lwz r30, 0x10(r1)
|
|
/* 09BF88 800A1528 38210018 */ addi r1, r1, 0x18
|
|
/* 09BF8C 800A152C 7C0803A6 */ mtlr r0
|
|
/* 09BF90 800A1530 4E800020 */ blr
|
|
|
|
SelectThread:
|
|
/* 09BF94 800A1534 7C0802A6 */ mflr r0
|
|
/* 09BF98 800A1538 3C808013 */ lis r4, RunQueue@ha
|
|
/* 09BF9C 800A153C 90010004 */ stw r0, 4(r1)
|
|
/* 09BFA0 800A1540 9421FFE8 */ stwu r1, -0x18(r1)
|
|
/* 09BFA4 800A1544 93E10014 */ stw r31, 0x14(r1)
|
|
/* 09BFA8 800A1548 3BE41038 */ addi r31, r4, RunQueue@l
|
|
/* 09BFAC 800A154C 93C10010 */ stw r30, 0x10(r1)
|
|
/* 09BFB0 800A1550 3BC30000 */ addi r30, r3, 0
|
|
/* 09BFB4 800A1554 800D8B90 */ lwz r0, Reschedule@sda21(r13)
|
|
/* 09BFB8 800A1558 2C000000 */ cmpwi r0, 0
|
|
/* 09BFBC 800A155C 4081000C */ ble lbl_800A1568
|
|
/* 09BFC0 800A1560 38600000 */ li r3, 0
|
|
/* 09BFC4 800A1564 480001E0 */ b lbl_800A1744
|
|
lbl_800A1568:
|
|
/* 09BFC8 800A1568 4BFFCAD1 */ bl OSGetCurrentContext
|
|
/* 09BFCC 800A156C 3C808000 */ lis r4, 0x8000
|
|
/* 09BFD0 800A1570 80C400E4 */ lwz r6, 0xe4(r4)
|
|
/* 09BFD4 800A1574 7C033040 */ cmplw r3, r6
|
|
/* 09BFD8 800A1578 38660000 */ addi r3, r6, 0
|
|
/* 09BFDC 800A157C 4182000C */ beq lbl_800A1588
|
|
/* 09BFE0 800A1580 38600000 */ li r3, 0
|
|
/* 09BFE4 800A1584 480001C0 */ b lbl_800A1744
|
|
lbl_800A1588:
|
|
/* 09BFE8 800A1588 28060000 */ cmplwi r6, 0
|
|
/* 09BFEC 800A158C 418200BC */ beq lbl_800A1648
|
|
/* 09BFF0 800A1590 A00602C8 */ lhz r0, 0x2c8(r6)
|
|
/* 09BFF4 800A1594 28000002 */ cmplwi r0, 2
|
|
/* 09BFF8 800A1598 40820090 */ bne lbl_800A1628
|
|
/* 09BFFC 800A159C 2C1E0000 */ cmpwi r30, 0
|
|
/* 09C000 800A15A0 40820020 */ bne lbl_800A15C0
|
|
/* 09C004 800A15A4 808D8B88 */ lwz r4, RunQueueBits@sda21(r13)
|
|
/* 09C008 800A15A8 800602D0 */ lwz r0, 0x2d0(r6)
|
|
/* 09C00C 800A15AC 7C840034 */ cntlzw r4, r4
|
|
/* 09C010 800A15B0 7C002000 */ cmpw r0, r4
|
|
/* 09C014 800A15B4 4181000C */ bgt lbl_800A15C0
|
|
/* 09C018 800A15B8 38600000 */ li r3, 0
|
|
/* 09C01C 800A15BC 48000188 */ b lbl_800A1744
|
|
lbl_800A15C0:
|
|
/* 09C020 800A15C0 38000001 */ li r0, 1
|
|
/* 09C024 800A15C4 B00602C8 */ sth r0, 0x2c8(r6)
|
|
/* 09C028 800A15C8 800602D0 */ lwz r0, 0x2d0(r6)
|
|
/* 09C02C 800A15CC 54001838 */ slwi r0, r0, 3
|
|
/* 09C030 800A15D0 7C1F0214 */ add r0, r31, r0
|
|
/* 09C034 800A15D4 900602DC */ stw r0, 0x2dc(r6)
|
|
/* 09C038 800A15D8 80A602DC */ lwz r5, 0x2dc(r6)
|
|
/* 09C03C 800A15DC 80850004 */ lwz r4, 4(r5)
|
|
/* 09C040 800A15E0 28040000 */ cmplwi r4, 0
|
|
/* 09C044 800A15E4 4082000C */ bne lbl_800A15F0
|
|
/* 09C048 800A15E8 90C50000 */ stw r6, 0(r5)
|
|
/* 09C04C 800A15EC 48000008 */ b lbl_800A15F4
|
|
lbl_800A15F0:
|
|
/* 09C050 800A15F0 90C402E0 */ stw r6, 0x2e0(r4)
|
|
lbl_800A15F4:
|
|
/* 09C054 800A15F4 908602E4 */ stw r4, 0x2e4(r6)
|
|
/* 09C058 800A15F8 38000000 */ li r0, 0
|
|
/* 09C05C 800A15FC 38800001 */ li r4, 1
|
|
/* 09C060 800A1600 900602E0 */ stw r0, 0x2e0(r6)
|
|
/* 09C064 800A1604 80A602DC */ lwz r5, 0x2dc(r6)
|
|
/* 09C068 800A1608 90C50004 */ stw r6, 4(r5)
|
|
/* 09C06C 800A160C 800602D0 */ lwz r0, 0x2d0(r6)
|
|
/* 09C070 800A1610 80AD8B88 */ lwz r5, RunQueueBits@sda21(r13)
|
|
/* 09C074 800A1614 2000001F */ subfic r0, r0, 0x1f
|
|
/* 09C078 800A1618 7C800030 */ slw r0, r4, r0
|
|
/* 09C07C 800A161C 7CA00378 */ or r0, r5, r0
|
|
/* 09C080 800A1620 900D8B88 */ stw r0, RunQueueBits@sda21(r13)
|
|
/* 09C084 800A1624 908D8B8C */ stw r4, RunQueueHint@sda21(r13)
|
|
lbl_800A1628:
|
|
/* 09C088 800A1628 A00601A2 */ lhz r0, 0x1a2(r6)
|
|
/* 09C08C 800A162C 540007BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
|
|
/* 09C090 800A1630 40820018 */ bne lbl_800A1648
|
|
/* 09C094 800A1634 4BFFCA11 */ bl OSSaveContext
|
|
/* 09C098 800A1638 28030000 */ cmplwi r3, 0
|
|
/* 09C09C 800A163C 4182000C */ beq lbl_800A1648
|
|
/* 09C0A0 800A1640 38600000 */ li r3, 0
|
|
/* 09C0A4 800A1644 48000100 */ b lbl_800A1744
|
|
lbl_800A1648:
|
|
/* 09C0A8 800A1648 800D8B88 */ lwz r0, RunQueueBits@sda21(r13)
|
|
/* 09C0AC 800A164C 28000000 */ cmplwi r0, 0
|
|
/* 09C0B0 800A1650 40820054 */ bne lbl_800A16A4
|
|
/* 09C0B4 800A1654 818D8760 */ lwz r12, SwitchThreadCallback@sda21(r13)
|
|
/* 09C0B8 800A1658 3FC08000 */ lis r30, 0x8000
|
|
/* 09C0BC 800A165C 807E00E4 */ lwz r3, 0xe4(r30)
|
|
/* 09C0C0 800A1660 38800000 */ li r4, 0
|
|
/* 09C0C4 800A1664 7D8803A6 */ mtlr r12
|
|
/* 09C0C8 800A1668 4E800021 */ blrl
|
|
/* 09C0CC 800A166C 38000000 */ li r0, 0
|
|
/* 09C0D0 800A1670 901E00E4 */ stw r0, 0xe4(r30)
|
|
/* 09C0D4 800A1674 387F0730 */ addi r3, r31, 0x730
|
|
/* 09C0D8 800A1678 4BFFC965 */ bl OSSetCurrentContext
|
|
lbl_800A167C:
|
|
/* 09C0DC 800A167C 4BFFD695 */ bl OSEnableInterrupts
|
|
lbl_800A1680:
|
|
/* 09C0E0 800A1680 800D8B88 */ lwz r0, RunQueueBits@sda21(r13)
|
|
/* 09C0E4 800A1684 28000000 */ cmplwi r0, 0
|
|
/* 09C0E8 800A1688 4182FFF8 */ beq lbl_800A1680
|
|
/* 09C0EC 800A168C 4BFFD671 */ bl OSDisableInterrupts
|
|
/* 09C0F0 800A1690 800D8B88 */ lwz r0, RunQueueBits@sda21(r13)
|
|
/* 09C0F4 800A1694 28000000 */ cmplwi r0, 0
|
|
/* 09C0F8 800A1698 4182FFE4 */ beq lbl_800A167C
|
|
/* 09C0FC 800A169C 387F0730 */ addi r3, r31, 0x730
|
|
/* 09C100 800A16A0 4BFFCB05 */ bl OSClearContext
|
|
lbl_800A16A4:
|
|
/* 09C104 800A16A4 38600000 */ li r3, 0
|
|
/* 09C108 800A16A8 906D8B8C */ stw r3, RunQueueHint@sda21(r13)
|
|
/* 09C10C 800A16AC 800D8B88 */ lwz r0, RunQueueBits@sda21(r13)
|
|
/* 09C110 800A16B0 7C070034 */ cntlzw r7, r0
|
|
/* 09C114 800A16B4 54E01838 */ slwi r0, r7, 3
|
|
/* 09C118 800A16B8 7C9F0214 */ add r4, r31, r0
|
|
/* 09C11C 800A16BC 80A40000 */ lwz r5, 0(r4)
|
|
/* 09C120 800A16C0 80C502E0 */ lwz r6, 0x2e0(r5)
|
|
/* 09C124 800A16C4 3BC50000 */ addi r30, r5, 0
|
|
/* 09C128 800A16C8 28060000 */ cmplwi r6, 0
|
|
/* 09C12C 800A16CC 4082000C */ bne lbl_800A16D8
|
|
/* 09C130 800A16D0 90640004 */ stw r3, 4(r4)
|
|
/* 09C134 800A16D4 48000008 */ b lbl_800A16DC
|
|
lbl_800A16D8:
|
|
/* 09C138 800A16D8 906602E4 */ stw r3, 0x2e4(r6)
|
|
lbl_800A16DC:
|
|
/* 09C13C 800A16DC 90C40000 */ stw r6, 0(r4)
|
|
/* 09C140 800A16E0 80040000 */ lwz r0, 0(r4)
|
|
/* 09C144 800A16E4 28000000 */ cmplwi r0, 0
|
|
/* 09C148 800A16E8 4082001C */ bne lbl_800A1704
|
|
/* 09C14C 800A16EC 2007001F */ subfic r0, r7, 0x1f
|
|
/* 09C150 800A16F0 808D8B88 */ lwz r4, RunQueueBits@sda21(r13)
|
|
/* 09C154 800A16F4 38600001 */ li r3, 1
|
|
/* 09C158 800A16F8 7C600030 */ slw r0, r3, r0
|
|
/* 09C15C 800A16FC 7C800078 */ andc r0, r4, r0
|
|
/* 09C160 800A1700 900D8B88 */ stw r0, RunQueueBits@sda21(r13)
|
|
lbl_800A1704:
|
|
/* 09C164 800A1704 38000000 */ li r0, 0
|
|
/* 09C168 800A1708 901E02DC */ stw r0, 0x2dc(r30)
|
|
/* 09C16C 800A170C 38000002 */ li r0, 2
|
|
/* 09C170 800A1710 3FE08000 */ lis r31, 0x8000
|
|
/* 09C174 800A1714 B01E02C8 */ sth r0, 0x2c8(r30)
|
|
/* 09C178 800A1718 7FC4F378 */ mr r4, r30
|
|
/* 09C17C 800A171C 818D8760 */ lwz r12, SwitchThreadCallback@sda21(r13)
|
|
/* 09C180 800A1720 807F00E4 */ lwz r3, 0xe4(r31)
|
|
/* 09C184 800A1724 7D8803A6 */ mtlr r12
|
|
/* 09C188 800A1728 4E800021 */ blrl
|
|
/* 09C18C 800A172C 93DF00E4 */ stw r30, 0xe4(r31)
|
|
/* 09C190 800A1730 7FC3F378 */ mr r3, r30
|
|
/* 09C194 800A1734 4BFFC8A9 */ bl OSSetCurrentContext
|
|
/* 09C198 800A1738 7FC3F378 */ mr r3, r30
|
|
/* 09C19C 800A173C 4BFFC989 */ bl OSLoadContext
|
|
/* 09C1A0 800A1740 7FC3F378 */ mr r3, r30
|
|
lbl_800A1744:
|
|
/* 09C1A4 800A1744 8001001C */ lwz r0, 0x1c(r1)
|
|
/* 09C1A8 800A1748 83E10014 */ lwz r31, 0x14(r1)
|
|
/* 09C1AC 800A174C 83C10010 */ lwz r30, 0x10(r1)
|
|
/* 09C1B0 800A1750 38210018 */ addi r1, r1, 0x18
|
|
/* 09C1B4 800A1754 7C0803A6 */ mtlr r0
|
|
/* 09C1B8 800A1758 4E800020 */ blr
|
|
|
|
glabel __OSReschedule
|
|
/* 09C1BC 800A175C 7C0802A6 */ mflr r0
|
|
/* 09C1C0 800A1760 90010004 */ stw r0, 4(r1)
|
|
/* 09C1C4 800A1764 9421FFF8 */ stwu r1, -8(r1)
|
|
/* 09C1C8 800A1768 800D8B8C */ lwz r0, RunQueueHint@sda21(r13)
|
|
/* 09C1CC 800A176C 2C000000 */ cmpwi r0, 0
|
|
/* 09C1D0 800A1770 4182000C */ beq lbl_800A177C
|
|
/* 09C1D4 800A1774 38600000 */ li r3, 0
|
|
/* 09C1D8 800A1778 4BFFFDBD */ bl SelectThread
|
|
lbl_800A177C:
|
|
/* 09C1DC 800A177C 8001000C */ lwz r0, 0xc(r1)
|
|
/* 09C1E0 800A1780 38210008 */ addi r1, r1, 8
|
|
/* 09C1E4 800A1784 7C0803A6 */ mtlr r0
|
|
/* 09C1E8 800A1788 4E800020 */ blr
|
|
|
|
glabel OSCreateThread
|
|
/* 09C1EC 800A178C 7C0802A6 */ mflr r0
|
|
/* 09C1F0 800A1790 2C080000 */ cmpwi r8, 0
|
|
/* 09C1F4 800A1794 90010004 */ stw r0, 4(r1)
|
|
/* 09C1F8 800A1798 9421FFB0 */ stwu r1, -0x50(r1)
|
|
/* 09C1FC 800A179C BF61003C */ stmw r27, 0x3c(r1)
|
|
/* 09C200 800A17A0 3BE30000 */ addi r31, r3, 0
|
|
/* 09C204 800A17A4 3B650000 */ addi r27, r5, 0
|
|
/* 09C208 800A17A8 3B860000 */ addi r28, r6, 0
|
|
/* 09C20C 800A17AC 3BA70000 */ addi r29, r7, 0
|
|
/* 09C210 800A17B0 4180000C */ blt lbl_800A17BC
|
|
/* 09C214 800A17B4 2C08001F */ cmpwi r8, 0x1f
|
|
/* 09C218 800A17B8 4081000C */ ble lbl_800A17C4
|
|
lbl_800A17BC:
|
|
/* 09C21C 800A17BC 38600000 */ li r3, 0
|
|
/* 09C220 800A17C0 480001A0 */ b lbl_800A1960
|
|
lbl_800A17C4:
|
|
/* 09C224 800A17C4 38C00001 */ li r6, 1
|
|
/* 09C228 800A17C8 B0DF02C8 */ sth r6, 0x2c8(r31)
|
|
/* 09C22C 800A17CC 552007FE */ clrlwi r0, r9, 0x1f
|
|
/* 09C230 800A17D0 57870038 */ rlwinm r7, r28, 0, 0, 0x1c
|
|
/* 09C234 800A17D4 B01F02CA */ sth r0, 0x2ca(r31)
|
|
/* 09C238 800A17D8 3800FFFF */ li r0, -1
|
|
/* 09C23C 800A17DC 3BC00000 */ li r30, 0
|
|
/* 09C240 800A17E0 911F02D4 */ stw r8, 0x2d4(r31)
|
|
/* 09C244 800A17E4 387F0000 */ addi r3, r31, 0
|
|
/* 09C248 800A17E8 38A7FFF8 */ addi r5, r7, -8
|
|
/* 09C24C 800A17EC 911F02D0 */ stw r8, 0x2d0(r31)
|
|
/* 09C250 800A17F0 90DF02CC */ stw r6, 0x2cc(r31)
|
|
/* 09C254 800A17F4 901F02D8 */ stw r0, 0x2d8(r31)
|
|
/* 09C258 800A17F8 93DF02F0 */ stw r30, 0x2f0(r31)
|
|
/* 09C25C 800A17FC 93DF02EC */ stw r30, 0x2ec(r31)
|
|
/* 09C260 800A1800 93DF02E8 */ stw r30, 0x2e8(r31)
|
|
/* 09C264 800A1804 93DF02F8 */ stw r30, 0x2f8(r31)
|
|
/* 09C268 800A1808 93DF02F4 */ stw r30, 0x2f4(r31)
|
|
/* 09C26C 800A180C 93C7FFF8 */ stw r30, -8(r7)
|
|
/* 09C270 800A1810 93C7FFFC */ stw r30, -4(r7)
|
|
/* 09C274 800A1814 4BFFC9B5 */ bl OSInitContext
|
|
/* 09C278 800A1818 3C60800A */ lis r3, OSExitThread@ha
|
|
/* 09C27C 800A181C 38031974 */ addi r0, r3, OSExitThread@l
|
|
/* 09C280 800A1820 901F0084 */ stw r0, 0x84(r31)
|
|
/* 09C284 800A1824 3C60DEAE */ lis r3, 0xdeae
|
|
/* 09C288 800A1828 7C9DE050 */ subf r4, r29, r28
|
|
/* 09C28C 800A182C 937F000C */ stw r27, 0xc(r31)
|
|
/* 09C290 800A1830 3803BABE */ addi r0, r3, -17730
|
|
/* 09C294 800A1834 939F0304 */ stw r28, 0x304(r31)
|
|
/* 09C298 800A1838 909F0308 */ stw r4, 0x308(r31)
|
|
/* 09C29C 800A183C 807F0308 */ lwz r3, 0x308(r31)
|
|
/* 09C2A0 800A1840 90030000 */ stw r0, 0(r3)
|
|
/* 09C2A4 800A1844 93DF030C */ stw r30, 0x30c(r31)
|
|
/* 09C2A8 800A1848 93DF0310 */ stw r30, 0x310(r31)
|
|
/* 09C2AC 800A184C 93DF0314 */ stw r30, 0x314(r31)
|
|
/* 09C2B0 800A1850 4BFFD4AD */ bl OSDisableInterrupts
|
|
/* 09C2B4 800A1854 3C808013 */ lis r4, __OSErrorTable@ha
|
|
/* 09C2B8 800A1858 38840F70 */ addi r4, r4, __OSErrorTable@l
|
|
/* 09C2BC 800A185C 80040040 */ lwz r0, 0x40(r4)
|
|
/* 09C2C0 800A1860 28000000 */ cmplwi r0, 0
|
|
/* 09C2C4 800A1864 418200C4 */ beq lbl_800A1928
|
|
/* 09C2C8 800A1868 809F019C */ lwz r4, 0x19c(r31)
|
|
/* 09C2CC 800A186C 38000004 */ li r0, 4
|
|
/* 09C2D0 800A1870 7C0903A6 */ mtctr r0
|
|
/* 09C2D4 800A1874 38BF0000 */ addi r5, r31, 0
|
|
/* 09C2D8 800A1878 60800900 */ ori r0, r4, 0x900
|
|
/* 09C2DC 800A187C 901F019C */ stw r0, 0x19c(r31)
|
|
/* 09C2E0 800A1880 A01F01A2 */ lhz r0, 0x1a2(r31)
|
|
/* 09C2E4 800A1884 60000001 */ ori r0, r0, 1
|
|
/* 09C2E8 800A1888 B01F01A2 */ sth r0, 0x1a2(r31)
|
|
/* 09C2EC 800A188C 800D8750 */ lwz r0, __OSFpscrEnableBits@sda21(r13)
|
|
/* 09C2F0 800A1890 54000638 */ rlwinm r0, r0, 0, 0x18, 0x1c
|
|
/* 09C2F4 800A1894 60000004 */ ori r0, r0, 4
|
|
/* 09C2F8 800A1898 901F0194 */ stw r0, 0x194(r31)
|
|
lbl_800A189C:
|
|
/* 09C2FC 800A189C 3800FFFF */ li r0, -1
|
|
/* 09C300 800A18A0 90050094 */ stw r0, 0x94(r5)
|
|
/* 09C304 800A18A4 90050090 */ stw r0, 0x90(r5)
|
|
/* 09C308 800A18A8 900501CC */ stw r0, 0x1cc(r5)
|
|
/* 09C30C 800A18AC 900501C8 */ stw r0, 0x1c8(r5)
|
|
/* 09C310 800A18B0 9005009C */ stw r0, 0x9c(r5)
|
|
/* 09C314 800A18B4 90050098 */ stw r0, 0x98(r5)
|
|
/* 09C318 800A18B8 900501D4 */ stw r0, 0x1d4(r5)
|
|
/* 09C31C 800A18BC 900501D0 */ stw r0, 0x1d0(r5)
|
|
/* 09C320 800A18C0 900500A4 */ stw r0, 0xa4(r5)
|
|
/* 09C324 800A18C4 900500A0 */ stw r0, 0xa0(r5)
|
|
/* 09C328 800A18C8 900501DC */ stw r0, 0x1dc(r5)
|
|
/* 09C32C 800A18CC 900501D8 */ stw r0, 0x1d8(r5)
|
|
/* 09C330 800A18D0 900500AC */ stw r0, 0xac(r5)
|
|
/* 09C334 800A18D4 900500A8 */ stw r0, 0xa8(r5)
|
|
/* 09C338 800A18D8 900501E4 */ stw r0, 0x1e4(r5)
|
|
/* 09C33C 800A18DC 900501E0 */ stw r0, 0x1e0(r5)
|
|
/* 09C340 800A18E0 900500B4 */ stw r0, 0xb4(r5)
|
|
/* 09C344 800A18E4 900500B0 */ stw r0, 0xb0(r5)
|
|
/* 09C348 800A18E8 900501EC */ stw r0, 0x1ec(r5)
|
|
/* 09C34C 800A18EC 900501E8 */ stw r0, 0x1e8(r5)
|
|
/* 09C350 800A18F0 900500BC */ stw r0, 0xbc(r5)
|
|
/* 09C354 800A18F4 900500B8 */ stw r0, 0xb8(r5)
|
|
/* 09C358 800A18F8 900501F4 */ stw r0, 0x1f4(r5)
|
|
/* 09C35C 800A18FC 900501F0 */ stw r0, 0x1f0(r5)
|
|
/* 09C360 800A1900 900500C4 */ stw r0, 0xc4(r5)
|
|
/* 09C364 800A1904 900500C0 */ stw r0, 0xc0(r5)
|
|
/* 09C368 800A1908 900501FC */ stw r0, 0x1fc(r5)
|
|
/* 09C36C 800A190C 900501F8 */ stw r0, 0x1f8(r5)
|
|
/* 09C370 800A1910 900500CC */ stw r0, 0xcc(r5)
|
|
/* 09C374 800A1914 900500C8 */ stw r0, 0xc8(r5)
|
|
/* 09C378 800A1918 90050204 */ stw r0, 0x204(r5)
|
|
/* 09C37C 800A191C 90050200 */ stw r0, 0x200(r5)
|
|
/* 09C380 800A1920 38A50040 */ addi r5, r5, 0x40
|
|
/* 09C384 800A1924 4200FF78 */ bdnz lbl_800A189C
|
|
lbl_800A1928:
|
|
/* 09C388 800A1928 3C808000 */ lis r4, 0x8000
|
|
/* 09C38C 800A192C 38A400DC */ addi r5, r4, 0xdc
|
|
/* 09C390 800A1930 84C50004 */ lwzu r6, 4(r5)
|
|
/* 09C394 800A1934 28060000 */ cmplwi r6, 0
|
|
/* 09C398 800A1938 4082000C */ bne lbl_800A1944
|
|
/* 09C39C 800A193C 93E400DC */ stw r31, 0xdc(r4)
|
|
/* 09C3A0 800A1940 48000008 */ b lbl_800A1948
|
|
lbl_800A1944:
|
|
/* 09C3A4 800A1944 93E602FC */ stw r31, 0x2fc(r6)
|
|
lbl_800A1948:
|
|
/* 09C3A8 800A1948 90DF0300 */ stw r6, 0x300(r31)
|
|
/* 09C3AC 800A194C 38000000 */ li r0, 0
|
|
/* 09C3B0 800A1950 901F02FC */ stw r0, 0x2fc(r31)
|
|
/* 09C3B4 800A1954 93E50000 */ stw r31, 0(r5)
|
|
/* 09C3B8 800A1958 4BFFD3CD */ bl OSRestoreInterrupts
|
|
/* 09C3BC 800A195C 38600001 */ li r3, 1
|
|
lbl_800A1960:
|
|
/* 09C3C0 800A1960 BB61003C */ lmw r27, 0x3c(r1)
|
|
/* 09C3C4 800A1964 80010054 */ lwz r0, 0x54(r1)
|
|
/* 09C3C8 800A1968 38210050 */ addi r1, r1, 0x50
|
|
/* 09C3CC 800A196C 7C0803A6 */ mtlr r0
|
|
/* 09C3D0 800A1970 4E800020 */ blr
|
|
|
|
glabel OSExitThread
|
|
/* 09C3D4 800A1974 7C0802A6 */ mflr r0
|
|
/* 09C3D8 800A1978 90010004 */ stw r0, 4(r1)
|
|
/* 09C3DC 800A197C 9421FFE0 */ stwu r1, -0x20(r1)
|
|
/* 09C3E0 800A1980 93E1001C */ stw r31, 0x1c(r1)
|
|
/* 09C3E4 800A1984 93C10018 */ stw r30, 0x18(r1)
|
|
/* 09C3E8 800A1988 93A10014 */ stw r29, 0x14(r1)
|
|
/* 09C3EC 800A198C 93810010 */ stw r28, 0x10(r1)
|
|
/* 09C3F0 800A1990 7C7C1B78 */ mr r28, r3
|
|
/* 09C3F4 800A1994 4BFFD369 */ bl OSDisableInterrupts
|
|
/* 09C3F8 800A1998 3FE08000 */ lis r31, 0x8000
|
|
/* 09C3FC 800A199C 83DF00E4 */ lwz r30, 0xe4(r31)
|
|
/* 09C400 800A19A0 3BA30000 */ addi r29, r3, 0
|
|
/* 09C404 800A19A4 387E0000 */ addi r3, r30, 0
|
|
/* 09C408 800A19A8 4BFFC7FD */ bl OSClearContext
|
|
/* 09C40C 800A19AC A01E02CA */ lhz r0, 0x2ca(r30)
|
|
/* 09C410 800A19B0 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 09C414 800A19B4 41820044 */ beq lbl_800A19F8
|
|
/* 09C418 800A19B8 809E02FC */ lwz r4, 0x2fc(r30)
|
|
/* 09C41C 800A19BC 80BE0300 */ lwz r5, 0x300(r30)
|
|
/* 09C420 800A19C0 28040000 */ cmplwi r4, 0
|
|
/* 09C424 800A19C4 4082000C */ bne lbl_800A19D0
|
|
/* 09C428 800A19C8 90BF00E0 */ stw r5, 0xe0(r31)
|
|
/* 09C42C 800A19CC 48000008 */ b lbl_800A19D4
|
|
lbl_800A19D0:
|
|
/* 09C430 800A19D0 90A40300 */ stw r5, 0x300(r4)
|
|
lbl_800A19D4:
|
|
/* 09C434 800A19D4 28050000 */ cmplwi r5, 0
|
|
/* 09C438 800A19D8 40820010 */ bne lbl_800A19E8
|
|
/* 09C43C 800A19DC 3C608000 */ lis r3, 0x8000
|
|
/* 09C440 800A19E0 908300DC */ stw r4, 0xdc(r3)
|
|
/* 09C444 800A19E4 48000008 */ b lbl_800A19EC
|
|
lbl_800A19E8:
|
|
/* 09C448 800A19E8 908502FC */ stw r4, 0x2fc(r5)
|
|
lbl_800A19EC:
|
|
/* 09C44C 800A19EC 38000000 */ li r0, 0
|
|
/* 09C450 800A19F0 B01E02C8 */ sth r0, 0x2c8(r30)
|
|
/* 09C454 800A19F4 48000010 */ b lbl_800A1A04
|
|
lbl_800A19F8:
|
|
/* 09C458 800A19F8 38000008 */ li r0, 8
|
|
/* 09C45C 800A19FC B01E02C8 */ sth r0, 0x2c8(r30)
|
|
/* 09C460 800A1A00 939E02D8 */ stw r28, 0x2d8(r30)
|
|
lbl_800A1A04:
|
|
/* 09C464 800A1A04 7FC3F378 */ mr r3, r30
|
|
/* 09C468 800A1A08 4BFFE055 */ bl __OSUnlockAllMutex
|
|
/* 09C46C 800A1A0C 387E02E8 */ addi r3, r30, 0x2e8
|
|
/* 09C470 800A1A10 480006E9 */ bl OSWakeupThread
|
|
/* 09C474 800A1A14 38000001 */ li r0, 1
|
|
/* 09C478 800A1A18 900D8B8C */ stw r0, RunQueueHint@sda21(r13)
|
|
/* 09C47C 800A1A1C 800D8B8C */ lwz r0, RunQueueHint@sda21(r13)
|
|
/* 09C480 800A1A20 2C000000 */ cmpwi r0, 0
|
|
/* 09C484 800A1A24 4182000C */ beq lbl_800A1A30
|
|
/* 09C488 800A1A28 38600000 */ li r3, 0
|
|
/* 09C48C 800A1A2C 4BFFFB09 */ bl SelectThread
|
|
lbl_800A1A30:
|
|
/* 09C490 800A1A30 7FA3EB78 */ mr r3, r29
|
|
/* 09C494 800A1A34 4BFFD2F1 */ bl OSRestoreInterrupts
|
|
/* 09C498 800A1A38 80010024 */ lwz r0, 0x24(r1)
|
|
/* 09C49C 800A1A3C 83E1001C */ lwz r31, 0x1c(r1)
|
|
/* 09C4A0 800A1A40 83C10018 */ lwz r30, 0x18(r1)
|
|
/* 09C4A4 800A1A44 83A10014 */ lwz r29, 0x14(r1)
|
|
/* 09C4A8 800A1A48 83810010 */ lwz r28, 0x10(r1)
|
|
/* 09C4AC 800A1A4C 38210020 */ addi r1, r1, 0x20
|
|
/* 09C4B0 800A1A50 7C0803A6 */ mtlr r0
|
|
/* 09C4B4 800A1A54 4E800020 */ blr
|
|
|
|
glabel OSCancelThread
|
|
/* 09C4B8 800A1A58 7C0802A6 */ mflr r0
|
|
/* 09C4BC 800A1A5C 90010004 */ stw r0, 4(r1)
|
|
/* 09C4C0 800A1A60 9421FFE0 */ stwu r1, -0x20(r1)
|
|
/* 09C4C4 800A1A64 93E1001C */ stw r31, 0x1c(r1)
|
|
/* 09C4C8 800A1A68 93C10018 */ stw r30, 0x18(r1)
|
|
/* 09C4CC 800A1A6C 7C7E1B78 */ mr r30, r3
|
|
/* 09C4D0 800A1A70 93A10014 */ stw r29, 0x14(r1)
|
|
/* 09C4D4 800A1A74 4BFFD289 */ bl OSDisableInterrupts
|
|
/* 09C4D8 800A1A78 A01E02C8 */ lhz r0, 0x2c8(r30)
|
|
/* 09C4DC 800A1A7C 3BE30000 */ addi r31, r3, 0
|
|
/* 09C4E0 800A1A80 2C000003 */ cmpwi r0, 3
|
|
/* 09C4E4 800A1A84 418200DC */ beq lbl_800A1B60
|
|
/* 09C4E8 800A1A88 40800014 */ bge lbl_800A1A9C
|
|
/* 09C4EC 800A1A8C 2C000001 */ cmpwi r0, 1
|
|
/* 09C4F0 800A1A90 41820018 */ beq lbl_800A1AA8
|
|
/* 09C4F4 800A1A94 4080002C */ bge lbl_800A1AC0
|
|
/* 09C4F8 800A1A98 480000C8 */ b lbl_800A1B60
|
|
lbl_800A1A9C:
|
|
/* 09C4FC 800A1A9C 2C000005 */ cmpwi r0, 5
|
|
/* 09C500 800A1AA0 408000C0 */ bge lbl_800A1B60
|
|
/* 09C504 800A1AA4 48000028 */ b lbl_800A1ACC
|
|
lbl_800A1AA8:
|
|
/* 09C508 800A1AA8 801E02CC */ lwz r0, 0x2cc(r30)
|
|
/* 09C50C 800A1AAC 2C000000 */ cmpwi r0, 0
|
|
/* 09C510 800A1AB0 418100BC */ bgt lbl_800A1B6C
|
|
/* 09C514 800A1AB4 7FC3F378 */ mr r3, r30
|
|
/* 09C518 800A1AB8 4BFFF819 */ bl UnsetRun
|
|
/* 09C51C 800A1ABC 480000B0 */ b lbl_800A1B6C
|
|
lbl_800A1AC0:
|
|
/* 09C520 800A1AC0 38000001 */ li r0, 1
|
|
/* 09C524 800A1AC4 900D8B8C */ stw r0, RunQueueHint@sda21(r13)
|
|
/* 09C528 800A1AC8 480000A4 */ b lbl_800A1B6C
|
|
lbl_800A1ACC:
|
|
/* 09C52C 800A1ACC 809E02E0 */ lwz r4, 0x2e0(r30)
|
|
/* 09C530 800A1AD0 80BE02E4 */ lwz r5, 0x2e4(r30)
|
|
/* 09C534 800A1AD4 28040000 */ cmplwi r4, 0
|
|
/* 09C538 800A1AD8 40820010 */ bne lbl_800A1AE8
|
|
/* 09C53C 800A1ADC 807E02DC */ lwz r3, 0x2dc(r30)
|
|
/* 09C540 800A1AE0 90A30004 */ stw r5, 4(r3)
|
|
/* 09C544 800A1AE4 48000008 */ b lbl_800A1AEC
|
|
lbl_800A1AE8:
|
|
/* 09C548 800A1AE8 90A402E4 */ stw r5, 0x2e4(r4)
|
|
lbl_800A1AEC:
|
|
/* 09C54C 800A1AEC 28050000 */ cmplwi r5, 0
|
|
/* 09C550 800A1AF0 40820010 */ bne lbl_800A1B00
|
|
/* 09C554 800A1AF4 807E02DC */ lwz r3, 0x2dc(r30)
|
|
/* 09C558 800A1AF8 90830000 */ stw r4, 0(r3)
|
|
/* 09C55C 800A1AFC 48000008 */ b lbl_800A1B04
|
|
lbl_800A1B00:
|
|
/* 09C560 800A1B00 908502E0 */ stw r4, 0x2e0(r5)
|
|
lbl_800A1B04:
|
|
/* 09C564 800A1B04 38000000 */ li r0, 0
|
|
/* 09C568 800A1B08 901E02DC */ stw r0, 0x2dc(r30)
|
|
/* 09C56C 800A1B0C 801E02CC */ lwz r0, 0x2cc(r30)
|
|
/* 09C570 800A1B10 2C000000 */ cmpwi r0, 0
|
|
/* 09C574 800A1B14 41810058 */ bgt lbl_800A1B6C
|
|
/* 09C578 800A1B18 807E02F0 */ lwz r3, 0x2f0(r30)
|
|
/* 09C57C 800A1B1C 28030000 */ cmplwi r3, 0
|
|
/* 09C580 800A1B20 4182004C */ beq lbl_800A1B6C
|
|
/* 09C584 800A1B24 83A30008 */ lwz r29, 8(r3)
|
|
lbl_800A1B28:
|
|
/* 09C588 800A1B28 801D02CC */ lwz r0, 0x2cc(r29)
|
|
/* 09C58C 800A1B2C 2C000000 */ cmpwi r0, 0
|
|
/* 09C590 800A1B30 4181003C */ bgt lbl_800A1B6C
|
|
/* 09C594 800A1B34 7FA3EB78 */ mr r3, r29
|
|
/* 09C598 800A1B38 4BFFF801 */ bl __OSGetEffectivePriority
|
|
/* 09C59C 800A1B3C 801D02D0 */ lwz r0, 0x2d0(r29)
|
|
/* 09C5A0 800A1B40 38830000 */ addi r4, r3, 0
|
|
/* 09C5A4 800A1B44 7C002000 */ cmpw r0, r4
|
|
/* 09C5A8 800A1B48 41820024 */ beq lbl_800A1B6C
|
|
/* 09C5AC 800A1B4C 7FA3EB78 */ mr r3, r29
|
|
/* 09C5B0 800A1B50 4BFFF825 */ bl SetEffectivePriority
|
|
/* 09C5B4 800A1B54 7C7D1B79 */ or. r29, r3, r3
|
|
/* 09C5B8 800A1B58 4082FFD0 */ bne lbl_800A1B28
|
|
/* 09C5BC 800A1B5C 48000010 */ b lbl_800A1B6C
|
|
lbl_800A1B60:
|
|
/* 09C5C0 800A1B60 7FE3FB78 */ mr r3, r31
|
|
/* 09C5C4 800A1B64 4BFFD1C1 */ bl OSRestoreInterrupts
|
|
/* 09C5C8 800A1B68 48000090 */ b lbl_800A1BF8
|
|
lbl_800A1B6C:
|
|
/* 09C5CC 800A1B6C 7FC3F378 */ mr r3, r30
|
|
/* 09C5D0 800A1B70 4BFFC635 */ bl OSClearContext
|
|
/* 09C5D4 800A1B74 A01E02CA */ lhz r0, 0x2ca(r30)
|
|
/* 09C5D8 800A1B78 540007FF */ clrlwi. r0, r0, 0x1f
|
|
/* 09C5DC 800A1B7C 41820048 */ beq lbl_800A1BC4
|
|
/* 09C5E0 800A1B80 809E02FC */ lwz r4, 0x2fc(r30)
|
|
/* 09C5E4 800A1B84 80BE0300 */ lwz r5, 0x300(r30)
|
|
/* 09C5E8 800A1B88 28040000 */ cmplwi r4, 0
|
|
/* 09C5EC 800A1B8C 40820010 */ bne lbl_800A1B9C
|
|
/* 09C5F0 800A1B90 3C608000 */ lis r3, 0x8000
|
|
/* 09C5F4 800A1B94 90A300E0 */ stw r5, 0xe0(r3)
|
|
/* 09C5F8 800A1B98 48000008 */ b lbl_800A1BA0
|
|
lbl_800A1B9C:
|
|
/* 09C5FC 800A1B9C 90A40300 */ stw r5, 0x300(r4)
|
|
lbl_800A1BA0:
|
|
/* 09C600 800A1BA0 28050000 */ cmplwi r5, 0
|
|
/* 09C604 800A1BA4 40820010 */ bne lbl_800A1BB4
|
|
/* 09C608 800A1BA8 3C608000 */ lis r3, 0x8000
|
|
/* 09C60C 800A1BAC 908300DC */ stw r4, 0xdc(r3)
|
|
/* 09C610 800A1BB0 48000008 */ b lbl_800A1BB8
|
|
lbl_800A1BB4:
|
|
/* 09C614 800A1BB4 908502FC */ stw r4, 0x2fc(r5)
|
|
lbl_800A1BB8:
|
|
/* 09C618 800A1BB8 38000000 */ li r0, 0
|
|
/* 09C61C 800A1BBC B01E02C8 */ sth r0, 0x2c8(r30)
|
|
/* 09C620 800A1BC0 4800000C */ b lbl_800A1BCC
|
|
lbl_800A1BC4:
|
|
/* 09C624 800A1BC4 38000008 */ li r0, 8
|
|
/* 09C628 800A1BC8 B01E02C8 */ sth r0, 0x2c8(r30)
|
|
lbl_800A1BCC:
|
|
/* 09C62C 800A1BCC 7FC3F378 */ mr r3, r30
|
|
/* 09C630 800A1BD0 4BFFDE8D */ bl __OSUnlockAllMutex
|
|
/* 09C634 800A1BD4 387E02E8 */ addi r3, r30, 0x2e8
|
|
/* 09C638 800A1BD8 48000521 */ bl OSWakeupThread
|
|
/* 09C63C 800A1BDC 800D8B8C */ lwz r0, RunQueueHint@sda21(r13)
|
|
/* 09C640 800A1BE0 2C000000 */ cmpwi r0, 0
|
|
/* 09C644 800A1BE4 4182000C */ beq lbl_800A1BF0
|
|
/* 09C648 800A1BE8 38600000 */ li r3, 0
|
|
/* 09C64C 800A1BEC 4BFFF949 */ bl SelectThread
|
|
lbl_800A1BF0:
|
|
/* 09C650 800A1BF0 7FE3FB78 */ mr r3, r31
|
|
/* 09C654 800A1BF4 4BFFD131 */ bl OSRestoreInterrupts
|
|
lbl_800A1BF8:
|
|
/* 09C658 800A1BF8 80010024 */ lwz r0, 0x24(r1)
|
|
/* 09C65C 800A1BFC 83E1001C */ lwz r31, 0x1c(r1)
|
|
/* 09C660 800A1C00 83C10018 */ lwz r30, 0x18(r1)
|
|
/* 09C664 800A1C04 83A10014 */ lwz r29, 0x14(r1)
|
|
/* 09C668 800A1C08 38210020 */ addi r1, r1, 0x20
|
|
/* 09C66C 800A1C0C 7C0803A6 */ mtlr r0
|
|
/* 09C670 800A1C10 4E800020 */ blr
|
|
|
|
glabel OSResumeThread
|
|
/* 09C674 800A1C14 7C0802A6 */ mflr r0
|
|
/* 09C678 800A1C18 90010004 */ stw r0, 4(r1)
|
|
/* 09C67C 800A1C1C 9421FFD8 */ stwu r1, -0x28(r1)
|
|
/* 09C680 800A1C20 93E10024 */ stw r31, 0x24(r1)
|
|
/* 09C684 800A1C24 93C10020 */ stw r30, 0x20(r1)
|
|
/* 09C688 800A1C28 93A1001C */ stw r29, 0x1c(r1)
|
|
/* 09C68C 800A1C2C 7C7D1B78 */ mr r29, r3
|
|
/* 09C690 800A1C30 4BFFD0CD */ bl OSDisableInterrupts
|
|
/* 09C694 800A1C34 809D02CC */ lwz r4, 0x2cc(r29)
|
|
/* 09C698 800A1C38 3BE30000 */ addi r31, r3, 0
|
|
/* 09C69C 800A1C3C 3804FFFF */ addi r0, r4, -1
|
|
/* 09C6A0 800A1C40 901D02CC */ stw r0, 0x2cc(r29)
|
|
/* 09C6A4 800A1C44 7C9E2378 */ mr r30, r4
|
|
/* 09C6A8 800A1C48 801D02CC */ lwz r0, 0x2cc(r29)
|
|
/* 09C6AC 800A1C4C 2C000000 */ cmpwi r0, 0
|
|
/* 09C6B0 800A1C50 40800010 */ bge lbl_800A1C60
|
|
/* 09C6B4 800A1C54 38000000 */ li r0, 0
|
|
/* 09C6B8 800A1C58 901D02CC */ stw r0, 0x2cc(r29)
|
|
/* 09C6BC 800A1C5C 48000218 */ b lbl_800A1E74
|
|
lbl_800A1C60:
|
|
/* 09C6C0 800A1C60 40820214 */ bne lbl_800A1E74
|
|
/* 09C6C4 800A1C64 A01D02C8 */ lhz r0, 0x2c8(r29)
|
|
/* 09C6C8 800A1C68 2C000004 */ cmpwi r0, 4
|
|
/* 09C6CC 800A1C6C 418200B8 */ beq lbl_800A1D24
|
|
/* 09C6D0 800A1C70 408001F0 */ bge lbl_800A1E60
|
|
/* 09C6D4 800A1C74 2C000001 */ cmpwi r0, 1
|
|
/* 09C6D8 800A1C78 41820008 */ beq lbl_800A1C80
|
|
/* 09C6DC 800A1C7C 480001E4 */ b lbl_800A1E60
|
|
lbl_800A1C80:
|
|
/* 09C6E0 800A1C80 801D02D4 */ lwz r0, 0x2d4(r29)
|
|
/* 09C6E4 800A1C84 807D02F4 */ lwz r3, 0x2f4(r29)
|
|
/* 09C6E8 800A1C88 48000024 */ b lbl_800A1CAC
|
|
lbl_800A1C8C:
|
|
/* 09C6EC 800A1C8C 80830000 */ lwz r4, 0(r3)
|
|
/* 09C6F0 800A1C90 28040000 */ cmplwi r4, 0
|
|
/* 09C6F4 800A1C94 41820014 */ beq lbl_800A1CA8
|
|
/* 09C6F8 800A1C98 808402D0 */ lwz r4, 0x2d0(r4)
|
|
/* 09C6FC 800A1C9C 7C040000 */ cmpw r4, r0
|
|
/* 09C700 800A1CA0 40800008 */ bge lbl_800A1CA8
|
|
/* 09C704 800A1CA4 7C802378 */ mr r0, r4
|
|
lbl_800A1CA8:
|
|
/* 09C708 800A1CA8 80630010 */ lwz r3, 0x10(r3)
|
|
lbl_800A1CAC:
|
|
/* 09C70C 800A1CAC 28030000 */ cmplwi r3, 0
|
|
/* 09C710 800A1CB0 4082FFDC */ bne lbl_800A1C8C
|
|
/* 09C714 800A1CB4 901D02D0 */ stw r0, 0x2d0(r29)
|
|
/* 09C718 800A1CB8 3C608013 */ lis r3, RunQueue@ha
|
|
/* 09C71C 800A1CBC 38031038 */ addi r0, r3, RunQueue@l
|
|
/* 09C720 800A1CC0 807D02D0 */ lwz r3, 0x2d0(r29)
|
|
/* 09C724 800A1CC4 54631838 */ slwi r3, r3, 3
|
|
/* 09C728 800A1CC8 7C001A14 */ add r0, r0, r3
|
|
/* 09C72C 800A1CCC 901D02DC */ stw r0, 0x2dc(r29)
|
|
/* 09C730 800A1CD0 809D02DC */ lwz r4, 0x2dc(r29)
|
|
/* 09C734 800A1CD4 80640004 */ lwz r3, 4(r4)
|
|
/* 09C738 800A1CD8 28030000 */ cmplwi r3, 0
|
|
/* 09C73C 800A1CDC 4082000C */ bne lbl_800A1CE8
|
|
/* 09C740 800A1CE0 93A40000 */ stw r29, 0(r4)
|
|
/* 09C744 800A1CE4 48000008 */ b lbl_800A1CEC
|
|
lbl_800A1CE8:
|
|
/* 09C748 800A1CE8 93A302E0 */ stw r29, 0x2e0(r3)
|
|
lbl_800A1CEC:
|
|
/* 09C74C 800A1CEC 907D02E4 */ stw r3, 0x2e4(r29)
|
|
/* 09C750 800A1CF0 38000000 */ li r0, 0
|
|
/* 09C754 800A1CF4 38600001 */ li r3, 1
|
|
/* 09C758 800A1CF8 901D02E0 */ stw r0, 0x2e0(r29)
|
|
/* 09C75C 800A1CFC 809D02DC */ lwz r4, 0x2dc(r29)
|
|
/* 09C760 800A1D00 93A40004 */ stw r29, 4(r4)
|
|
/* 09C764 800A1D04 801D02D0 */ lwz r0, 0x2d0(r29)
|
|
/* 09C768 800A1D08 808D8B88 */ lwz r4, RunQueueBits@sda21(r13)
|
|
/* 09C76C 800A1D0C 2000001F */ subfic r0, r0, 0x1f
|
|
/* 09C770 800A1D10 7C600030 */ slw r0, r3, r0
|
|
/* 09C774 800A1D14 7C800378 */ or r0, r4, r0
|
|
/* 09C778 800A1D18 900D8B88 */ stw r0, RunQueueBits@sda21(r13)
|
|
/* 09C77C 800A1D1C 906D8B8C */ stw r3, RunQueueHint@sda21(r13)
|
|
/* 09C780 800A1D20 48000140 */ b lbl_800A1E60
|
|
lbl_800A1D24:
|
|
/* 09C784 800A1D24 809D02E0 */ lwz r4, 0x2e0(r29)
|
|
/* 09C788 800A1D28 80BD02E4 */ lwz r5, 0x2e4(r29)
|
|
/* 09C78C 800A1D2C 28040000 */ cmplwi r4, 0
|
|
/* 09C790 800A1D30 40820010 */ bne lbl_800A1D40
|
|
/* 09C794 800A1D34 807D02DC */ lwz r3, 0x2dc(r29)
|
|
/* 09C798 800A1D38 90A30004 */ stw r5, 4(r3)
|
|
/* 09C79C 800A1D3C 48000008 */ b lbl_800A1D44
|
|
lbl_800A1D40:
|
|
/* 09C7A0 800A1D40 90A402E4 */ stw r5, 0x2e4(r4)
|
|
lbl_800A1D44:
|
|
/* 09C7A4 800A1D44 28050000 */ cmplwi r5, 0
|
|
/* 09C7A8 800A1D48 40820010 */ bne lbl_800A1D58
|
|
/* 09C7AC 800A1D4C 807D02DC */ lwz r3, 0x2dc(r29)
|
|
/* 09C7B0 800A1D50 90830000 */ stw r4, 0(r3)
|
|
/* 09C7B4 800A1D54 48000008 */ b lbl_800A1D5C
|
|
lbl_800A1D58:
|
|
/* 09C7B8 800A1D58 908502E0 */ stw r4, 0x2e0(r5)
|
|
lbl_800A1D5C:
|
|
/* 09C7BC 800A1D5C 801D02D4 */ lwz r0, 0x2d4(r29)
|
|
/* 09C7C0 800A1D60 807D02F4 */ lwz r3, 0x2f4(r29)
|
|
/* 09C7C4 800A1D64 48000024 */ b lbl_800A1D88
|
|
lbl_800A1D68:
|
|
/* 09C7C8 800A1D68 80830000 */ lwz r4, 0(r3)
|
|
/* 09C7CC 800A1D6C 28040000 */ cmplwi r4, 0
|
|
/* 09C7D0 800A1D70 41820014 */ beq lbl_800A1D84
|
|
/* 09C7D4 800A1D74 808402D0 */ lwz r4, 0x2d0(r4)
|
|
/* 09C7D8 800A1D78 7C040000 */ cmpw r4, r0
|
|
/* 09C7DC 800A1D7C 40800008 */ bge lbl_800A1D84
|
|
/* 09C7E0 800A1D80 7C802378 */ mr r0, r4
|
|
lbl_800A1D84:
|
|
/* 09C7E4 800A1D84 80630010 */ lwz r3, 0x10(r3)
|
|
lbl_800A1D88:
|
|
/* 09C7E8 800A1D88 28030000 */ cmplwi r3, 0
|
|
/* 09C7EC 800A1D8C 4082FFDC */ bne lbl_800A1D68
|
|
/* 09C7F0 800A1D90 901D02D0 */ stw r0, 0x2d0(r29)
|
|
/* 09C7F4 800A1D94 809D02DC */ lwz r4, 0x2dc(r29)
|
|
/* 09C7F8 800A1D98 80A40000 */ lwz r5, 0(r4)
|
|
/* 09C7FC 800A1D9C 48000008 */ b lbl_800A1DA4
|
|
lbl_800A1DA0:
|
|
/* 09C800 800A1DA0 80A502E0 */ lwz r5, 0x2e0(r5)
|
|
lbl_800A1DA4:
|
|
/* 09C804 800A1DA4 28050000 */ cmplwi r5, 0
|
|
/* 09C808 800A1DA8 41820014 */ beq lbl_800A1DBC
|
|
/* 09C80C 800A1DAC 806502D0 */ lwz r3, 0x2d0(r5)
|
|
/* 09C810 800A1DB0 801D02D0 */ lwz r0, 0x2d0(r29)
|
|
/* 09C814 800A1DB4 7C030000 */ cmpw r3, r0
|
|
/* 09C818 800A1DB8 4081FFE8 */ ble lbl_800A1DA0
|
|
lbl_800A1DBC:
|
|
/* 09C81C 800A1DBC 28050000 */ cmplwi r5, 0
|
|
/* 09C820 800A1DC0 40820034 */ bne lbl_800A1DF4
|
|
/* 09C824 800A1DC4 80640004 */ lwz r3, 4(r4)
|
|
/* 09C828 800A1DC8 28030000 */ cmplwi r3, 0
|
|
/* 09C82C 800A1DCC 4082000C */ bne lbl_800A1DD8
|
|
/* 09C830 800A1DD0 93A40000 */ stw r29, 0(r4)
|
|
/* 09C834 800A1DD4 48000008 */ b lbl_800A1DDC
|
|
lbl_800A1DD8:
|
|
/* 09C838 800A1DD8 93A302E0 */ stw r29, 0x2e0(r3)
|
|
lbl_800A1DDC:
|
|
/* 09C83C 800A1DDC 907D02E4 */ stw r3, 0x2e4(r29)
|
|
/* 09C840 800A1DE0 38000000 */ li r0, 0
|
|
/* 09C844 800A1DE4 901D02E0 */ stw r0, 0x2e0(r29)
|
|
/* 09C848 800A1DE8 807D02DC */ lwz r3, 0x2dc(r29)
|
|
/* 09C84C 800A1DEC 93A30004 */ stw r29, 4(r3)
|
|
/* 09C850 800A1DF0 4800002C */ b lbl_800A1E1C
|
|
lbl_800A1DF4:
|
|
/* 09C854 800A1DF4 90BD02E0 */ stw r5, 0x2e0(r29)
|
|
/* 09C858 800A1DF8 806502E4 */ lwz r3, 0x2e4(r5)
|
|
/* 09C85C 800A1DFC 93A502E4 */ stw r29, 0x2e4(r5)
|
|
/* 09C860 800A1E00 28030000 */ cmplwi r3, 0
|
|
/* 09C864 800A1E04 907D02E4 */ stw r3, 0x2e4(r29)
|
|
/* 09C868 800A1E08 40820010 */ bne lbl_800A1E18
|
|
/* 09C86C 800A1E0C 807D02DC */ lwz r3, 0x2dc(r29)
|
|
/* 09C870 800A1E10 93A30000 */ stw r29, 0(r3)
|
|
/* 09C874 800A1E14 48000008 */ b lbl_800A1E1C
|
|
lbl_800A1E18:
|
|
/* 09C878 800A1E18 93A302E0 */ stw r29, 0x2e0(r3)
|
|
lbl_800A1E1C:
|
|
/* 09C87C 800A1E1C 807D02F0 */ lwz r3, 0x2f0(r29)
|
|
/* 09C880 800A1E20 28030000 */ cmplwi r3, 0
|
|
/* 09C884 800A1E24 4182003C */ beq lbl_800A1E60
|
|
/* 09C888 800A1E28 83A30008 */ lwz r29, 8(r3)
|
|
lbl_800A1E2C:
|
|
/* 09C88C 800A1E2C 801D02CC */ lwz r0, 0x2cc(r29)
|
|
/* 09C890 800A1E30 2C000000 */ cmpwi r0, 0
|
|
/* 09C894 800A1E34 4181002C */ bgt lbl_800A1E60
|
|
/* 09C898 800A1E38 7FA3EB78 */ mr r3, r29
|
|
/* 09C89C 800A1E3C 4BFFF4FD */ bl __OSGetEffectivePriority
|
|
/* 09C8A0 800A1E40 801D02D0 */ lwz r0, 0x2d0(r29)
|
|
/* 09C8A4 800A1E44 38830000 */ addi r4, r3, 0
|
|
/* 09C8A8 800A1E48 7C002000 */ cmpw r0, r4
|
|
/* 09C8AC 800A1E4C 41820014 */ beq lbl_800A1E60
|
|
/* 09C8B0 800A1E50 7FA3EB78 */ mr r3, r29
|
|
/* 09C8B4 800A1E54 4BFFF521 */ bl SetEffectivePriority
|
|
/* 09C8B8 800A1E58 7C7D1B79 */ or. r29, r3, r3
|
|
/* 09C8BC 800A1E5C 4082FFD0 */ bne lbl_800A1E2C
|
|
lbl_800A1E60:
|
|
/* 09C8C0 800A1E60 800D8B8C */ lwz r0, RunQueueHint@sda21(r13)
|
|
/* 09C8C4 800A1E64 2C000000 */ cmpwi r0, 0
|
|
/* 09C8C8 800A1E68 4182000C */ beq lbl_800A1E74
|
|
/* 09C8CC 800A1E6C 38600000 */ li r3, 0
|
|
/* 09C8D0 800A1E70 4BFFF6C5 */ bl SelectThread
|
|
lbl_800A1E74:
|
|
/* 09C8D4 800A1E74 7FE3FB78 */ mr r3, r31
|
|
/* 09C8D8 800A1E78 4BFFCEAD */ bl OSRestoreInterrupts
|
|
/* 09C8DC 800A1E7C 7FC3F378 */ mr r3, r30
|
|
/* 09C8E0 800A1E80 8001002C */ lwz r0, 0x2c(r1)
|
|
/* 09C8E4 800A1E84 83E10024 */ lwz r31, 0x24(r1)
|
|
/* 09C8E8 800A1E88 83C10020 */ lwz r30, 0x20(r1)
|
|
/* 09C8EC 800A1E8C 83A1001C */ lwz r29, 0x1c(r1)
|
|
/* 09C8F0 800A1E90 38210028 */ addi r1, r1, 0x28
|
|
/* 09C8F4 800A1E94 7C0803A6 */ mtlr r0
|
|
/* 09C8F8 800A1E98 4E800020 */ blr
|
|
|
|
glabel OSSuspendThread
|
|
/* 09C8FC 800A1E9C 7C0802A6 */ mflr r0
|
|
/* 09C900 800A1EA0 90010004 */ stw r0, 4(r1)
|
|
/* 09C904 800A1EA4 9421FFE0 */ stwu r1, -0x20(r1)
|
|
/* 09C908 800A1EA8 93E1001C */ stw r31, 0x1c(r1)
|
|
/* 09C90C 800A1EAC 93C10018 */ stw r30, 0x18(r1)
|
|
/* 09C910 800A1EB0 93A10014 */ stw r29, 0x14(r1)
|
|
/* 09C914 800A1EB4 7C7D1B78 */ mr r29, r3
|
|
/* 09C918 800A1EB8 4BFFCE45 */ bl OSDisableInterrupts
|
|
/* 09C91C 800A1EBC 809D02CC */ lwz r4, 0x2cc(r29)
|
|
/* 09C920 800A1EC0 3BE30000 */ addi r31, r3, 0
|
|
/* 09C924 800A1EC4 38040001 */ addi r0, r4, 1
|
|
/* 09C928 800A1EC8 7C9E2379 */ or. r30, r4, r4
|
|
/* 09C92C 800A1ECC 901D02CC */ stw r0, 0x2cc(r29)
|
|
/* 09C930 800A1ED0 40820114 */ bne lbl_800A1FE4
|
|
/* 09C934 800A1ED4 A01D02C8 */ lhz r0, 0x2c8(r29)
|
|
/* 09C938 800A1ED8 2C000003 */ cmpwi r0, 3
|
|
/* 09C93C 800A1EDC 418200F4 */ beq lbl_800A1FD0
|
|
/* 09C940 800A1EE0 40800014 */ bge lbl_800A1EF4
|
|
/* 09C944 800A1EE4 2C000001 */ cmpwi r0, 1
|
|
/* 09C948 800A1EE8 41820028 */ beq lbl_800A1F10
|
|
/* 09C94C 800A1EEC 40800014 */ bge lbl_800A1F00
|
|
/* 09C950 800A1EF0 480000E0 */ b lbl_800A1FD0
|
|
lbl_800A1EF4:
|
|
/* 09C954 800A1EF4 2C000005 */ cmpwi r0, 5
|
|
/* 09C958 800A1EF8 408000D8 */ bge lbl_800A1FD0
|
|
/* 09C95C 800A1EFC 48000020 */ b lbl_800A1F1C
|
|
lbl_800A1F00:
|
|
/* 09C960 800A1F00 38000001 */ li r0, 1
|
|
/* 09C964 800A1F04 900D8B8C */ stw r0, RunQueueHint@sda21(r13)
|
|
/* 09C968 800A1F08 B01D02C8 */ sth r0, 0x2c8(r29)
|
|
/* 09C96C 800A1F0C 480000C4 */ b lbl_800A1FD0
|
|
lbl_800A1F10:
|
|
/* 09C970 800A1F10 7FA3EB78 */ mr r3, r29
|
|
/* 09C974 800A1F14 4BFFF3BD */ bl UnsetRun
|
|
/* 09C978 800A1F18 480000B8 */ b lbl_800A1FD0
|
|
lbl_800A1F1C:
|
|
/* 09C97C 800A1F1C 809D02E0 */ lwz r4, 0x2e0(r29)
|
|
/* 09C980 800A1F20 80BD02E4 */ lwz r5, 0x2e4(r29)
|
|
/* 09C984 800A1F24 28040000 */ cmplwi r4, 0
|
|
/* 09C988 800A1F28 40820010 */ bne lbl_800A1F38
|
|
/* 09C98C 800A1F2C 807D02DC */ lwz r3, 0x2dc(r29)
|
|
/* 09C990 800A1F30 90A30004 */ stw r5, 4(r3)
|
|
/* 09C994 800A1F34 48000008 */ b lbl_800A1F3C
|
|
lbl_800A1F38:
|
|
/* 09C998 800A1F38 90A402E4 */ stw r5, 0x2e4(r4)
|
|
lbl_800A1F3C:
|
|
/* 09C99C 800A1F3C 28050000 */ cmplwi r5, 0
|
|
/* 09C9A0 800A1F40 40820010 */ bne lbl_800A1F50
|
|
/* 09C9A4 800A1F44 807D02DC */ lwz r3, 0x2dc(r29)
|
|
/* 09C9A8 800A1F48 90830000 */ stw r4, 0(r3)
|
|
/* 09C9AC 800A1F4C 48000008 */ b lbl_800A1F54
|
|
lbl_800A1F50:
|
|
/* 09C9B0 800A1F50 908502E0 */ stw r4, 0x2e0(r5)
|
|
lbl_800A1F54:
|
|
/* 09C9B4 800A1F54 38000020 */ li r0, 0x20
|
|
/* 09C9B8 800A1F58 901D02D0 */ stw r0, 0x2d0(r29)
|
|
/* 09C9BC 800A1F5C 809D02DC */ lwz r4, 0x2dc(r29)
|
|
/* 09C9C0 800A1F60 80640004 */ lwz r3, 4(r4)
|
|
/* 09C9C4 800A1F64 28030000 */ cmplwi r3, 0
|
|
/* 09C9C8 800A1F68 4082000C */ bne lbl_800A1F74
|
|
/* 09C9CC 800A1F6C 93A40000 */ stw r29, 0(r4)
|
|
/* 09C9D0 800A1F70 48000008 */ b lbl_800A1F78
|
|
lbl_800A1F74:
|
|
/* 09C9D4 800A1F74 93A302E0 */ stw r29, 0x2e0(r3)
|
|
lbl_800A1F78:
|
|
/* 09C9D8 800A1F78 907D02E4 */ stw r3, 0x2e4(r29)
|
|
/* 09C9DC 800A1F7C 38000000 */ li r0, 0
|
|
/* 09C9E0 800A1F80 901D02E0 */ stw r0, 0x2e0(r29)
|
|
/* 09C9E4 800A1F84 807D02DC */ lwz r3, 0x2dc(r29)
|
|
/* 09C9E8 800A1F88 93A30004 */ stw r29, 4(r3)
|
|
/* 09C9EC 800A1F8C 807D02F0 */ lwz r3, 0x2f0(r29)
|
|
/* 09C9F0 800A1F90 28030000 */ cmplwi r3, 0
|
|
/* 09C9F4 800A1F94 4182003C */ beq lbl_800A1FD0
|
|
/* 09C9F8 800A1F98 83A30008 */ lwz r29, 8(r3)
|
|
lbl_800A1F9C:
|
|
/* 09C9FC 800A1F9C 801D02CC */ lwz r0, 0x2cc(r29)
|
|
/* 09CA00 800A1FA0 2C000000 */ cmpwi r0, 0
|
|
/* 09CA04 800A1FA4 4181002C */ bgt lbl_800A1FD0
|
|
/* 09CA08 800A1FA8 7FA3EB78 */ mr r3, r29
|
|
/* 09CA0C 800A1FAC 4BFFF38D */ bl __OSGetEffectivePriority
|
|
/* 09CA10 800A1FB0 801D02D0 */ lwz r0, 0x2d0(r29)
|
|
/* 09CA14 800A1FB4 38830000 */ addi r4, r3, 0
|
|
/* 09CA18 800A1FB8 7C002000 */ cmpw r0, r4
|
|
/* 09CA1C 800A1FBC 41820014 */ beq lbl_800A1FD0
|
|
/* 09CA20 800A1FC0 7FA3EB78 */ mr r3, r29
|
|
/* 09CA24 800A1FC4 4BFFF3B1 */ bl SetEffectivePriority
|
|
/* 09CA28 800A1FC8 7C7D1B79 */ or. r29, r3, r3
|
|
/* 09CA2C 800A1FCC 4082FFD0 */ bne lbl_800A1F9C
|
|
lbl_800A1FD0:
|
|
/* 09CA30 800A1FD0 800D8B8C */ lwz r0, RunQueueHint@sda21(r13)
|
|
/* 09CA34 800A1FD4 2C000000 */ cmpwi r0, 0
|
|
/* 09CA38 800A1FD8 4182000C */ beq lbl_800A1FE4
|
|
/* 09CA3C 800A1FDC 38600000 */ li r3, 0
|
|
/* 09CA40 800A1FE0 4BFFF555 */ bl SelectThread
|
|
lbl_800A1FE4:
|
|
/* 09CA44 800A1FE4 7FE3FB78 */ mr r3, r31
|
|
/* 09CA48 800A1FE8 4BFFCD3D */ bl OSRestoreInterrupts
|
|
/* 09CA4C 800A1FEC 7FC3F378 */ mr r3, r30
|
|
/* 09CA50 800A1FF0 80010024 */ lwz r0, 0x24(r1)
|
|
/* 09CA54 800A1FF4 83E1001C */ lwz r31, 0x1c(r1)
|
|
/* 09CA58 800A1FF8 83C10018 */ lwz r30, 0x18(r1)
|
|
/* 09CA5C 800A1FFC 83A10014 */ lwz r29, 0x14(r1)
|
|
/* 09CA60 800A2000 38210020 */ addi r1, r1, 0x20
|
|
/* 09CA64 800A2004 7C0803A6 */ mtlr r0
|
|
/* 09CA68 800A2008 4E800020 */ blr
|
|
|
|
glabel OSSleepThread
|
|
/* 09CA6C 800A200C 7C0802A6 */ mflr r0
|
|
/* 09CA70 800A2010 90010004 */ stw r0, 4(r1)
|
|
/* 09CA74 800A2014 9421FFE8 */ stwu r1, -0x18(r1)
|
|
/* 09CA78 800A2018 93E10014 */ stw r31, 0x14(r1)
|
|
/* 09CA7C 800A201C 93C10010 */ stw r30, 0x10(r1)
|
|
/* 09CA80 800A2020 7C7E1B78 */ mr r30, r3
|
|
/* 09CA84 800A2024 4BFFCCD9 */ bl OSDisableInterrupts
|
|
/* 09CA88 800A2028 3C808000 */ lis r4, 0x8000
|
|
/* 09CA8C 800A202C 808400E4 */ lwz r4, 0xe4(r4)
|
|
/* 09CA90 800A2030 38000004 */ li r0, 4
|
|
/* 09CA94 800A2034 7C7F1B78 */ mr r31, r3
|
|
/* 09CA98 800A2038 B00402C8 */ sth r0, 0x2c8(r4)
|
|
/* 09CA9C 800A203C 93C402DC */ stw r30, 0x2dc(r4)
|
|
/* 09CAA0 800A2040 80BE0000 */ lwz r5, 0(r30)
|
|
/* 09CAA4 800A2044 48000008 */ b lbl_800A204C
|
|
lbl_800A2048:
|
|
/* 09CAA8 800A2048 80A502E0 */ lwz r5, 0x2e0(r5)
|
|
lbl_800A204C:
|
|
/* 09CAAC 800A204C 28050000 */ cmplwi r5, 0
|
|
/* 09CAB0 800A2050 41820014 */ beq lbl_800A2064
|
|
/* 09CAB4 800A2054 806502D0 */ lwz r3, 0x2d0(r5)
|
|
/* 09CAB8 800A2058 800402D0 */ lwz r0, 0x2d0(r4)
|
|
/* 09CABC 800A205C 7C030000 */ cmpw r3, r0
|
|
/* 09CAC0 800A2060 4081FFE8 */ ble lbl_800A2048
|
|
lbl_800A2064:
|
|
/* 09CAC4 800A2064 28050000 */ cmplwi r5, 0
|
|
/* 09CAC8 800A2068 40820030 */ bne lbl_800A2098
|
|
/* 09CACC 800A206C 807E0004 */ lwz r3, 4(r30)
|
|
/* 09CAD0 800A2070 28030000 */ cmplwi r3, 0
|
|
/* 09CAD4 800A2074 4082000C */ bne lbl_800A2080
|
|
/* 09CAD8 800A2078 909E0000 */ stw r4, 0(r30)
|
|
/* 09CADC 800A207C 48000008 */ b lbl_800A2084
|
|
lbl_800A2080:
|
|
/* 09CAE0 800A2080 908302E0 */ stw r4, 0x2e0(r3)
|
|
lbl_800A2084:
|
|
/* 09CAE4 800A2084 906402E4 */ stw r3, 0x2e4(r4)
|
|
/* 09CAE8 800A2088 38000000 */ li r0, 0
|
|
/* 09CAEC 800A208C 900402E0 */ stw r0, 0x2e0(r4)
|
|
/* 09CAF0 800A2090 909E0004 */ stw r4, 4(r30)
|
|
/* 09CAF4 800A2094 48000028 */ b lbl_800A20BC
|
|
lbl_800A2098:
|
|
/* 09CAF8 800A2098 90A402E0 */ stw r5, 0x2e0(r4)
|
|
/* 09CAFC 800A209C 806502E4 */ lwz r3, 0x2e4(r5)
|
|
/* 09CB00 800A20A0 908502E4 */ stw r4, 0x2e4(r5)
|
|
/* 09CB04 800A20A4 28030000 */ cmplwi r3, 0
|
|
/* 09CB08 800A20A8 906402E4 */ stw r3, 0x2e4(r4)
|
|
/* 09CB0C 800A20AC 4082000C */ bne lbl_800A20B8
|
|
/* 09CB10 800A20B0 909E0000 */ stw r4, 0(r30)
|
|
/* 09CB14 800A20B4 48000008 */ b lbl_800A20BC
|
|
lbl_800A20B8:
|
|
/* 09CB18 800A20B8 908302E0 */ stw r4, 0x2e0(r3)
|
|
lbl_800A20BC:
|
|
/* 09CB1C 800A20BC 38000001 */ li r0, 1
|
|
/* 09CB20 800A20C0 900D8B8C */ stw r0, RunQueueHint@sda21(r13)
|
|
/* 09CB24 800A20C4 800D8B8C */ lwz r0, RunQueueHint@sda21(r13)
|
|
/* 09CB28 800A20C8 2C000000 */ cmpwi r0, 0
|
|
/* 09CB2C 800A20CC 4182000C */ beq lbl_800A20D8
|
|
/* 09CB30 800A20D0 38600000 */ li r3, 0
|
|
/* 09CB34 800A20D4 4BFFF461 */ bl SelectThread
|
|
lbl_800A20D8:
|
|
/* 09CB38 800A20D8 7FE3FB78 */ mr r3, r31
|
|
/* 09CB3C 800A20DC 4BFFCC49 */ bl OSRestoreInterrupts
|
|
/* 09CB40 800A20E0 8001001C */ lwz r0, 0x1c(r1)
|
|
/* 09CB44 800A20E4 83E10014 */ lwz r31, 0x14(r1)
|
|
/* 09CB48 800A20E8 83C10010 */ lwz r30, 0x10(r1)
|
|
/* 09CB4C 800A20EC 38210018 */ addi r1, r1, 0x18
|
|
/* 09CB50 800A20F0 7C0803A6 */ mtlr r0
|
|
/* 09CB54 800A20F4 4E800020 */ blr
|
|
|
|
glabel OSWakeupThread
|
|
/* 09CB58 800A20F8 7C0802A6 */ mflr r0
|
|
/* 09CB5C 800A20FC 90010004 */ stw r0, 4(r1)
|
|
/* 09CB60 800A2100 9421FFE8 */ stwu r1, -0x18(r1)
|
|
/* 09CB64 800A2104 93E10014 */ stw r31, 0x14(r1)
|
|
/* 09CB68 800A2108 93C10010 */ stw r30, 0x10(r1)
|
|
/* 09CB6C 800A210C 7C7E1B78 */ mr r30, r3
|
|
/* 09CB70 800A2110 4BFFCBED */ bl OSDisableInterrupts
|
|
/* 09CB74 800A2114 3C808013 */ lis r4, RunQueue@ha
|
|
/* 09CB78 800A2118 3BE30000 */ addi r31, r3, 0
|
|
/* 09CB7C 800A211C 38A41038 */ addi r5, r4, RunQueue@l
|
|
/* 09CB80 800A2120 4800009C */ b lbl_800A21BC
|
|
lbl_800A2124:
|
|
/* 09CB84 800A2124 806602E0 */ lwz r3, 0x2e0(r6)
|
|
/* 09CB88 800A2128 28030000 */ cmplwi r3, 0
|
|
/* 09CB8C 800A212C 40820010 */ bne lbl_800A213C
|
|
/* 09CB90 800A2130 38000000 */ li r0, 0
|
|
/* 09CB94 800A2134 901E0004 */ stw r0, 4(r30)
|
|
/* 09CB98 800A2138 4800000C */ b lbl_800A2144
|
|
lbl_800A213C:
|
|
/* 09CB9C 800A213C 38000000 */ li r0, 0
|
|
/* 09CBA0 800A2140 900302E4 */ stw r0, 0x2e4(r3)
|
|
lbl_800A2144:
|
|
/* 09CBA4 800A2144 907E0000 */ stw r3, 0(r30)
|
|
/* 09CBA8 800A2148 38000001 */ li r0, 1
|
|
/* 09CBAC 800A214C B00602C8 */ sth r0, 0x2c8(r6)
|
|
/* 09CBB0 800A2150 800602CC */ lwz r0, 0x2cc(r6)
|
|
/* 09CBB4 800A2154 2C000000 */ cmpwi r0, 0
|
|
/* 09CBB8 800A2158 41810064 */ bgt lbl_800A21BC
|
|
/* 09CBBC 800A215C 800602D0 */ lwz r0, 0x2d0(r6)
|
|
/* 09CBC0 800A2160 54001838 */ slwi r0, r0, 3
|
|
/* 09CBC4 800A2164 7C050214 */ add r0, r5, r0
|
|
/* 09CBC8 800A2168 900602DC */ stw r0, 0x2dc(r6)
|
|
/* 09CBCC 800A216C 808602DC */ lwz r4, 0x2dc(r6)
|
|
/* 09CBD0 800A2170 80640004 */ lwz r3, 4(r4)
|
|
/* 09CBD4 800A2174 28030000 */ cmplwi r3, 0
|
|
/* 09CBD8 800A2178 4082000C */ bne lbl_800A2184
|
|
/* 09CBDC 800A217C 90C40000 */ stw r6, 0(r4)
|
|
/* 09CBE0 800A2180 48000008 */ b lbl_800A2188
|
|
lbl_800A2184:
|
|
/* 09CBE4 800A2184 90C302E0 */ stw r6, 0x2e0(r3)
|
|
lbl_800A2188:
|
|
/* 09CBE8 800A2188 906602E4 */ stw r3, 0x2e4(r6)
|
|
/* 09CBEC 800A218C 38000000 */ li r0, 0
|
|
/* 09CBF0 800A2190 38600001 */ li r3, 1
|
|
/* 09CBF4 800A2194 900602E0 */ stw r0, 0x2e0(r6)
|
|
/* 09CBF8 800A2198 808602DC */ lwz r4, 0x2dc(r6)
|
|
/* 09CBFC 800A219C 90C40004 */ stw r6, 4(r4)
|
|
/* 09CC00 800A21A0 800602D0 */ lwz r0, 0x2d0(r6)
|
|
/* 09CC04 800A21A4 808D8B88 */ lwz r4, RunQueueBits@sda21(r13)
|
|
/* 09CC08 800A21A8 2000001F */ subfic r0, r0, 0x1f
|
|
/* 09CC0C 800A21AC 7C600030 */ slw r0, r3, r0
|
|
/* 09CC10 800A21B0 7C800378 */ or r0, r4, r0
|
|
/* 09CC14 800A21B4 900D8B88 */ stw r0, RunQueueBits@sda21(r13)
|
|
/* 09CC18 800A21B8 906D8B8C */ stw r3, RunQueueHint@sda21(r13)
|
|
lbl_800A21BC:
|
|
/* 09CC1C 800A21BC 80DE0000 */ lwz r6, 0(r30)
|
|
/* 09CC20 800A21C0 28060000 */ cmplwi r6, 0
|
|
/* 09CC24 800A21C4 4082FF60 */ bne lbl_800A2124
|
|
/* 09CC28 800A21C8 800D8B8C */ lwz r0, RunQueueHint@sda21(r13)
|
|
/* 09CC2C 800A21CC 2C000000 */ cmpwi r0, 0
|
|
/* 09CC30 800A21D0 4182000C */ beq lbl_800A21DC
|
|
/* 09CC34 800A21D4 38600000 */ li r3, 0
|
|
/* 09CC38 800A21D8 4BFFF35D */ bl SelectThread
|
|
lbl_800A21DC:
|
|
/* 09CC3C 800A21DC 7FE3FB78 */ mr r3, r31
|
|
/* 09CC40 800A21E0 4BFFCB45 */ bl OSRestoreInterrupts
|
|
/* 09CC44 800A21E4 8001001C */ lwz r0, 0x1c(r1)
|
|
/* 09CC48 800A21E8 83E10014 */ lwz r31, 0x14(r1)
|
|
/* 09CC4C 800A21EC 83C10010 */ lwz r30, 0x10(r1)
|
|
/* 09CC50 800A21F0 38210018 */ addi r1, r1, 0x18
|
|
/* 09CC54 800A21F4 7C0803A6 */ mtlr r0
|
|
/* 09CC58 800A21F8 4E800020 */ blr
|
|
|
|
glabel OSClearStack
|
|
/* 09CC5C 800A21FC 7C0802A6 */ mflr r0
|
|
/* 09CC60 800A2200 90010004 */ stw r0, 4(r1)
|
|
/* 09CC64 800A2204 5460821E */ rlwinm r0, r3, 0x10, 8, 0xf
|
|
/* 09CC68 800A2208 5060C00E */ rlwimi r0, r3, 0x18, 0, 7
|
|
/* 09CC6C 800A220C 9421FFE8 */ stwu r1, -0x18(r1)
|
|
/* 09CC70 800A2210 5060442E */ rlwimi r0, r3, 8, 0x10, 0x17
|
|
/* 09CC74 800A2214 93E10014 */ stw r31, 0x14(r1)
|
|
/* 09CC78 800A2218 7C1F0378 */ mr r31, r0
|
|
/* 09CC7C 800A221C 507F063E */ rlwimi r31, r3, 0, 0x18, 0x1f
|
|
/* 09CC80 800A2220 4BFFBF7D */ bl OSGetStackPointer
|
|
/* 09CC84 800A2224 3C808000 */ lis r4, 0x8000
|
|
/* 09CC88 800A2228 80A400E4 */ lwz r5, 0xe4(r4)
|
|
/* 09CC8C 800A222C 38830003 */ addi r4, r3, 3
|
|
/* 09CC90 800A2230 80A50308 */ lwz r5, 0x308(r5)
|
|
/* 09CC94 800A2234 38A50004 */ addi r5, r5, 4
|
|
/* 09CC98 800A2238 7C051840 */ cmplw r5, r3
|
|
/* 09CC9C 800A223C 7C852050 */ subf r4, r5, r4
|
|
/* 09CCA0 800A2240 5484F0BE */ srwi r4, r4, 2
|
|
/* 09CCA4 800A2244 40800050 */ bge lbl_800A2294
|
|
/* 09CCA8 800A2248 5480E8FF */ rlwinm. r0, r4, 0x1d, 3, 0x1f
|
|
/* 09CCAC 800A224C 7C0903A6 */ mtctr r0
|
|
/* 09CCB0 800A2250 41820034 */ beq lbl_800A2284
|
|
lbl_800A2254:
|
|
/* 09CCB4 800A2254 93E50000 */ stw r31, 0(r5)
|
|
/* 09CCB8 800A2258 93E50004 */ stw r31, 4(r5)
|
|
/* 09CCBC 800A225C 93E50008 */ stw r31, 8(r5)
|
|
/* 09CCC0 800A2260 93E5000C */ stw r31, 0xc(r5)
|
|
/* 09CCC4 800A2264 93E50010 */ stw r31, 0x10(r5)
|
|
/* 09CCC8 800A2268 93E50014 */ stw r31, 0x14(r5)
|
|
/* 09CCCC 800A226C 93E50018 */ stw r31, 0x18(r5)
|
|
/* 09CCD0 800A2270 93E5001C */ stw r31, 0x1c(r5)
|
|
/* 09CCD4 800A2274 38A50020 */ addi r5, r5, 0x20
|
|
/* 09CCD8 800A2278 4200FFDC */ bdnz lbl_800A2254
|
|
/* 09CCDC 800A227C 70840007 */ andi. r4, r4, 7
|
|
/* 09CCE0 800A2280 41820014 */ beq lbl_800A2294
|
|
lbl_800A2284:
|
|
/* 09CCE4 800A2284 7C8903A6 */ mtctr r4
|
|
lbl_800A2288:
|
|
/* 09CCE8 800A2288 93E50000 */ stw r31, 0(r5)
|
|
/* 09CCEC 800A228C 38A50004 */ addi r5, r5, 4
|
|
/* 09CCF0 800A2290 4200FFF8 */ bdnz lbl_800A2288
|
|
lbl_800A2294:
|
|
/* 09CCF4 800A2294 8001001C */ lwz r0, 0x1c(r1)
|
|
/* 09CCF8 800A2298 83E10014 */ lwz r31, 0x14(r1)
|
|
/* 09CCFC 800A229C 38210018 */ addi r1, r1, 0x18
|
|
/* 09CD00 800A22A0 7C0803A6 */ mtlr r0
|
|
/* 09CD04 800A22A4 4E800020 */ blr
|
|
|
|
.section .bss, "wa"
|
|
|
|
.balign 8
|
|
|
|
/* 0012E0B8 80131038 0100 */
|
|
RunQueue:
|
|
.skip 0x100
|
|
|
|
/* 0012E1B8 80131138 0318 */
|
|
IdleThread:
|
|
.skip 0x318
|
|
|
|
/* 0012E4D0 80131450 0318 */
|
|
DefaultThread:
|
|
.skip 0x318
|
|
|
|
/* 0012E7E8 80131768 02C8 */
|
|
IdleContext:
|
|
.skip 0x2C8
|
|
|
|
.section .sdata, "wa"
|
|
|
|
.balign 8
|
|
|
|
/* 000F16C0 80135440 0004 */
|
|
SwitchThreadCallback:
|
|
.long DefaultSwitchThreadCallback
|
|
|
|
.section .sbss, "wa"
|
|
|
|
.balign 8
|
|
|
|
/* 000F1AE8 80135868 0004 */
|
|
RunQueueBits:
|
|
.skip 4
|
|
|
|
/* 000F1AEC 8013586C 0004 */
|
|
RunQueueHint:
|
|
.skip 4
|
|
|
|
/* 000F1AF0 80135870 0004 */
|
|
Reschedule:
|
|
.skip 4
|