From 9bfff0d461eb36e25fdc25432bdf8956dc2213b0 Mon Sep 17 00:00:00 2001 From: degasus Date: Sat, 15 Aug 2015 10:26:59 +0200 Subject: [PATCH] JitArm64: Fix jit clearing We have to reset m_lastCacheFlushEnd on clearing. --- Source/Core/Common/Arm64Emitter.cpp | 10 +++++++--- Source/Core/Common/Arm64Emitter.h | 1 + Source/Core/Core/PowerPC/JitArm64/Jit.h | 6 +++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Source/Core/Common/Arm64Emitter.cpp b/Source/Core/Common/Arm64Emitter.cpp index c693b71471..a94b2ee11f 100644 --- a/Source/Core/Common/Arm64Emitter.cpp +++ b/Source/Core/Common/Arm64Emitter.cpp @@ -268,11 +268,15 @@ bool IsImmLogical(uint64_t value, unsigned int width, unsigned int *n, unsigned return true; } -void ARM64XEmitter::SetCodePtr(u8* ptr) +void ARM64XEmitter::SetCodePtrUnsafe(u8* ptr) { m_code = ptr; - if (!m_lastCacheFlushEnd) - m_lastCacheFlushEnd = ptr; +} + +void ARM64XEmitter::SetCodePtr(u8* ptr) +{ + SetCodePtrUnsafe(ptr); + m_lastCacheFlushEnd = ptr; } const u8* ARM64XEmitter::GetCodePtr() const diff --git a/Source/Core/Common/Arm64Emitter.h b/Source/Core/Common/Arm64Emitter.h index c4ce6ab253..ec3da4cf64 100644 --- a/Source/Core/Common/Arm64Emitter.h +++ b/Source/Core/Common/Arm64Emitter.h @@ -378,6 +378,7 @@ public: } void SetCodePtr(u8* ptr); + void SetCodePtrUnsafe(u8* ptr); void ReserveCodeSpace(u32 bytes); const u8* AlignCode16(); const u8* AlignCodePage(); diff --git a/Source/Core/Core/PowerPC/JitArm64/Jit.h b/Source/Core/Core/PowerPC/JitArm64/Jit.h index d72e5aa9de..c20a1a9fea 100644 --- a/Source/Core/Core/PowerPC/JitArm64/Jit.h +++ b/Source/Core/Core/PowerPC/JitArm64/Jit.h @@ -227,13 +227,13 @@ private: void SwitchToFarCode() { nearcode = GetWritableCodePtr(); - SetCodePtr(farcode.GetWritableCodePtr()); + SetCodePtrUnsafe(farcode.GetWritableCodePtr()); } void SwitchToNearCode() { - farcode.SetCodePtr(GetWritableCodePtr()); - SetCodePtr(nearcode); + farcode.SetCodePtrUnsafe(GetWritableCodePtr()); + SetCodePtrUnsafe(nearcode); } // Dump a memory range of code