Decompile schedCreateThread

This commit is contained in:
Ryan Dwyer
2021-01-26 12:19:31 +10:00
parent 18125af535
commit 83c4db1e54
10 changed files with 66 additions and 133 deletions
+18 -54
View File
@@ -446,65 +446,29 @@ void idleproc(void *data)
void idleCreateThread(void)
{
osCreateThread(&g_IdleThread, THREAD_IDLE, idleproc, NULL, allocateStack(THREAD_IDLE, 64), 0);
osCreateThread(&g_IdleThread, THREAD_IDLE, idleproc, NULL, allocateStack(THREAD_IDLE, STACKSIZE_IDLE), THREADPRI_IDLE);
osStartThread(&g_IdleThread);
}
void rmonCreateThread(void)
{
osCreateThread(&g_RmonThread, 0, rmonproc, NULL, allocateStack(0, 0x300), 250);
osCreateThread(&g_RmonThread, THREAD_RMON, rmonproc, NULL, allocateStack(THREAD_RMON, STACKSIZE_RMON), THREADPRI_RMON);
osStartThread(&g_RmonThread);
}
GLOBAL_ASM(
glabel func000019f4
/* 19f4: 27bdffe8 */ addiu $sp,$sp,-24
/* 19f8: afbf0014 */ sw $ra,0x14($sp)
/* 19fc: 3c048009 */ lui $a0,%hi(var8008db30)
/* 1a00: 3c058009 */ lui $a1,%hi(var8008db48)
/* 1a04: 24a5db48 */ addiu $a1,$a1,%lo(var8008db48)
/* 1a08: 2484db30 */ addiu $a0,$a0,%lo(var8008db30)
/* 1a0c: 0c0120d0 */ jal osCreateMesgQueue
/* 1a10: 24060020 */ addiu $a2,$zero,0x20
/* 1a14: 3c0e8000 */ lui $t6,0x8000
/* 1a18: 8dce0300 */ lw $t6,0x300($t6)
/* 1a1c: 24010002 */ addiu $at,$zero,0x2
/* 1a20: 3c048009 */ lui $a0,%hi(var8008dbd0)
/* 1a24: 15c1000a */ bne $t6,$at,.L00001a50
/* 1a28: 2484dbd0 */ addiu $a0,$a0,%lo(var8008dbd0)
/* 1a2c: 3c048009 */ lui $a0,%hi(var8008dbd0)
/* 1a30: 3c058009 */ lui $a1,%hi(var8008d900)
/* 1a34: 24a5d900 */ addiu $a1,$a1,%lo(var8008d900)
/* 1a38: 2484dbd0 */ addiu $a0,$a0,%lo(var8008dbd0)
/* 1a3c: 2406001e */ addiu $a2,$zero,0x1e
/* 1a40: 0c000713 */ jal osCreateScheduler
/* 1a44: 24070001 */ addiu $a3,$zero,0x1
/* 1a48: 10000006 */ b .L00001a64
/* 1a4c: 00000000 */ nop
.L00001a50:
/* 1a50: 3c058009 */ lui $a1,%hi(var8008d900)
/* 1a54: 24a5d900 */ addiu $a1,$a1,%lo(var8008d900)
/* 1a58: 24060002 */ addiu $a2,$zero,0x2
/* 1a5c: 0c000713 */ jal osCreateScheduler
/* 1a60: 24070001 */ addiu $a3,$zero,0x1
.L00001a64:
/* 1a64: 3c048009 */ lui $a0,%hi(var8008dbd0)
/* 1a68: 3c058009 */ lui $a1,%hi(var8008dca8)
/* 1a6c: 3c068009 */ lui $a2,%hi(var8008db30)
/* 1a70: 24c6db30 */ addiu $a2,$a2,%lo(var8008db30)
/* 1a74: 24a5dca8 */ addiu $a1,$a1,%lo(var8008dca8)
/* 1a78: 2484dbd0 */ addiu $a0,$a0,%lo(var8008dbd0)
/* 1a7c: 0c00078c */ jal osScAddClient
/* 1a80: 00003825 */ or $a3,$zero,$zero
/* 1a84: 3c048009 */ lui $a0,%hi(var8008dbd0)
/* 1a88: 0c0007a3 */ jal osScGetCmdQ
/* 1a8c: 2484dbd0 */ addiu $a0,$a0,%lo(var8008dbd0)
/* 1a90: 8fbf0014 */ lw $ra,0x14($sp)
/* 1a94: 3c018009 */ lui $at,%hi(var8008dbc8)
/* 1a98: ac22dbc8 */ sw $v0,%lo(var8008dbc8)($at)
/* 1a9c: 03e00008 */ jr $ra
/* 1aa0: 27bd0018 */ addiu $sp,$sp,0x18
);
void schedCreateThread(void)
{
osCreateMesgQueue(&var8008db30, &var8008db48, 32);
if (osTvType == OS_TV_MPAL) {
osCreateScheduler(&g_SchedThread, &var8008d900, OS_VI_MPAL_LAN1, 1);
} else {
osCreateScheduler(&g_SchedThread, &var8008d900, OS_VI_NTSC_LAN1, 1);
}
osScAddClient(&g_SchedThread, &var8008dca8, &var8008db30, 0);
g_SchedCmdQ = osScGetCmdQ(&g_SchedThread);
}
void mainproc(u32 value)
{
@@ -514,11 +478,11 @@ void mainproc(u32 value)
rmonCreateThread();
if (func00012f30()) {
osStopThread(0);
osStopThread(NULL);
}
osSetThreadPri(0, 10);
func000019f4();
osSetThreadPri(0, THREADPRI_MAIN);
schedCreateThread();
mainEntry();
}
+7 -7
View File
@@ -44,15 +44,15 @@ glabel resetproc
/* 2e84: 24040001 */ addiu $a0,$zero,0x1
/* 2e88: 0c012448 */ jal func00049120
/* 2e8c: 00000000 */ nop
/* 2e90: 3c018009 */ lui $at,%hi(var8008fdf0)
/* 2e94: ac22fdf0 */ sw $v0,%lo(var8008fdf0)($at)
/* 2e90: 3c018009 */ lui $at,%hi(g_ResetSp)
/* 2e94: ac22fdf0 */ sw $v0,%lo(g_ResetSp)($at)
/* 2e98: 0c012448 */ jal func00049120
/* 2e9c: ac23fdf4 */ sw $v1,-0x20c($at)
/* 2ea0: 3c198009 */ lui $t9,%hi(var8008fdf4)
/* 2ea4: 8f39fdf4 */ lw $t9,%lo(var8008fdf4)($t9)
/* 2ea8: 3c188009 */ lui $t8,%hi(var8008fdf0)
/* 2ea8: 3c188009 */ lui $t8,%hi(g_ResetSp)
/* 2eac: 3c010022 */ lui $at,0x22
/* 2eb0: 8f18fdf0 */ lw $t8,%lo(var8008fdf0)($t8)
/* 2eb0: 8f18fdf0 */ lw $t8,%lo(g_ResetSp)($t8)
/* 2eb4: 3421add7 */ ori $at,$at,0xadd7
/* 2eb8: 03214821 */ addu $t1,$t9,$at
/* 2ebc: 0121082b */ sltu $at,$t1,$at
@@ -70,9 +70,9 @@ glabel resetproc
/* 2ee8: 00000000 */ nop
/* 2eec: 3c0b8009 */ lui $t3,%hi(var8008fdf4)
/* 2ef0: 8d6bfdf4 */ lw $t3,%lo(var8008fdf4)($t3)
/* 2ef4: 3c0a8009 */ lui $t2,%hi(var8008fdf0)
/* 2ef4: 3c0a8009 */ lui $t2,%hi(g_ResetSp)
/* 2ef8: 3c010022 */ lui $at,0x22
/* 2efc: 8d4afdf0 */ lw $t2,%lo(var8008fdf0)($t2)
/* 2efc: 8d4afdf0 */ lw $t2,%lo(g_ResetSp)($t2)
/* 2f00: 3421add7 */ ori $at,$at,0xadd7
/* 2f04: 01616821 */ addu $t5,$t3,$at
/* 2f08: 01a1082b */ sltu $at,$t5,$at
@@ -109,6 +109,6 @@ void resetThreadCreate(void)
{
osCreateMesgQueue(&g_ResetMesgQueue, &g_ResetMesg, 10);
osSetEventMesg(OS_EVENT_PRENMI, &g_ResetMesgQueue, (OSMesg) 669);
osCreateThread(&g_ResetThread, THREAD_RESET, resetproc, 0, &var8008fdf0, 11);
osCreateThread(&g_ResetThread, THREAD_RESET, resetproc, 0, &g_ResetSp, THREADPRI_RESET);
osStartThread(&g_ResetThread);
}
+1 -1
View File
@@ -116,7 +116,7 @@ void osCreateScheduler(OSSched *sc, void *stack, u8 mode, u32 numFields)
osViSetEvent(&sc->interruptQ, (OSMesg)VIDEO_MSG, numFields);
osCreateLog();
osCreateThread(sc->thread, THREAD_SCHED, &__scMain, sc, allocateStack(THREAD_SCHED, 0x400), 30);
osCreateThread(sc->thread, THREAD_SCHED, &__scMain, sc, allocateStack(THREAD_SCHED, STACKSIZE_SCHED), THREADPRI_SCHED);
osStartThread(sc->thread);
}
+5 -59
View File
@@ -2566,7 +2566,7 @@ u32 var8008db24 = 0;
u32 var8008db28 = 0;
u32 var8008db2c = 0;
OSMesgQueue var8008db30 = {0};
u32 var8008db48 = 0;
OSMesg var8008db48 = NULL;
u32 var8008db4c = 0;
u32 var8008db50 = 0;
u32 var8008db54 = 0;
@@ -2598,64 +2598,10 @@ u32 var8008dbb8 = 0;
u32 var8008dbbc = 0;
u32 var8008dbc0 = 0;
u32 var8008dbc4 = 0;
u32 var8008dbc8 = 0;
OSMesgQueue *g_SchedCmdQ = NULL;
u32 var8008dbcc = 0;
u32 var8008dbd0 = 0;
u32 var8008dbd4 = 0;
u32 var8008dbd8 = 0;
u32 var8008dbdc = 0;
u32 var8008dbe0 = 0;
u32 var8008dbe4 = 0;
u32 var8008dbe8 = 0;
u32 var8008dbec = 0;
u32 var8008dbf0 = 0;
u32 var8008dbf4 = 0;
u32 var8008dbf8 = 0;
u32 var8008dbfc = 0;
u32 var8008dc00 = 0;
u32 var8008dc04 = 0;
u32 var8008dc08 = 0;
u32 var8008dc0c = 0;
u32 var8008dc10 = 0;
u32 var8008dc14 = 0;
u32 var8008dc18 = 0;
u32 var8008dc1c = 0;
u32 var8008dc20 = 0;
u32 var8008dc24 = 0;
u32 var8008dc28 = 0;
u32 var8008dc2c = 0;
u32 var8008dc30 = 0;
u32 var8008dc34 = 0;
u32 var8008dc38 = 0;
u32 var8008dc3c = 0;
u32 var8008dc40 = 0;
u32 var8008dc44 = 0;
u32 var8008dc48 = 0;
u32 var8008dc4c = 0;
u32 var8008dc50 = 0;
u32 var8008dc54 = 0;
u32 var8008dc58 = 0;
u32 var8008dc5c = 0;
u32 var8008dc60 = 0;
u32 var8008dc64 = 0;
u32 var8008dc68 = 0;
u32 var8008dc6c = 0;
u32 var8008dc70 = 0;
u32 var8008dc74 = 0;
u32 var8008dc78 = 0;
u32 var8008dc7c = 0;
u32 var8008dc80 = 0;
u32 var8008dc84 = 0;
u32 var8008dc88 = 0;
u32 var8008dc8c = 0;
u32 var8008dc90 = 0;
u32 var8008dc94 = 0;
u32 var8008dc98 = 0;
u32 var8008dc9c = 0;
u32 var8008dca0 = 0;
u32 var8008dca4 = 0;
u32 var8008dca8 = 0;
u32 var8008dcac = 0;
OSSched g_SchedThread = {0};
OSScClient var8008dca8 = {0};
u32 var8008dcb0 = 0;
u32 g_OsMemSize = 0;
u32 var8008dcb8 = 0;
@@ -2827,7 +2773,7 @@ u32 var8008fde0 = 0;
u32 var8008fde4 = 0;
u32 var8008fde8 = 0;
u32 var8008fdec = 0;
u32 var8008fdf0 = 0;
u32 g_ResetSp = 0;
u32 var8008fdf4 = 0;
u32 var8008fdf8 = 0;
u32 var8008fdfc = 0;
+4
View File
@@ -8,6 +8,10 @@
#define TRUE 1
#define FALSE 0
#define OS_TV_PAL 0
#define OS_TV_NTSC 1
#define OS_TV_MPAL 2
typedef signed char s8;
typedef unsigned char u8;
typedef signed short int s16;
+18
View File
@@ -2977,6 +2977,14 @@
#define SQUADRON_0E 0x0e
#define SQUADRON_0F 0x0f
#define STACKSIZE_RMON 0x300
#define STACKSIZE_IDLE 0x40
#define STACKSIZE_SCHED 0x400
#define STACKSIZE_MAIN 0x9800
#define STACKSIZE_AUDIO 0x1000
#define STACKSIZE_FAULT 0
#define STACKSIZE_RESET 0
#define STAGE_MP_RANDOM 0x01
#define STAGE_MAIANSOS 0x09
#define STAGE_TEST_SILO 0x14
@@ -3146,12 +3154,22 @@
#define TELEPORTSTATE_WHITE 3
#define TELEPORTSTATE_EXITING 4
#define THREAD_RMON 0
#define THREAD_IDLE 1
#define THREAD_SCHED 2
#define THREAD_MAIN 3
#define THREAD_AUDIO 4
#define THREAD_FAULT 5
#define THREAD_RESET 6
#define THREADPRI_RMON 250
#define THREADPRI_IDLE 0
#define THREADPRI_SCHED 30
#define THREADPRI_MAIN 10
#define THREADPRI_AUDIO 20
#define THREADPRI_FAULT 40
#define THREADPRI_RESET 11
#define TICKMODE_0 0
#define TICKMODE_NORMAL 1
#define TICKMODE_WARP 3
+5 -4
View File
@@ -329,9 +329,10 @@ extern OSThread g_IdleThread;
extern OSThread var8008d6d0;
extern u32 var8008d900;
extern OSMesgQueue var8008db30;
extern u32 var8008db48;
extern u32 var8008dbd0;
extern u32 var8008dca8;
extern OSMesg var8008db48;
extern OSMesgQueue *g_SchedCmdQ;
extern OSSched g_SchedThread;
extern OSScClient var8008dca8;
extern u32 g_OsMemSize;
extern u32 var8008dcc0;
extern OSViMode *var8008dd60[2];
@@ -345,7 +346,7 @@ extern u32 var8008fa68;
extern OSMesg g_ResetMesg;
extern OSMesgQueue g_ResetMesgQueue;
extern OSThread g_ResetThread;
extern u32 var8008fdf0;
extern u32 g_ResetSp;
extern OSThread viThread;
extern u32 __viEventQueue;
extern u32 viEventBuf;
+5 -5
View File
@@ -24,7 +24,7 @@
void audioAllocateStack(void)
{
g_AudioSp = allocateStack(THREAD_AUDIO, 4096);
g_AudioSp = allocateStack(THREAD_AUDIO, STACKSIZE_AUDIO);
}
GLOBAL_ASM(
@@ -519,7 +519,7 @@ glabel func00009154
/* 916c: afb30024 */ sw $s3,0x24($sp)
/* 9170: afb20020 */ sw $s2,0x20($sp)
/* 9174: 2dce0001 */ sltiu $t6,$t6,0x1
/* 9178: 3c048009 */ lui $a0,%hi(var8008dbd0)
/* 9178: 3c048009 */ lui $a0,%hi(g_SchedThread)
/* 917c: 3c058009 */ lui $a1,%hi(var800918d0)
/* 9180: 3c068009 */ lui $a2,%hi(var80091810)
/* 9184: afbe0038 */ sw $s8,0x38($sp)
@@ -535,7 +535,7 @@ glabel func00009154
/* 91ac: afa00060 */ sw $zero,0x60($sp)
/* 91b0: 24c61810 */ addiu $a2,$a2,%lo(var80091810)
/* 91b4: 24a518d0 */ addiu $a1,$a1,%lo(var800918d0)
/* 91b8: 2484dbd0 */ addiu $a0,$a0,%lo(var8008dbd0)
/* 91b8: 2484dbd0 */ addiu $a0,$a0,%lo(g_SchedThread)
/* 91bc: 0c00078c */ jal osScAddClient
/* 91c0: 2dc70001 */ sltiu $a3,$t6,0x1
/* 91c4: 3c158009 */ lui $s5,%hi(var80091590)
@@ -720,10 +720,10 @@ glabel func00009448
/* 945c: afbf001c */ sw $ra,0x1c($sp)
/* 9460: 10c00007 */ beqz $a2,.L00009480
/* 9464: afa50034 */ sw $a1,0x34($sp)
/* 9468: 3c048009 */ lui $a0,%hi(var8008dbd0)
/* 9468: 3c048009 */ lui $a0,%hi(g_SchedThread)
/* 946c: 3c018009 */ lui $at,%hi(var800918f4)
/* 9470: ac2618f4 */ sw $a2,%lo(var800918f4)($at)
/* 9474: 2484dbd0 */ addiu $a0,$a0,%lo(var8008dbd0)
/* 9474: 2484dbd0 */ addiu $a0,$a0,%lo(g_SchedThread)
/* 9478: 0c0007ea */ jal __scHandleRetraceViaPri
/* 947c: 00c02825 */ or $a1,$a2,$zero
.L00009480:
+1 -1
View File
@@ -145,7 +145,7 @@ void faultproc(void *arg0);
void faultCreateThread2(void)
{
osCreateMesgQueue(&g_FaultMesgQueue, &g_FaultMesg, 1);
osCreateThread(&g_FaultThread, THREAD_FAULT, faultproc, NULL, &g_FaultSp, 40);
osCreateThread(&g_FaultThread, THREAD_FAULT, faultproc, NULL, &g_FaultSp, THREADPRI_FAULT);
osStartThread(&g_FaultThread);
}
+2 -2
View File
@@ -372,10 +372,10 @@ glabel func0002f8f4
/* 2f9a8: acc8000c */ sw $t0,0xc($a2)
/* 2f9ac: 0c012048 */ jal osWritebackDCacheAll
/* 2f9b0: afa6001c */ sw $a2,0x1c($sp)
/* 2f9b4: 3c048009 */ lui $a0,%hi(var8008dbd0)
/* 2f9b4: 3c048009 */ lui $a0,%hi(g_SchedThread)
/* 2f9b8: 8fa5001c */ lw $a1,0x1c($sp)
/* 2f9bc: 0c0007ea */ jal __scHandleRetraceViaPri
/* 2f9c0: 2484dbd0 */ addiu $a0,$a0,%lo(var8008dbd0)
/* 2f9c0: 2484dbd0 */ addiu $a0,$a0,%lo(g_SchedThread)
/* 2f9c4: 3c028006 */ lui $v0,%hi(var8005f108)
/* 2f9c8: 2442f108 */ addiu $v0,$v0,%lo(var8005f108)
/* 2f9cc: 8c490000 */ lw $t1,0x0($v0)