Decompile osStopThread
This commit is contained in:
parent
97c5989763
commit
7065b126dc
1
Makefile
1
Makefile
|
|
@ -75,6 +75,7 @@ $(B_DIR)/lib/ultra/io/vigetnextframebuf.o: OPT_LVL := -O1
|
|||
$(B_DIR)/lib/ultra/io/visetevent.o: OPT_LVL := -O1
|
||||
$(B_DIR)/lib/ultra/os/destroythread.o: OPT_LVL := -O1
|
||||
$(B_DIR)/lib/ultra/os/resetglobalintmask.o: OPT_LVL := -O1
|
||||
$(B_DIR)/lib/ultra/os/stopthread.o: OPT_LVL := -O1
|
||||
$(B_DIR)/lib/ultra/os/thread.o: OPT_LVL := -O1
|
||||
$(B_DIR)/lib/ultra/os/yieldthread.o: OPT_LVL := -O1
|
||||
|
||||
|
|
|
|||
|
|
@ -1,58 +1,28 @@
|
|||
#include <libultra_internal.h>
|
||||
#include "game/data/data_000000.h"
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel osStopThread
|
||||
/* 48370: 27bdffc8 */ addiu $sp,$sp,-56
|
||||
/* 48374: afbf0024 */ sw $ra,0x24($sp)
|
||||
/* 48378: afa40038 */ sw $a0,0x38($sp)
|
||||
/* 4837c: afb20020 */ sw $s2,0x20($sp)
|
||||
/* 48380: afb1001c */ sw $s1,0x1c($sp)
|
||||
/* 48384: 0c01256c */ jal __osDisableInt
|
||||
/* 48388: afb00018 */ sw $s0,0x18($sp)
|
||||
/* 4838c: 8fae0038 */ lw $t6,0x38($sp)
|
||||
/* 48390: 00408025 */ or $s0,$v0,$zero
|
||||
/* 48394: 15c00003 */ bnez $t6,.L000483a4
|
||||
/* 48398: 00000000 */ nop
|
||||
/* 4839c: 10000003 */ b .L000483ac
|
||||
/* 483a0: 24110004 */ addiu $s1,$zero,0x4
|
||||
.L000483a4:
|
||||
/* 483a4: 8faf0038 */ lw $t7,0x38($sp)
|
||||
/* 483a8: 95f10010 */ lhu $s1,0x10($t7)
|
||||
.L000483ac:
|
||||
/* 483ac: 02209025 */ or $s2,$s1,$zero
|
||||
/* 483b0: 24010002 */ addiu $at,$zero,0x2
|
||||
/* 483b4: 1241000f */ beq $s2,$at,.L000483f4
|
||||
/* 483b8: 24010004 */ addiu $at,$zero,0x4
|
||||
/* 483bc: 12410005 */ beq $s2,$at,.L000483d4
|
||||
/* 483c0: 24010008 */ addiu $at,$zero,0x8
|
||||
/* 483c4: 1241000b */ beq $s2,$at,.L000483f4
|
||||
/* 483c8: 00000000 */ nop
|
||||
/* 483cc: 10000010 */ b .L00048410
|
||||
/* 483d0: 00000000 */ nop
|
||||
.L000483d4:
|
||||
/* 483d4: 3c198006 */ lui $t9,%hi(__osRunningThread)
|
||||
/* 483d8: 8f390940 */ lw $t9,%lo(__osRunningThread)($t9)
|
||||
/* 483dc: 24180001 */ addiu $t8,$zero,0x1
|
||||
/* 483e0: 00002025 */ or $a0,$zero,$zero
|
||||
/* 483e4: 0c000ee8 */ jal __osEnqueueAndYield
|
||||
/* 483e8: a7380010 */ sh $t8,0x10($t9)
|
||||
/* 483ec: 10000008 */ b .L00048410
|
||||
/* 483f0: 00000000 */ nop
|
||||
.L000483f4:
|
||||
/* 483f4: 8fa90038 */ lw $t1,0x38($sp)
|
||||
/* 483f8: 24080001 */ addiu $t0,$zero,0x1
|
||||
/* 483fc: a5280010 */ sh $t0,0x10($t1)
|
||||
/* 48400: 8faa0038 */ lw $t2,0x38($sp)
|
||||
/* 48404: 8d440008 */ lw $a0,0x8($t2)
|
||||
/* 48408: 0c012884 */ jal __osDequeueThread
|
||||
/* 4840c: 01402825 */ or $a1,$t2,$zero
|
||||
.L00048410:
|
||||
/* 48410: 0c012588 */ jal __osRestoreInt
|
||||
/* 48414: 02002025 */ or $a0,$s0,$zero
|
||||
/* 48418: 8fbf0024 */ lw $ra,0x24($sp)
|
||||
/* 4841c: 8fb00018 */ lw $s0,0x18($sp)
|
||||
/* 48420: 8fb1001c */ lw $s1,0x1c($sp)
|
||||
/* 48424: 8fb20020 */ lw $s2,0x20($sp)
|
||||
/* 48428: 03e00008 */ jr $ra
|
||||
/* 4842c: 27bd0038 */ addiu $sp,$sp,0x38
|
||||
);
|
||||
void osStopThread(OSThread *t)
|
||||
{
|
||||
register u32 saveMask = __osDisableInt();
|
||||
register u16 state;
|
||||
|
||||
if (t == NULL) {
|
||||
state = OS_STATE_RUNNING;
|
||||
} else {
|
||||
state = t->state;
|
||||
}
|
||||
|
||||
switch (state) {
|
||||
case OS_STATE_RUNNING:
|
||||
__osRunningThread->state = OS_STATE_STOPPED;
|
||||
__osEnqueueAndYield(NULL);
|
||||
break;
|
||||
case OS_STATE_RUNNABLE:
|
||||
case OS_STATE_WAITING:
|
||||
t->state = OS_STATE_STOPPED;
|
||||
__osDequeueThread(t->queue, t);
|
||||
break;
|
||||
}
|
||||
|
||||
__osRestoreInt(saveMask);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue