From 8933fe599c5ae7127c6cd3de707eb73f3d79d117 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 27 Jan 2018 18:21:11 +1000 Subject: [PATCH] Jit64: Update PC before slowmem reads as well as writes --- Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.cpp b/Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.cpp index cdc91294a9..9c88cc8726 100644 --- a/Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.cpp +++ b/Source/Core/Core/PowerPC/Jit64Common/EmuCodeBlock.cpp @@ -376,6 +376,10 @@ void EmuCodeBlock::SafeLoadToReg(X64Reg reg_value, const Gen::OpArg& opAddress, exit = J(true); SetJumpTarget(slow); } + + // Helps external systems know which instruction triggered the read. + MOV(32, PPCSTATE(pc), Imm32(g_jit->js.compilerPC)); + size_t rsp_alignment = (flags & SAFE_LOADSTORE_NO_PROLOG) ? 8 : 0; ABI_PushRegistersAndAdjustStack(registersInUse, rsp_alignment); switch (accessSize) @@ -436,6 +440,9 @@ void EmuCodeBlock::SafeLoadToRegImmediate(X64Reg reg_value, u32 address, int acc return; } + // Helps external systems know which instruction triggered the read. + MOV(32, PPCSTATE(pc), Imm32(g_jit->js.compilerPC)); + // Fall back to general-case code. ABI_PushRegistersAndAdjustStack(registersInUse, 0); switch (accessSize)