diff --git a/Common/ArmEmitter.cpp b/Common/ArmEmitter.cpp index 00cf93de3f..fd329a10a1 100644 --- a/Common/ArmEmitter.cpp +++ b/Common/ArmEmitter.cpp @@ -190,9 +190,7 @@ void ARMXEmitter::SetCodePtr(u8 *ptr) { code = ptr; startcode = code; -#ifdef IOS lastCacheFlushEnd = ptr; -#endif } const u8 *ARMXEmitter::GetCodePtr() const @@ -236,6 +234,7 @@ void ARMXEmitter::FlushIcacheSection(u8 *start, u8 *end) #elif defined(BLACKBERRY) msync(start, end - start, MS_SYNC | MS_INVALIDATE_ICACHE); #elif defined(IOS) + // Header file says this is equivalent to: sys_icache_invalidate(start, end - start); sys_cache_control(kCacheFunctionPrepareForExecution, start, end - start); #elif !defined(_WIN32) __builtin___clear_cache(start, end); diff --git a/Core/MIPS/ARM/ArmJit.cpp b/Core/MIPS/ARM/ArmJit.cpp index 63919f8906..a45ce2c732 100644 --- a/Core/MIPS/ARM/ArmJit.cpp +++ b/Core/MIPS/ARM/ArmJit.cpp @@ -265,9 +265,6 @@ const u8 *Jit::DoJit(u32 em_address, ArmJitBlock *b) } } #endif -#ifdef IOS - WriteProtect(); -#endif b->codeSize = GetCodePtr() - b->normalEntry; @@ -278,6 +275,9 @@ const u8 *Jit::DoJit(u32 em_address, ArmJitBlock *b) } #endif AlignCode16(); +#ifdef IOS + WriteProtect(); +#endif // Don't forget to zap the instruction cache! FlushIcache();