diff --git a/mupen64plus-core/src/device/r4300/cached_interp.c b/mupen64plus-core/src/device/r4300/cached_interp.c index dc24c23..2736592 100644 --- a/mupen64plus-core/src/device/r4300/cached_interp.c +++ b/mupen64plus-core/src/device/r4300/cached_interp.c @@ -738,6 +738,10 @@ static uint32_t update_invalid_addr(struct r4300_core* r4300, uint32_t addr) invalid_code[(beg_paddr+0xffc)>>12] = 1; } } + else + { + cp0_itm_interlock(r4300); + } return paddr; } } diff --git a/mupen64plus-core/src/device/r4300/icache.c b/mupen64plus-core/src/device/r4300/icache.c index 394d166..b7b2476 100644 --- a/mupen64plus-core/src/device/r4300/icache.c +++ b/mupen64plus-core/src/device/r4300/icache.c @@ -76,11 +76,7 @@ void icache_step(struct r4300_core* r4300, uint32_t address) return; do_SP_Task(r4300->sp); cp0_base_cycle(r4300); - if (r4300_translate_address(r4300, &address, &r4300->cached, 2)) - { - cp0_itm_interlock(r4300); - return; - } + r4300_translate_address(r4300, &address, &r4300->cached, 2); if (r4300->cached) { struct instcache *line = &r4300->icache[(address >> 5) & UINT32_C(0x1FF)];