diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp index 97284efa4c..835cfc74df 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp @@ -420,11 +420,13 @@ void ArmDynarmic32::SignalInterrupt(Kernel::KThread* thread) { } void ArmDynarmic32::ClearInstructionCache() { + m_cb->last_code_addr = u64(-1); m_jit->ClearCache(); } void ArmDynarmic32::InvalidateCacheRange(u64 addr, std::size_t size) { - m_jit->InvalidateCacheRange(static_cast(addr), size); + m_cb->last_code_addr = u64(-1); + m_jit->InvalidateCacheRange(u32(addr), size); } } // namespace Core diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp index 0b7f6874a7..de8773c6a3 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp @@ -447,10 +447,12 @@ void ArmDynarmic64::SignalInterrupt(Kernel::KThread* thread) { } void ArmDynarmic64::ClearInstructionCache() { + m_cb->last_code_addr = u64(-1); m_jit->ClearCache(); } void ArmDynarmic64::InvalidateCacheRange(u64 addr, std::size_t size) { + m_cb->last_code_addr = u64(-1); m_jit->InvalidateCacheRange(addr, size); }