summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp b/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp
index 03b3c7487d..9843f06d09 100644
--- a/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp
+++ b/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp
@@ -223,10 +223,16 @@ void JitArm64::GenerateAsm()
// We can safely assume that downcount >= 1
B(dispatcher_no_check);
- dispatcher_exit = GetCodePtr();
- SetJumpTarget(exit);
if (enable_debugging)
+ {
SetJumpTarget(debug_exit);
+ static_assert(PPCSTATE_OFF(pc) <= 252);
+ static_assert(PPCSTATE_OFF(pc) + 4 == PPCSTATE_OFF(npc));
+ STP(IndexType::Signed, DISPATCHER_PC, DISPATCHER_PC, PPC_REG, PPCSTATE_OFF(pc));
+ }
+
+ dispatcher_exit = GetCodePtr();
+ SetJumpTarget(exit);
// Reset the stack pointer, since the BLR optimization may have pushed things onto the stack
// without popping them.