Decompile osRecvMesg
This commit is contained in:
parent
c9601e0927
commit
15cf1eb439
1
Makefile
1
Makefile
|
|
@ -80,6 +80,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/jammesg.o: OPT_LVL := -O1
|
||||
$(B_DIR)/lib/ultra/os/recvmesg.o: OPT_LVL := -O1
|
||||
$(B_DIR)/lib/ultra/os/resetglobalintmask.o: OPT_LVL := -O1
|
||||
$(B_DIR)/lib/ultra/os/sendmesg.o: OPT_LVL := -O1
|
||||
$(B_DIR)/lib/ultra/os/setthreadpri.o: OPT_LVL := -O1
|
||||
|
|
|
|||
|
|
@ -1,93 +1,34 @@
|
|||
#include <libultra_internal.h>
|
||||
#include "game/data/data_000000.h"
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel osRecvMesg
|
||||
/* 486f0: 27bdffd8 */ addiu $sp,$sp,-40
|
||||
/* 486f4: afbf001c */ sw $ra,0x1c($sp)
|
||||
/* 486f8: afa40028 */ sw $a0,0x28($sp)
|
||||
/* 486fc: afa5002c */ sw $a1,0x2c($sp)
|
||||
/* 48700: afa60030 */ sw $a2,0x30($sp)
|
||||
/* 48704: afb10018 */ sw $s1,0x18($sp)
|
||||
/* 48708: 0c01256c */ jal __osDisableInt
|
||||
/* 4870c: afb00014 */ sw $s0,0x14($sp)
|
||||
/* 48710: 8fae0028 */ lw $t6,0x28($sp)
|
||||
/* 48714: 00408025 */ or $s0,$v0,$zero
|
||||
/* 48718: 8dcf0008 */ lw $t7,0x8($t6)
|
||||
/* 4871c: 15e00012 */ bnez $t7,.L00048768
|
||||
/* 48720: 00000000 */ nop
|
||||
.L00048724:
|
||||
/* 48724: 8fb80030 */ lw $t8,0x30($sp)
|
||||
/* 48728: 17000005 */ bnez $t8,.L00048740
|
||||
/* 4872c: 00000000 */ nop
|
||||
/* 48730: 0c012588 */ jal __osRestoreInt
|
||||
/* 48734: 02002025 */ or $a0,$s0,$zero
|
||||
/* 48738: 10000036 */ b .L00048814
|
||||
/* 4873c: 2402ffff */ addiu $v0,$zero,-1
|
||||
.L00048740:
|
||||
/* 48740: 3c088006 */ lui $t0,%hi(__osRunningThread)
|
||||
/* 48744: 8d080940 */ lw $t0,%lo(__osRunningThread)($t0)
|
||||
/* 48748: 24190008 */ addiu $t9,$zero,0x8
|
||||
/* 4874c: a5190010 */ sh $t9,0x10($t0)
|
||||
/* 48750: 0c000ee8 */ jal __osEnqueueAndYield
|
||||
/* 48754: 8fa40028 */ lw $a0,0x28($sp)
|
||||
/* 48758: 8fa90028 */ lw $t1,0x28($sp)
|
||||
/* 4875c: 8d2a0008 */ lw $t2,0x8($t1)
|
||||
/* 48760: 1140fff0 */ beqz $t2,.L00048724
|
||||
/* 48764: 00000000 */ nop
|
||||
.L00048768:
|
||||
/* 48768: 8fab002c */ lw $t3,0x2c($sp)
|
||||
/* 4876c: 11600008 */ beqz $t3,.L00048790
|
||||
/* 48770: 00000000 */ nop
|
||||
/* 48774: 8fac0028 */ lw $t4,0x28($sp)
|
||||
/* 48778: 8d8e000c */ lw $t6,0xc($t4)
|
||||
/* 4877c: 8d8d0014 */ lw $t5,0x14($t4)
|
||||
/* 48780: 000e7880 */ sll $t7,$t6,0x2
|
||||
/* 48784: 01afc021 */ addu $t8,$t5,$t7
|
||||
/* 48788: 8f190000 */ lw $t9,0x0($t8)
|
||||
/* 4878c: ad790000 */ sw $t9,0x0($t3)
|
||||
.L00048790:
|
||||
/* 48790: 8fa80028 */ lw $t0,0x28($sp)
|
||||
/* 48794: 8d09000c */ lw $t1,0xc($t0)
|
||||
/* 48798: 8d0c0010 */ lw $t4,0x10($t0)
|
||||
/* 4879c: 252a0001 */ addiu $t2,$t1,0x1
|
||||
/* 487a0: 014c001a */ div $zero,$t2,$t4
|
||||
/* 487a4: 00007010 */ mfhi $t6
|
||||
/* 487a8: ad0e000c */ sw $t6,0xc($t0)
|
||||
/* 487ac: 8fad0028 */ lw $t5,0x28($sp)
|
||||
/* 487b0: 15800002 */ bnez $t4,.L000487bc
|
||||
/* 487b4: 00000000 */ nop
|
||||
/* 487b8: 0007000d */ break 0x7
|
||||
.L000487bc:
|
||||
/* 487bc: 2401ffff */ addiu $at,$zero,-1
|
||||
/* 487c0: 15810004 */ bne $t4,$at,.L000487d4
|
||||
/* 487c4: 3c018000 */ lui $at,0x8000
|
||||
/* 487c8: 15410002 */ bne $t2,$at,.L000487d4
|
||||
/* 487cc: 00000000 */ nop
|
||||
/* 487d0: 0006000d */ break 0x6
|
||||
.L000487d4:
|
||||
/* 487d4: 8daf0008 */ lw $t7,0x8($t5)
|
||||
/* 487d8: 25f8ffff */ addiu $t8,$t7,-1
|
||||
/* 487dc: adb80008 */ sw $t8,0x8($t5)
|
||||
/* 487e0: 8fb90028 */ lw $t9,0x28($sp)
|
||||
/* 487e4: 8f2b0004 */ lw $t3,0x4($t9)
|
||||
/* 487e8: 8d690000 */ lw $t1,0x0($t3)
|
||||
/* 487ec: 11200006 */ beqz $t1,.L00048808
|
||||
/* 487f0: 00000000 */ nop
|
||||
/* 487f4: 0c000f40 */ jal __osPopThread
|
||||
/* 487f8: 27240004 */ addiu $a0,$t9,0x4
|
||||
/* 487fc: 00408825 */ or $s1,$v0,$zero
|
||||
/* 48800: 0c01207c */ jal osStartThread
|
||||
/* 48804: 02202025 */ or $a0,$s1,$zero
|
||||
.L00048808:
|
||||
/* 48808: 0c012588 */ jal __osRestoreInt
|
||||
/* 4880c: 02002025 */ or $a0,$s0,$zero
|
||||
/* 48810: 00001025 */ or $v0,$zero,$zero
|
||||
.L00048814:
|
||||
/* 48814: 8fbf001c */ lw $ra,0x1c($sp)
|
||||
/* 48818: 8fb00014 */ lw $s0,0x14($sp)
|
||||
/* 4881c: 8fb10018 */ lw $s1,0x18($sp)
|
||||
/* 48820: 03e00008 */ jr $ra
|
||||
/* 48824: 27bd0028 */ addiu $sp,$sp,0x28
|
||||
/* 48828: 00000000 */ nop
|
||||
/* 4882c: 00000000 */ nop
|
||||
);
|
||||
s32 osRecvMesg(OSMesgQueue *mq, OSMesg *msg, s32 flags)
|
||||
{
|
||||
register u32 saveMask;
|
||||
|
||||
saveMask = __osDisableInt();
|
||||
|
||||
while (MQ_IS_EMPTY(mq)) {
|
||||
if (flags == OS_MESG_NOBLOCK) {
|
||||
__osRestoreInt(saveMask);
|
||||
return -1;
|
||||
}
|
||||
|
||||
__osRunningThread->state = OS_STATE_WAITING;
|
||||
__osEnqueueAndYield(&mq->mtqueue);
|
||||
}
|
||||
|
||||
if (msg != NULL) {
|
||||
*msg = mq->msg[mq->first];
|
||||
}
|
||||
|
||||
mq->first = (mq->first + 1) % mq->msgCount;
|
||||
mq->validCount--;
|
||||
|
||||
if (mq->fullqueue->next != NULL) {
|
||||
osStartThread(__osPopThread(&mq->fullqueue));
|
||||
}
|
||||
|
||||
__osRestoreInt(saveMask);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue