fix a mistake in big endian conversion
[pcsx_rearmed.git] / libpcsxcore / lightrec / plugin.c
index e87396d..703726e 100644 (file)
@@ -20,7 +20,7 @@
 #include "../r3000a.h"
 #include "../psxinterpreter.h"
 #include "../psxhle.h"
-#include "../new_dynarec/events.h"
+#include "../psxevents.h"
 
 #include "../frontend/main.h"
 
@@ -492,6 +492,9 @@ static void lightrec_plugin_execute_internal(bool block_only)
 
        regs = lightrec_get_registers(lightrec_state);
        gen_interupt((psxCP0Regs *)regs->cp0);
+       if (!block_only && stop)
+               return;
+
        cycles_pcsx = next_interupt - psxRegs.cycle;
        assert((s32)cycles_pcsx > 0);
 
@@ -525,6 +528,8 @@ static void lightrec_plugin_execute_internal(bool block_only)
 
                if (flags & LIGHTREC_EXIT_SYSCALL)
                        psxException(R3000E_Syscall << 2, 0, (psxCP0Regs *)regs->cp0);
+               if (flags & LIGHTREC_EXIT_BREAK)
+                       psxException(R3000E_Bp << 2, 0, (psxCP0Regs *)regs->cp0);
                else if (flags & LIGHTREC_EXIT_UNKNOWN_OP) {
                        u32 op = intFakeFetch(psxRegs.pc);
                        u32 hlec = op & 0x03ffffff;
@@ -547,8 +552,6 @@ static void lightrec_plugin_execute_internal(bool block_only)
 
 static void lightrec_plugin_execute(void)
 {
-       extern int stop;
-
        while (!stop)
                lightrec_plugin_execute_internal(false);
 }