#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,
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)();