psxinterpreter: tons of new exceptions
[pcsx_rearmed.git] / libpcsxcore / r3000a.h
index 229b14a..bdb8d27 100644 (file)
@@ -29,6 +29,19 @@ extern "C" {
 #include "psxcounters.h"
 #include "psxbios.h"
 
+enum R3000Aexception {
+       R3000E_Int = 0,      // Interrupt
+       R3000E_AdEL = 4,     // Address error (on load/I-fetch)
+       R3000E_AdES = 5,     // Address error (on store)
+       R3000E_IBE = 6,      // Bus error (instruction fetch)
+       R3000E_DBE = 7,      // Bus error (data load)
+       R3000E_Syscall = 8,  // syscall instruction
+       R3000E_Bp = 9,       // Breakpoint - a break instruction
+       R3000E_RI = 10,      // reserved instruction
+       R3000E_CpU = 11,     // Co-Processor unusable
+       R3000E_Ov = 12       // arithmetic overflow
+};
+
 enum R3000Anote {
        R3000ACPU_NOTIFY_CACHE_ISOLATED = 0,
        R3000ACPU_NOTIFY_CACHE_UNISOLATED = 1,
@@ -36,11 +49,16 @@ enum R3000Anote {
        R3000ACPU_NOTIFY_AFTER_LOAD,
 };
 
+enum blockExecCaller {
+       EXEC_CALLER_BOOT,
+       EXEC_CALLER_HLE,
+};
+
 typedef struct {
        int  (*Init)();
        void (*Reset)();
-       void (*Execute)();              /* executes up to a break */
-       void (*ExecuteBlock)(); /* executes up to a jump */
+       void (*Execute)();
+       void (*ExecuteBlock)(enum blockExecCaller caller); /* executes up to a jump */
        void (*Clear)(u32 Addr, u32 Size);
        void (*Notify)(enum R3000Anote note, void *data);
        void (*ApplyConfig)();