X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fnew_dynarec%2Femu_if.c;h=89716fa0f51e4f0ba73867f53ebff363eea43e78;hb=277718fa66c96f64360b2c97a5dfa3ef3e6f1711;hp=50819e4b9b83c34127b6a36b2a8a58648386627a;hpb=6d75addfea5544b926d3924b1bd1e1d8ce9ffdb4;p=pcsx_rearmed.git diff --git a/libpcsxcore/new_dynarec/emu_if.c b/libpcsxcore/new_dynarec/emu_if.c index 50819e4b..89716fa0 100644 --- a/libpcsxcore/new_dynarec/emu_if.c +++ b/libpcsxcore/new_dynarec/emu_if.c @@ -28,7 +28,7 @@ void pcsx_mtc0(u32 reg, u32 val) evprintf("MTC0 %d #%x @%08x %u\n", reg, val, psxRegs.pc, psxRegs.cycle); MTC0(&psxRegs, reg, val); gen_interupt(&psxRegs.CP0); - if (psxRegs.CP0.n.Cause & psxRegs.CP0.n.Status & 0x0300) // possible sw irq + if (psxRegs.CP0.n.Cause & psxRegs.CP0.n.SR & 0x0300) // possible sw irq pending_exception = 1; } @@ -265,6 +265,17 @@ static void ari64_execute() } } +static void ari64_execute_block(enum blockExecCaller caller) +{ + if (caller == EXEC_CALLER_BOOT) + stop++; + + ari64_execute_until(); + + if (caller == EXEC_CALLER_BOOT) + stop--; +} + static void ari64_clear(u32 addr, u32 size) { size *= 4; /* PCSX uses DMA units (words) */ @@ -315,7 +326,7 @@ R3000Acpu psxRec = { ari64_init, ari64_reset, ari64_execute, - ari64_execute_until, + ari64_execute_block, ari64_clear, ari64_notify, ari64_apply_config, @@ -326,7 +337,7 @@ R3000Acpu psxRec = { unsigned int address; int pending_exception, stop; -unsigned int next_interupt; +u32 next_interupt; int new_dynarec_did_compile; int cycle_multiplier_old; int new_dynarec_hacks_pergame;