Fix error handler typedefs

This commit is contained in:
LagoLunatic
2025-05-17 14:16:26 -04:00
parent 337303fc79
commit e063db9697
7 changed files with 28 additions and 28 deletions
+6 -4
View File
@@ -34,6 +34,8 @@ STATIC_ASSERT(sizeof(JUTExternalFB) == 0x14);
#define JUT_PRINT_FLOAT 8
#define JUT_PRINT_STACK 16
typedef void (*JUTExceptionUserCallback)(OSError, OSContext*, u32, u32);
class JUTException : public JKRThread {
public:
enum EInfoPage {
@@ -79,8 +81,8 @@ public:
static void panic_f(char const*, int, char const*, ...);
static void setFPException(u32);
static bool searchPartialModule(u32, u32*, u32*, u32*, u32*);
static OSErrorHandler setPreUserCallback(OSErrorHandler);
static OSErrorHandler setPostUserCallback(OSErrorHandler);
static JUTExceptionUserCallback setPreUserCallback(JUTExceptionUserCallback);
static JUTExceptionUserCallback setPostUserCallback(JUTExceptionUserCallback);
static void appendMapFile(char const*);
static bool queryMapAddress(char*, u32, s32, u32*, u32*, char*, u32, bool, bool);
static bool queryMapAddress_single(char*, u32, s32, u32*, u32*, char*, u32, bool,
@@ -109,8 +111,8 @@ private:
static JSUList<JUTException::JUTExMapFile> sMapFileList;
static OSMessage sMessageBuffer[1];
static JUTException* sErrorManager;
static OSErrorHandler sPreUserCallback;
static OSErrorHandler sPostUserCallback;
static JUTExceptionUserCallback sPreUserCallback;
static JUTExceptionUserCallback sPostUserCallback;
static void* sConsoleBuffer;
static u32 sConsoleBufferSize;
static JUTConsole* sConsole;
+1 -3
View File
@@ -53,9 +53,7 @@ typedef enum {
typedef u8 __OSException;
typedef void (*OSErrorHandler)(OSError error, OSContext* context, u32, u32);
// Using this type for the C++ handlers makes stuff not match
typedef void (*OSErrorHandlerEx)(OSError error, OSContext* context, u32, u32, ...);
typedef void (*OSErrorHandler)(OSError error, OSContext* context, ...);
OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler);
void __OSUnhandledException(__OSException exception, OSContext* context, u32 dsisr, u32 dar);
+14 -14
View File
@@ -17,7 +17,7 @@
#include "dolphin/vi/vi.h"
struct CallbackObject {
/* 0x00 */ OSErrorHandler callback;
/* 0x00 */ JUTExceptionUserCallback callback;
/* 0x04 */ u16 error;
/* 0x06 */ u16 pad_0x06;
/* 0x08 */ OSContext* context;
@@ -49,17 +49,17 @@ const char* JUTException::sCpuExpName[] = {
"FLOATING POINT",
};
JUTException* JUTException::sErrorManager;
OSErrorHandler JUTException::sPreUserCallback;
OSErrorHandler JUTException::sPostUserCallback;
JUTExceptionUserCallback JUTException::sPreUserCallback;
JUTExceptionUserCallback JUTException::sPostUserCallback;
/* 802C4AC8-802C4BAC .text __ct__12JUTExceptionFP14JUTDirectPrint */
JUTException::JUTException(JUTDirectPrint* directPrint) : JKRThread(0x4000, 0x10, 0) {
mDirectPrint = directPrint;
OSSetErrorHandler(EXCEPTION_DSI, errorHandler);
OSSetErrorHandler(EXCEPTION_ISI, errorHandler);
OSSetErrorHandler(EXCEPTION_PROGRAM, errorHandler);
OSSetErrorHandler(EXCEPTION_ALIGNMENT, errorHandler);
OSSetErrorHandler(EXCEPTION_MEMORY_PROTECTION, errorHandler);
OSSetErrorHandler(EXCEPTION_DSI, (OSErrorHandler)errorHandler);
OSSetErrorHandler(EXCEPTION_ISI, (OSErrorHandler)errorHandler);
OSSetErrorHandler(EXCEPTION_PROGRAM, (OSErrorHandler)errorHandler);
OSSetErrorHandler(EXCEPTION_ALIGNMENT, (OSErrorHandler)errorHandler);
OSSetErrorHandler(EXCEPTION_MEMORY_PROTECTION, (OSErrorHandler)errorHandler);
setFPException(0);
sPreUserCallback = NULL;
@@ -96,7 +96,7 @@ void* JUTException::run() {
while (true) {
OSReceiveMessage(&sMessageQueue, &message, OS_MESSAGE_BLOCK);
CallbackObject* cb = (CallbackObject*)message;
OSErrorHandler callback = cb->callback;
JUTExceptionUserCallback callback = cb->callback;
u16 error = cb->error;
OSContext* context = cb->context;
int r24 = cb->param_3;
@@ -214,7 +214,7 @@ void JUTException::errorHandler(OSError error, OSContext* context, u32 param_3,
void JUTException::setFPException(u32 fpscr_enable_bits) {
__OSFpscrEnableBits = fpscr_enable_bits;
if (fpscr_enable_bits) {
OSSetErrorHandler(EXCEPTION_FLOATING_POINT_EXCEPTION, errorHandler);
OSSetErrorHandler(EXCEPTION_FLOATING_POINT_EXCEPTION, (OSErrorHandler)errorHandler);
} else {
OSSetErrorHandler(EXCEPTION_FLOATING_POINT_EXCEPTION, NULL);
}
@@ -802,15 +802,15 @@ void JUTException::createFB() {
}
/* 802C6868-802C6878 .text setPreUserCallback__12JUTExceptionFPFUsP9OSContextUlUl_v */
OSErrorHandler JUTException::setPreUserCallback(OSErrorHandler callback) {
OSErrorHandler previous = sPreUserCallback;
JUTExceptionUserCallback JUTException::setPreUserCallback(JUTExceptionUserCallback callback) {
JUTExceptionUserCallback previous = sPreUserCallback;
sPreUserCallback = callback;
return previous;
}
/* 802C6878-802C6888 .text setPostUserCallback__12JUTExceptionFPFUsP9OSContextUlUl_v */
OSErrorHandler JUTException::setPostUserCallback(OSErrorHandler callback) {
OSErrorHandler previous = sPostUserCallback;
JUTExceptionUserCallback JUTException::setPostUserCallback(JUTExceptionUserCallback callback) {
JUTExceptionUserCallback previous = sPostUserCallback;
sPostUserCallback = callback;
return previous;
}
+4 -4
View File
@@ -12,8 +12,8 @@ extern volatile u32 __OSLastInterruptSrr0;
extern volatile s16 __OSLastInterrupt;
extern volatile OSTime __OSLastInterruptTime;
extern OSErrorHandlerEx __OSErrorTable[EXCEPTION_MAX];
OSErrorHandlerEx __OSErrorTable[EXCEPTION_MAX];
extern OSErrorHandler __OSErrorTable[EXCEPTION_MAX];
OSErrorHandler __OSErrorTable[EXCEPTION_MAX];
#define FPSCR_ENABLE (FPSCR_VE | FPSCR_OE | FPSCR_UE | FPSCR_ZE | FPSCR_XE)
u32 __OSFpscrEnableBits = FPSCR_ENABLE;
@@ -53,12 +53,12 @@ __declspec(weak) void OSPanic(const char* file, s32 line, const char* msg, ...)
}
OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler) {
OSErrorHandlerEx oldHandler;
OSErrorHandler oldHandler;
BOOL enabled;
enabled = OSDisableInterrupts();
oldHandler = __OSErrorTable[error];
__OSErrorTable[error] = (OSErrorHandlerEx)handler;
__OSErrorTable[error] = (OSErrorHandler)handler;
if (error == EXCEPTION_FLOATING_POINT_EXCEPTION) {
u32 msr;
+1 -1
View File
@@ -6,7 +6,7 @@
vu16 __MEMRegs[64] AT_ADDRESS(0xCC004000);
extern OSErrorHandlerEx __OSErrorTable[16];
extern OSErrorHandler __OSErrorTable[EXCEPTION_MAX];
u32 OSGetConsoleSimulatedMemSize() {
return *(u32*)(OSPhysicalToCached(0x00F0));
+1 -1
View File
@@ -78,7 +78,7 @@ volatile OSContext* __OSFPUContext AT_ADDRESS(OS_BASE_CACHED + 0x00D8);
// External References:
//
extern OSErrorHandlerEx __OSErrorTable[17];
extern OSErrorHandler __OSErrorTable[EXCEPTION_MAX];
extern u32 __OSFpscrEnableBits;
void _epilog();
+1 -1
View File
@@ -258,7 +258,7 @@ void myExceptionCallback(OSError, OSContext*, u32, u32) {
}
/* 8000C3C0-8000C70C .text fault_callback_scroll__FUsP9OSContextUlUl */
void fault_callback_scroll(u16, OSContext* p_context, u32, u32) {
void fault_callback_scroll(OSError, OSContext* p_context, u32, u32) {
JUTException* manager = JUTException::getManager();
JUTConsole* exConsole = manager->getConsole();