From 30987676884df00e563f64bde13f8c49a3f96b70 Mon Sep 17 00:00:00 2001 From: EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com> Date: Thu, 30 Sep 2021 01:09:13 +0100 Subject: [PATCH] sethwinterrupt OK (#301) --- include/functions.h | 2 +- src/libultra/os/sethwinterrupt.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/include/functions.h b/include/functions.h index 63ee51708d..65514ca8e0 100644 --- a/include/functions.h +++ b/include/functions.h @@ -479,7 +479,7 @@ void* osViGetCurrentFramebuffer(void); s32 __osSpSetPc(void* data); // void __osVoiceContWrite4(void); void __osGetHWIntrRoutine(s32 idx, OSMesgQueue** outQueue, OSMesg* outMsg); -// void __osSetHWIntrRoutine(void); +void __osSetHWIntrRoutine(s32 idx, OSMesgQueue* queue, OSMesg msg); u32 __osGetWatchLo(void); void __osSetWatchLo(u32 value); f32 fmodf(f32 dividend, f32 divisor); diff --git a/src/libultra/os/sethwinterrupt.c b/src/libultra/os/sethwinterrupt.c index 86dfd2c649..6ba72be7a1 100644 --- a/src/libultra/os/sethwinterrupt.c +++ b/src/libultra/os/sethwinterrupt.c @@ -1,3 +1,10 @@ #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/boot/sethwinterrupt/__osSetHWIntrRoutine.s") +void __osSetHWIntrRoutine(s32 idx, OSMesgQueue* queue, OSMesg msg) { + register s32 prevInt = __osDisableInt(); + + __osHwIntTable[idx].queue = queue; + __osHwIntTable[idx].msg = msg; + + __osRestoreInt(prevInt); +}