summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorskidau <skidau@gmail.com>2014-10-23 13:31:17 +1100
committerskidau <skidau@gmail.com>2014-10-23 13:31:17 +1100
commit684cb658e2dc69e30792dd711260b610d8d0aede (patch)
treefce2bad11dead36bfae723fce261f40709f34b1f /Source
parent9836ce23e65bea4859a249b6febcafbf4b6a6b30 (diff)
parent77da164fe29bdbfdf9d7abf4a173e74fbfb6ae83 (diff)
Merge pull request #1354 from Sonicadvance1/ARMv7-stepping
Adds support for stepping in the ARMv7 JIT.
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/PowerPC/JitArm32/JitAsm.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/Source/Core/Core/PowerPC/JitArm32/JitAsm.cpp b/Source/Core/Core/PowerPC/JitArm32/JitAsm.cpp
index 60fa7199c2..6bbbefb744 100644
--- a/Source/Core/Core/PowerPC/JitArm32/JitAsm.cpp
+++ b/Source/Core/Core/PowerPC/JitArm32/JitAsm.cpp
@@ -106,6 +106,18 @@ void JitArmAsmRoutineManager::Generate()
// IMPORTANT - We jump on negative, not carry!!!
FixupBranch bail = B_CC(CC_MI);
+ FixupBranch dbg_exit;
+ if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging)
+ {
+ MOVI2R(R0, (u32)PowerPC::GetStatePtr());
+ LDR(R0, R0);
+ TST(R0, PowerPC::CPU_STEPPING);
+ FixupBranch not_stepping = B_CC(CC_EQ);
+ // XXX: Check for breakpoints
+ dbg_exit = B();
+ SetJumpTarget(not_stepping);
+ }
+
SetJumpTarget(skipToRealDispatcher);
dispatcherNoCheck = GetCodePtr();
@@ -163,6 +175,8 @@ void JitArmAsmRoutineManager::Generate()
B(dispatcher);
SetJumpTarget(Exit);
+ if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging)
+ SetJumpTarget(dbg_exit);
ADD(_SP, _SP, 4);