Decompile osCreatePiManager
This commit is contained in:
parent
7cd45e622c
commit
47a858c8d9
|
|
@ -97,5 +97,9 @@ void osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf,
|
|||
OSMesgQueue *osPiGetCmdQueue(void);
|
||||
s32 osPiWriteIo(u32 devAddr, u32 data);
|
||||
s32 osPiReadIo(u32 devAddr, u32 *data);
|
||||
s32 osPiRawStartDma(s32 direction, u32 devAddr, void *dramAddr, u32 size);
|
||||
s32 osEPiRawStartDma(OSPiHandle *pihandle, s32 direction, u32 devAddr, void *dramAddr, u32 size);
|
||||
void __osDevMgrMain(void *args);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -19,8 +19,8 @@ extern u32 var8008de0c;
|
|||
extern u32 var8008de10;
|
||||
extern u8 g_BootBufferDirtyIndexes[3];
|
||||
extern s32 g_BootBufferIndex0;
|
||||
extern u32 var800902a0;
|
||||
extern u32 var80090318;
|
||||
extern OSPiHandle CartRomHandle;
|
||||
extern OSPiHandle LeoDiskHandle;
|
||||
extern u32 __osPfsPifRam;
|
||||
extern u32 var80090ab0;
|
||||
extern u32 var80090ad0;
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ extern s8 var8005ced0;
|
|||
extern u32 __osViDevMgr;
|
||||
extern u32 var8005cefc;
|
||||
extern OSDevMgr __osPiDevMgr;
|
||||
extern u32 __osCurrentHandle;
|
||||
extern OSPiHandle *__osCurrentHandle[2];
|
||||
extern u32 var8005cf30;
|
||||
extern OSTime osClockRate;
|
||||
extern s32 osViClock;
|
||||
|
|
|
|||
|
|
@ -10,5 +10,5 @@ OSMesgQueue var80099a00;
|
|||
|
||||
void func00013710(void)
|
||||
{
|
||||
osCreatePiPanager(150, &var80099a00, var80099900, 64);
|
||||
osCreatePiManager(150, &var80099a00, var80099900, 64);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,248 +3,55 @@
|
|||
#include "data.h"
|
||||
|
||||
OSThread piThread;
|
||||
u32 var800905c0;
|
||||
u32 var800905c4;
|
||||
u32 var800905c8;
|
||||
u32 var800905cc;
|
||||
u32 var800905d0;
|
||||
u32 var800905d4;
|
||||
u32 var800905d8;
|
||||
u32 var800905dc;
|
||||
u32 var800905e0;
|
||||
u32 var800905e4;
|
||||
u32 var800905e8;
|
||||
u32 var800905ec;
|
||||
u32 var800905f0;
|
||||
u32 var800905f4;
|
||||
u32 var800905f8;
|
||||
u32 var800905fc;
|
||||
u32 var80090600;
|
||||
u32 var80090604;
|
||||
u32 var80090608;
|
||||
u32 var8009060c;
|
||||
u32 var80090610;
|
||||
u32 var80090614;
|
||||
u32 var80090618;
|
||||
u32 var8009061c;
|
||||
u32 var80090620;
|
||||
u32 var80090624;
|
||||
u32 var80090628;
|
||||
u32 var8009062c;
|
||||
u32 var80090630;
|
||||
u32 var80090634;
|
||||
u32 var80090638;
|
||||
u32 var8009063c;
|
||||
u32 var80090640;
|
||||
u32 var80090644;
|
||||
u32 var80090648;
|
||||
u32 var8009064c;
|
||||
u32 var80090650;
|
||||
u32 var80090654;
|
||||
u32 var80090658;
|
||||
u32 var8009065c;
|
||||
u32 var80090660;
|
||||
u32 var80090664;
|
||||
u32 var80090668;
|
||||
u32 var8009066c;
|
||||
u32 var80090670;
|
||||
u32 var80090674;
|
||||
u32 var80090678;
|
||||
u32 var8009067c;
|
||||
u32 var80090680;
|
||||
u32 var80090684;
|
||||
u32 var80090688;
|
||||
u32 var8009068c;
|
||||
u32 var80090690;
|
||||
u32 var80090694;
|
||||
u32 var80090698;
|
||||
u32 var8009069c;
|
||||
u32 var800906a0;
|
||||
u32 var800906a4;
|
||||
u32 var800906a8;
|
||||
u32 var800906ac;
|
||||
u32 var800906b0;
|
||||
u32 var800906b4;
|
||||
u32 var800906b8;
|
||||
u32 var800906bc;
|
||||
u32 var800906c0;
|
||||
u32 var800906c4;
|
||||
u32 var800906c8;
|
||||
u32 var800906cc;
|
||||
u32 var800906d0;
|
||||
u32 var800906d4;
|
||||
u32 var800906d8;
|
||||
u32 var800906dc;
|
||||
u32 var800906e0;
|
||||
u32 var800906e4;
|
||||
u32 var800906e8;
|
||||
u32 var800906ec;
|
||||
u32 var800906f0;
|
||||
u32 var800906f4;
|
||||
u32 var800906f8;
|
||||
u32 var800906fc;
|
||||
u32 var80090700;
|
||||
u32 var80090704;
|
||||
u32 var80090708;
|
||||
u32 var8009070c;
|
||||
u32 var80090710;
|
||||
u32 var80090714;
|
||||
u32 var80090718;
|
||||
u32 var8009071c;
|
||||
u32 var80090720;
|
||||
u32 var80090724;
|
||||
u32 var80090728;
|
||||
u32 var8009072c;
|
||||
u32 var80090730;
|
||||
u32 var80090734;
|
||||
u32 var80090738;
|
||||
u32 var8009073c;
|
||||
u32 var80090740;
|
||||
u32 var80090744;
|
||||
u32 var80090748;
|
||||
u32 var8009074c;
|
||||
u32 var80090750;
|
||||
u32 var80090754;
|
||||
u32 var80090758;
|
||||
u32 var8009075c;
|
||||
u32 var80090760;
|
||||
u32 var80090764;
|
||||
u32 var80090768;
|
||||
u32 var8009076c;
|
||||
u32 var80090770;
|
||||
u32 var80090774;
|
||||
u32 var80090778;
|
||||
u32 var8009077c;
|
||||
u32 var80090780;
|
||||
u32 var80090784;
|
||||
u32 var80090788;
|
||||
u32 var8009078c;
|
||||
u32 var80090790;
|
||||
u32 var80090794;
|
||||
u32 var80090798;
|
||||
u32 var8009079c;
|
||||
u32 var800907a0;
|
||||
u32 var800907a4;
|
||||
u32 var800907a8;
|
||||
u32 var800907ac;
|
||||
u32 var800907b0;
|
||||
u32 var800907b4;
|
||||
u32 var800907b8;
|
||||
u32 var800907bc;
|
||||
u32 piEventQueue;
|
||||
u32 var800907c4;
|
||||
u32 var800907c8;
|
||||
u32 var800907cc;
|
||||
u32 var800907d0;
|
||||
u32 var800907d4;
|
||||
u32 piEventBuf;
|
||||
u32 var800907dc;
|
||||
u32 var800907e0;
|
||||
u32 var800907e4;
|
||||
u32 var800907e8;
|
||||
u32 var800907ec;
|
||||
char piThreadStack[512];
|
||||
OSMesgQueue piEventQueue;
|
||||
OSMesg piEventBuf[4];
|
||||
|
||||
OSDevMgr __osPiDevMgr = {0};
|
||||
u32 var8005cf1c = 0;
|
||||
u32 __osCurrentHandle = (u32) &var800902a0;
|
||||
u32 var8005cf24 = (u32) &var80090318;
|
||||
OSPiHandle *__osPiTable = NULL;
|
||||
OSPiHandle *__osCurrentHandle[2] = { &CartRomHandle, &LeoDiskHandle };
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel osCreatePiPanager
|
||||
/* 3360: 27bdffd0 */ addiu $sp,$sp,-48
|
||||
/* 3364: afb00020 */ sw $s0,0x20($sp)
|
||||
/* 3368: 3c108006 */ lui $s0,%hi(__osPiDevMgr)
|
||||
/* 336c: 2610cf00 */ addiu $s0,$s0,%lo(__osPiDevMgr)
|
||||
/* 3370: 8e0e0000 */ lw $t6,0x0($s0)
|
||||
/* 3374: afbf0024 */ sw $ra,0x24($sp)
|
||||
/* 3378: afa40030 */ sw $a0,0x30($sp)
|
||||
/* 337c: afa50034 */ sw $a1,0x34($sp)
|
||||
/* 3380: 15c0004e */ bnez $t6,.L000034bc
|
||||
/* 3384: afa60038 */ sw $a2,0x38($sp)
|
||||
/* 3388: 00a02025 */ or $a0,$a1,$zero
|
||||
/* 338c: 00c02825 */ or $a1,$a2,$zero
|
||||
/* 3390: 0c0120d0 */ jal osCreateMesgQueue
|
||||
/* 3394: 00e03025 */ or $a2,$a3,$zero
|
||||
/* 3398: 3c048009 */ lui $a0,%hi(piEventQueue)
|
||||
/* 339c: 3c058009 */ lui $a1,%hi(piEventBuf)
|
||||
/* 33a0: 24a507d8 */ addiu $a1,$a1,%lo(piEventBuf)
|
||||
/* 33a4: 248407c0 */ addiu $a0,$a0,%lo(piEventQueue)
|
||||
/* 33a8: 0c0120d0 */ jal osCreateMesgQueue
|
||||
/* 33ac: 24060004 */ addiu $a2,$zero,0x4
|
||||
/* 33b0: 3c0f8006 */ lui $t7,%hi(__osPiAccessQueueEnabled)
|
||||
/* 33b4: 8def0920 */ lw $t7,%lo(__osPiAccessQueueEnabled)($t7)
|
||||
/* 33b8: 15e00003 */ bnez $t7,.L000033c8
|
||||
/* 33bc: 00000000 */ nop
|
||||
/* 33c0: 0c0126a4 */ jal __osPiCreateAccessQueue
|
||||
/* 33c4: 00000000 */ nop
|
||||
.L000033c8:
|
||||
/* 33c8: 3c058009 */ lui $a1,%hi(piEventQueue)
|
||||
/* 33cc: 3c062222 */ lui $a2,0x2222
|
||||
/* 33d0: 34c62222 */ ori $a2,$a2,0x2222
|
||||
/* 33d4: 24a507c0 */ addiu $a1,$a1,%lo(piEventQueue)
|
||||
/* 33d8: 0c012148 */ jal osSetEventMesg
|
||||
/* 33dc: 24040008 */ addiu $a0,$zero,0x8
|
||||
/* 33e0: 2418ffff */ addiu $t8,$zero,-1
|
||||
/* 33e4: afb80028 */ sw $t8,0x28($sp)
|
||||
/* 33e8: 0c012230 */ jal osGetThreadPri
|
||||
/* 33ec: 00002025 */ or $a0,$zero,$zero
|
||||
/* 33f0: 8fb90030 */ lw $t9,0x30($sp)
|
||||
/* 33f4: 00002025 */ or $a0,$zero,$zero
|
||||
/* 33f8: 0059082a */ slt $at,$v0,$t9
|
||||
/* 33fc: 10200003 */ beqz $at,.L0000340c
|
||||
/* 3400: 03202825 */ or $a1,$t9,$zero
|
||||
/* 3404: 0c01210c */ jal osSetThreadPri
|
||||
/* 3408: afa20028 */ sw $v0,0x28($sp)
|
||||
.L0000340c:
|
||||
/* 340c: 0c01256c */ jal __osDisableInt
|
||||
/* 3410: 00000000 */ nop
|
||||
/* 3414: 8fa90034 */ lw $t1,0x34($sp)
|
||||
/* 3418: 8faf0030 */ lw $t7,0x30($sp)
|
||||
/* 341c: 3c048009 */ lui $a0,%hi(piThread)
|
||||
/* 3420: 3c0a8009 */ lui $t2,%hi(piEventQueue)
|
||||
/* 3424: 3c0b800a */ lui $t3,%hi(__osPiAccessQueue)
|
||||
/* 3428: 3c0c7005 */ lui $t4,%hi(osPiRawStartDma)
|
||||
/* 342c: 3c0d7005 */ lui $t5,%hi(osEPiRawStartDma)
|
||||
/* 3430: 3c0e8009 */ lui $t6,%hi(piEventQueue)
|
||||
/* 3434: 24840390 */ addiu $a0,$a0,%lo(piThread)
|
||||
/* 3438: 24080001 */ addiu $t0,$zero,0x1
|
||||
/* 343c: 254a07c0 */ addiu $t2,$t2,%lo(piEventQueue)
|
||||
/* 3440: 256bc7a8 */ addiu $t3,$t3,%lo(__osPiAccessQueue)
|
||||
/* 3444: 258c9b50 */ addiu $t4,$t4,%lo(osPiRawStartDma)
|
||||
/* 3448: 25ad9c20 */ addiu $t5,$t5,%lo(osEPiRawStartDma)
|
||||
/* 344c: 25ce07c0 */ addiu $t6,$t6,%lo(piEventQueue)
|
||||
/* 3450: 3c067005 */ lui $a2,%hi(__osDevMgrMain)
|
||||
/* 3454: afa2002c */ sw $v0,0x2c($sp)
|
||||
/* 3458: ae080000 */ sw $t0,0x0($s0)
|
||||
/* 345c: ae040004 */ sw $a0,0x4($s0)
|
||||
/* 3460: ae0a000c */ sw $t2,0xc($s0)
|
||||
/* 3464: ae0b0010 */ sw $t3,0x10($s0)
|
||||
/* 3468: ae0c0014 */ sw $t4,0x14($s0)
|
||||
/* 346c: ae0d0018 */ sw $t5,0x18($s0)
|
||||
/* 3470: 24c69e00 */ addiu $a2,$a2,%lo(__osDevMgrMain)
|
||||
/* 3474: afae0010 */ sw $t6,0x10($sp)
|
||||
/* 3478: 00002825 */ or $a1,$zero,$zero
|
||||
/* 347c: 02003825 */ or $a3,$s0,$zero
|
||||
/* 3480: ae090008 */ sw $t1,0x8($s0)
|
||||
/* 3484: 0c000fb8 */ jal osCreateThread
|
||||
/* 3488: afaf0014 */ sw $t7,0x14($sp)
|
||||
/* 348c: 3c048009 */ lui $a0,%hi(piThread)
|
||||
/* 3490: 0c01207c */ jal osStartThread
|
||||
/* 3494: 24840390 */ addiu $a0,$a0,%lo(piThread)
|
||||
/* 3498: 0c012588 */ jal __osRestoreInt
|
||||
/* 349c: 8fa4002c */ lw $a0,0x2c($sp)
|
||||
/* 34a0: 8fb80028 */ lw $t8,0x28($sp)
|
||||
/* 34a4: 2401ffff */ addiu $at,$zero,-1
|
||||
/* 34a8: 00002025 */ or $a0,$zero,$zero
|
||||
/* 34ac: 53010004 */ beql $t8,$at,.L000034c0
|
||||
/* 34b0: 8fbf0024 */ lw $ra,0x24($sp)
|
||||
/* 34b4: 0c01210c */ jal osSetThreadPri
|
||||
/* 34b8: 03002825 */ or $a1,$t8,$zero
|
||||
.L000034bc:
|
||||
/* 34bc: 8fbf0024 */ lw $ra,0x24($sp)
|
||||
.L000034c0:
|
||||
/* 34c0: 8fb00020 */ lw $s0,0x20($sp)
|
||||
/* 34c4: 27bd0030 */ addiu $sp,$sp,0x30
|
||||
/* 34c8: 03e00008 */ jr $ra
|
||||
/* 34cc: 00000000 */ nop
|
||||
);
|
||||
void osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf, s32 cmdMsgCnt)
|
||||
{
|
||||
u32 savedMask;
|
||||
OSPri oldPri;
|
||||
OSPri myPri;
|
||||
|
||||
if (!__osPiDevMgr.active) {
|
||||
osCreateMesgQueue(cmdQ, cmdBuf, cmdMsgCnt);
|
||||
osCreateMesgQueue(&piEventQueue, (OSMesg*) &piEventBuf, 4);
|
||||
|
||||
if (!__osPiAccessQueueEnabled) {
|
||||
__osPiCreateAccessQueue();
|
||||
}
|
||||
|
||||
osSetEventMesg(OS_EVENT_PI, &piEventQueue, (OSMesg) 0x22222222);
|
||||
|
||||
oldPri = -1;
|
||||
myPri = osGetThreadPri(NULL);
|
||||
|
||||
if (myPri < pri) {
|
||||
oldPri = myPri;
|
||||
osSetThreadPri(NULL, pri);
|
||||
}
|
||||
|
||||
savedMask = __osDisableInt();
|
||||
|
||||
__osPiDevMgr.active = 1;
|
||||
__osPiDevMgr.thread = &piThread;
|
||||
__osPiDevMgr.cmdQueue = cmdQ;
|
||||
__osPiDevMgr.evtQueue = &piEventQueue;
|
||||
__osPiDevMgr.acsQueue = &__osPiAccessQueue;
|
||||
__osPiDevMgr.dma = osPiRawStartDma;
|
||||
__osPiDevMgr.edma = osEPiRawStartDma;
|
||||
|
||||
osCreateThread(&piThread, 0, __osDevMgrMain, &__osPiDevMgr, &piThreadStack[512], pri);
|
||||
osStartThread(&piThread);
|
||||
|
||||
__osRestoreInt(savedMask);
|
||||
|
||||
if (oldPri != -1) {
|
||||
osSetThreadPri(NULL, oldPri);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -158,66 +158,8 @@ u32 var80090290;
|
|||
u32 var80090294;
|
||||
u32 var80090298;
|
||||
u32 var8009029c;
|
||||
u32 var800902a0;
|
||||
u32 var800902a4;
|
||||
u32 var800902a8;
|
||||
u32 var800902ac;
|
||||
u32 var800902b0;
|
||||
u32 var800902b4;
|
||||
u32 var800902b8;
|
||||
u32 var800902bc;
|
||||
u32 var800902c0;
|
||||
u32 var800902c4;
|
||||
u32 var800902c8;
|
||||
u32 var800902cc;
|
||||
u32 var800902d0;
|
||||
u32 var800902d4;
|
||||
u32 var800902d8;
|
||||
u32 var800902dc;
|
||||
u32 var800902e0;
|
||||
u32 var800902e4;
|
||||
u32 var800902e8;
|
||||
u32 var800902ec;
|
||||
u32 var800902f0;
|
||||
u32 var800902f4;
|
||||
u32 var800902f8;
|
||||
u32 var800902fc;
|
||||
u32 var80090300;
|
||||
u32 var80090304;
|
||||
u32 var80090308;
|
||||
u32 var8009030c;
|
||||
u32 var80090310;
|
||||
u32 var80090314;
|
||||
u32 var80090318;
|
||||
u32 var8009031c;
|
||||
u32 var80090320;
|
||||
u32 var80090324;
|
||||
u32 var80090328;
|
||||
u32 var8009032c;
|
||||
u32 var80090330;
|
||||
u32 var80090334;
|
||||
u32 var80090338;
|
||||
u32 var8009033c;
|
||||
u32 var80090340;
|
||||
u32 var80090344;
|
||||
u32 var80090348;
|
||||
u32 var8009034c;
|
||||
u32 var80090350;
|
||||
u32 var80090354;
|
||||
u32 var80090358;
|
||||
u32 var8009035c;
|
||||
u32 var80090360;
|
||||
u32 var80090364;
|
||||
u32 var80090368;
|
||||
u32 var8009036c;
|
||||
u32 var80090370;
|
||||
u32 var80090374;
|
||||
u32 var80090378;
|
||||
u32 var8009037c;
|
||||
u32 var80090380;
|
||||
u32 var80090384;
|
||||
u32 var80090388;
|
||||
u32 var8009038c;
|
||||
OSPiHandle CartRomHandle;
|
||||
OSPiHandle LeoDiskHandle;
|
||||
|
||||
u32 __osViDevMgr = 0x00000000;
|
||||
u32 var8005cee4 = 0x00000000;
|
||||
|
|
|
|||
|
|
@ -80,8 +80,8 @@ void osInitialize(void)
|
|||
|
||||
GLOBAL_ASM(
|
||||
glabel func00005dc0
|
||||
/* 5dc0: 3c028009 */ lui $v0,%hi(var800902a0)
|
||||
/* 5dc4: 244202a0 */ addiu $v0,$v0,%lo(var800902a0)
|
||||
/* 5dc0: 3c028009 */ lui $v0,%hi(CartRomHandle)
|
||||
/* 5dc4: 244202a0 */ addiu $v0,$v0,%lo(CartRomHandle)
|
||||
/* 5dc8: 24030007 */ addiu $v1,$zero,0x7
|
||||
/* 5dcc: a0430004 */ sb $v1,0x4($v0)
|
||||
/* 5dd0: 3c0ea460 */ lui $t6,0xa460
|
||||
|
|
@ -91,10 +91,10 @@ glabel func00005dc0
|
|||
/* 5de0: a04f0005 */ sb $t7,0x5($v0)
|
||||
/* 5de4: 8f190018 */ lw $t9,0x18($t8)
|
||||
/* 5de8: 3c0aa460 */ lui $t2,0xa460
|
||||
/* 5dec: 3c048009 */ lui $a0,%hi(var80090318)
|
||||
/* 5dec: 3c048009 */ lui $a0,%hi(LeoDiskHandle)
|
||||
/* 5df0: a0590008 */ sb $t9,0x8($v0)
|
||||
/* 5df4: 8d09001c */ lw $t1,0x1c($t0)
|
||||
/* 5df8: 24840318 */ addiu $a0,$a0,%lo(var80090318)
|
||||
/* 5df8: 24840318 */ addiu $a0,$a0,%lo(LeoDiskHandle)
|
||||
/* 5dfc: 3c0ca460 */ lui $t4,0xa460
|
||||
/* 5e00: a0490006 */ sb $t1,0x6($v0)
|
||||
/* 5e04: 8d4b0020 */ lw $t3,0x20($t2)
|
||||
|
|
|
|||
Loading…
Reference in New Issue