From be790d08f3e4d0506fbe9e96a92eed6bc32ef0cb Mon Sep 17 00:00:00 2001 From: lizzie Date: Mon, 31 Aug 2026 17:12:45 +0000 Subject: [PATCH] [core/arm/dynarmic] fix ICache invalidate on KPageTable Signed-off-by: lizzie --- src/core/arm/dynarmic/arm_dynarmic_32.cpp | 4 +++- src/core/arm/dynarmic/arm_dynarmic_64.cpp | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) 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); }