From 6bc6a80a5870876b3c6959ec2a618a3ebc8a51db Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 26 Jan 2021 23:32:54 +1000 Subject: [PATCH] Decompile __osSiRelAccess --- src/gvars/gvars.c | 7 +------ src/include/gvars/gvars.h | 2 +- src/lib/ultra/io/siacs.c | 31 +++++++++++-------------------- 3 files changed, 13 insertions(+), 27 deletions(-) diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 27b575b74..d3fffbd18 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -14201,12 +14201,7 @@ u32 var8009c7a4 = 0; OSMesgQueue __osPiAccessQueue = {0}; u32 var8009c7c0 = 0; u32 var8009c7c4 = 0; -u32 var8009c7c8 = 0; -u32 var8009c7cc = 0; -u32 var8009c7d0 = 0; -u32 var8009c7d4 = 0; -u32 var8009c7d8 = 0; -u32 var8009c7dc = 0; +OSMesgQueue __osSiAccessQueue = {0}; u32 __osContPifRam = 0; u32 var8009c7e4 = 0; u32 var8009c7e8 = 0; diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 9d7e6de8a..859cb86fa 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -486,7 +486,7 @@ extern u32 var8009c78c; extern OSMesg piAccessBuf; extern OSMesgQueue __osPiAccessQueue; extern u32 var8009c7c0; -extern u32 var8009c7c8; +extern OSMesgQueue __osSiAccessQueue; extern u32 __osContPifRam; extern u32 var8009c81c; extern u8 __osContLastCmd; diff --git a/src/lib/ultra/io/siacs.c b/src/lib/ultra/io/siacs.c index 4543f8ca9..7b82f84d2 100644 --- a/src/lib/ultra/io/siacs.c +++ b/src/lib/ultra/io/siacs.c @@ -1,4 +1,5 @@ #include +#include "gvars/gvars.h" GLOBAL_ASM( glabel __osSiCreateAccessQueue @@ -6,15 +7,15 @@ glabel __osSiCreateAccessQueue /* 4a814: afbf0014 */ sw $ra,0x14($sp) /* 4a818: 240e0001 */ addiu $t6,$zero,0x1 /* 4a81c: 3c018006 */ lui $at,%hi(var80060950) -/* 4a820: 3c04800a */ lui $a0,%hi(var8009c7c8) +/* 4a820: 3c04800a */ lui $a0,%hi(__osSiAccessQueue) /* 4a824: 3c05800a */ lui $a1,%hi(var8009c7c0) /* 4a828: ac2e0950 */ sw $t6,%lo(var80060950)($at) /* 4a82c: 24a5c7c0 */ addiu $a1,$a1,%lo(var8009c7c0) -/* 4a830: 2484c7c8 */ addiu $a0,$a0,%lo(var8009c7c8) +/* 4a830: 2484c7c8 */ addiu $a0,$a0,%lo(__osSiAccessQueue) /* 4a834: 0c0120d0 */ jal osCreateMesgQueue /* 4a838: 24060001 */ addiu $a2,$zero,0x1 -/* 4a83c: 3c04800a */ lui $a0,%hi(var8009c7c8) -/* 4a840: 2484c7c8 */ addiu $a0,$a0,%lo(var8009c7c8) +/* 4a83c: 3c04800a */ lui $a0,%hi(__osSiAccessQueue) +/* 4a840: 2484c7c8 */ addiu $a0,$a0,%lo(__osSiAccessQueue) /* 4a844: 00002825 */ or $a1,$zero,$zero /* 4a848: 0c012238 */ jal osSendMesg /* 4a84c: 00003025 */ or $a2,$zero,$zero @@ -35,8 +36,8 @@ glabel __osSiGetAccess /* 4a878: 0c012a04 */ jal __osSiCreateAccessQueue /* 4a87c: 00000000 */ nop .L0004a880: -/* 4a880: 3c04800a */ lui $a0,%hi(var8009c7c8) -/* 4a884: 2484c7c8 */ addiu $a0,$a0,%lo(var8009c7c8) +/* 4a880: 3c04800a */ lui $a0,%hi(__osSiAccessQueue) +/* 4a884: 2484c7c8 */ addiu $a0,$a0,%lo(__osSiAccessQueue) /* 4a888: 27a5001c */ addiu $a1,$sp,0x1c /* 4a88c: 0c0121bc */ jal osRecvMesg /* 4a890: 24060001 */ addiu $a2,$zero,0x1 @@ -46,17 +47,7 @@ glabel __osSiGetAccess /* 4a8a0: 00000000 */ nop ); -GLOBAL_ASM( -glabel __osSiRelAccess -/* 4a8a4: 27bdffe8 */ addiu $sp,$sp,-24 -/* 4a8a8: afbf0014 */ sw $ra,0x14($sp) -/* 4a8ac: 3c04800a */ lui $a0,%hi(var8009c7c8) -/* 4a8b0: 2484c7c8 */ addiu $a0,$a0,%lo(var8009c7c8) -/* 4a8b4: 00002825 */ or $a1,$zero,$zero -/* 4a8b8: 0c012238 */ jal osSendMesg -/* 4a8bc: 00003025 */ or $a2,$zero,$zero -/* 4a8c0: 8fbf0014 */ lw $ra,0x14($sp) -/* 4a8c4: 27bd0018 */ addiu $sp,$sp,0x18 -/* 4a8c8: 03e00008 */ jr $ra -/* 4a8cc: 00000000 */ nop -); +void __osSiRelAccess(void) +{ + osSendMesg(&__osSiAccessQueue, NULL, OS_MESG_NOBLOCK); +}