From 4d969f500e792d1978654e398a2161f36bf69976 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 30 Jan 2021 00:55:25 +1000 Subject: [PATCH] Decompile __osGetCurrFaultedThread --- ld/libfiles.inc | 2 +- src/game/data/data_003dc0.c | 2 +- src/include/game/data/data_000000.h | 1 + src/lib/lib_0c000.c | 4 ++-- src/lib/lib_4e640.c | 9 --------- src/lib/ultra/os/exceptasm.c | 4 ++-- src/lib/ultra/os/getcurrfaultthread.c | 7 +++++++ 7 files changed, 14 insertions(+), 15 deletions(-) delete mode 100644 src/lib/lib_4e640.c create mode 100644 src/lib/ultra/os/getcurrfaultthread.c diff --git a/ld/libfiles.inc b/ld/libfiles.inc index 1449e836f..4aceba792 100644 --- a/ld/libfiles.inc +++ b/ld/libfiles.inc @@ -160,7 +160,7 @@ build/ROMID/lib/ultra/io/aigetlen.o (section); \ build/ROMID/lib/ultra/os/invaldcache.o (section); \ build/ROMID/lib/ultra/io/pidma.o (section); \ - build/ROMID/lib/lib_4e640.o (section); \ + build/ROMID/lib/ultra/os/getcurrfaultthread.o (section); \ build/ROMID/lib/ultra/io/piread.o (section); \ build/ROMID/lib/ultra/libc/xprintf.o (section); \ build/ROMID/lib/ultra/io/contquery.o (section); \ diff --git a/src/game/data/data_003dc0.c b/src/game/data/data_003dc0.c index 41753bcc7..ff2b23c94 100644 --- a/src/game/data/data_003dc0.c +++ b/src/game/data/data_003dc0.c @@ -2292,7 +2292,7 @@ u32 var80060934 = 0xffffffff; OSThread *__osRunQueue = (OSThread *)&__osThreadTail; OSThread *__osActiveQueue = (OSThread *)&__osThreadTail; OSThread *__osRunningThread = NULL; -u32 var80060944 = 0x00000000; +OSThread *__osFaultedThread = NULL; u32 var80060948 = 0x00000000; u32 var8006094c = 0x00000000; u32 __osSiAccessQueueEnabled = 0x00000000; diff --git a/src/include/game/data/data_000000.h b/src/include/game/data/data_000000.h index 813ce9621..4dab29016 100644 --- a/src/include/game/data/data_000000.h +++ b/src/include/game/data/data_000000.h @@ -193,6 +193,7 @@ extern u32 __osThreadTail; extern OSThread *__osRunQueue; extern OSThread *__osActiveQueue; extern OSThread *__osRunningThread; +extern OSThread *__osFaultedThread; extern u32 __osSiAccessQueueEnabled; extern u32 var80060970; extern u32 var800609a0; diff --git a/src/lib/lib_0c000.c b/src/lib/lib_0c000.c index ad8e2ad6a..eba10d044 100644 --- a/src/lib/lib_0c000.c +++ b/src/lib/lib_0c000.c @@ -428,7 +428,7 @@ glabel faultproc /* c0b8: 24060001 */ addiu $a2,$zero,0x1 /* c0bc: 0c012194 */ jal osSetIntMask /* c0c0: 24040001 */ addiu $a0,$zero,0x1 -/* c0c4: 0c013990 */ jal func0004e640 +/* c0c4: 0c013990 */ jal __osGetCurrFaultedThread /* c0c8: 00408025 */ or $s0,$v0,$zero /* c0cc: 3c018009 */ lui $at,%hi(var80094acc) /* c0d0: 1040fff6 */ beqz $v0,.L0000c0ac @@ -467,7 +467,7 @@ glabel faultproc // do { // osRecvMesg(&g_FaultMesgQueue, &msg, 1); // mask = osSetIntMask(1); -// result = func0004e640(); +// result = __osGetCurrFaultedThread(); // } while (!result); // // osSetIntMask(mask); diff --git a/src/lib/lib_4e640.c b/src/lib/lib_4e640.c deleted file mode 100644 index 00b148272..000000000 --- a/src/lib/lib_4e640.c +++ /dev/null @@ -1,9 +0,0 @@ -#include - -GLOBAL_ASM( -glabel func0004e640 -/* 4e640: 3c028006 */ lui $v0,%hi(var80060944) -/* 4e644: 03e00008 */ jr $ra -/* 4e648: 8c420944 */ lw $v0,%lo(var80060944)($v0) -/* 4e64c: 00000000 */ nop -); diff --git a/src/lib/ultra/os/exceptasm.c b/src/lib/ultra/os/exceptasm.c index f775d8f38..2b0f68e24 100644 --- a/src/lib/ultra/os/exceptasm.c +++ b/src/lib/ultra/os/exceptasm.c @@ -406,8 +406,8 @@ glabel __osException /* 3a80: 08000f44 */ j 0x3d10 /* 3a84: ad3a0000 */ sw $k0,0x0($t1) .L00003a88: -/* 3a88: 3c018006 */ lui $at,%hi(var80060944) -/* 3a8c: ac3a0944 */ sw $k0,%lo(var80060944)($at) +/* 3a88: 3c018006 */ lui $at,%hi(__osFaultedThread) +/* 3a8c: ac3a0944 */ sw $k0,%lo(__osFaultedThread)($at) /* 3a90: 24090001 */ addiu $t1,$zero,0x1 /* 3a94: a7490010 */ sh $t1,0x10($k0) /* 3a98: 24090002 */ addiu $t1,$zero,0x2 diff --git a/src/lib/ultra/os/getcurrfaultthread.c b/src/lib/ultra/os/getcurrfaultthread.c new file mode 100644 index 000000000..53c857b00 --- /dev/null +++ b/src/lib/ultra/os/getcurrfaultthread.c @@ -0,0 +1,7 @@ +#include +#include "game/data/data_000000.h" + +OSThread *__osGetCurrFaultedThread() +{ + return __osFaultedThread; +}