summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt/Debugger/CodeWidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/DolphinQt/Debugger/CodeWidget.cpp')
-rw-r--r--Source/Core/DolphinQt/Debugger/CodeWidget.cpp38
1 files changed, 21 insertions, 17 deletions
diff --git a/Source/Core/DolphinQt/Debugger/CodeWidget.cpp b/Source/Core/DolphinQt/Debugger/CodeWidget.cpp
index 02286fa8b1..1f82c969de 100644
--- a/Source/Core/DolphinQt/Debugger/CodeWidget.cpp
+++ b/Source/Core/DolphinQt/Debugger/CodeWidget.cpp
@@ -442,12 +442,13 @@ void CodeWidget::Step()
Common::Event sync_event;
- PowerPC::CoreMode old_mode = PowerPC::GetMode();
- PowerPC::SetMode(PowerPC::CoreMode::Interpreter);
- PowerPC::breakpoints.ClearAllTemporary();
+ auto& power_pc = m_system.GetPowerPC();
+ PowerPC::CoreMode old_mode = power_pc.GetMode();
+ power_pc.SetMode(PowerPC::CoreMode::Interpreter);
+ power_pc.GetBreakPoints().ClearAllTemporary();
cpu.StepOpcode(&sync_event);
sync_event.WaitFor(std::chrono::milliseconds(20));
- PowerPC::SetMode(old_mode);
+ power_pc.SetMode(old_mode);
Core::DisplayMessage(tr("Step successful!").toStdString(), 2000);
// Will get a UpdateDisasmDialog(), don't update the GUI here.
}
@@ -466,8 +467,9 @@ void CodeWidget::StepOver()
if (inst.LK)
{
- PowerPC::breakpoints.ClearAllTemporary();
- PowerPC::breakpoints.Add(m_system.GetPPCState().pc + 4, true);
+ auto& breakpoints = m_system.GetPowerPC().GetBreakPoints();
+ breakpoints.ClearAllTemporary();
+ breakpoints.Add(m_system.GetPPCState().pc + 4, true);
cpu.EnableStepping(false);
Core::DisplayMessage(tr("Step over in progress...").toStdString(), 2000);
}
@@ -501,14 +503,16 @@ void CodeWidget::StepOut()
using clock = std::chrono::steady_clock;
clock::time_point timeout = clock::now() + std::chrono::seconds(5);
- auto& ppc_state = m_system.GetPPCState();
+ auto& power_pc = m_system.GetPowerPC();
+ auto& ppc_state = power_pc.GetPPCState();
+ auto& breakpoints = power_pc.GetBreakPoints();
{
Core::CPUThreadGuard guard(m_system);
- PowerPC::breakpoints.ClearAllTemporary();
+ breakpoints.ClearAllTemporary();
- PowerPC::CoreMode old_mode = PowerPC::GetMode();
- PowerPC::SetMode(PowerPC::CoreMode::Interpreter);
+ PowerPC::CoreMode old_mode = power_pc.GetMode();
+ power_pc.SetMode(PowerPC::CoreMode::Interpreter);
// Loop until either the current instruction is a return instruction with no Link flag
// or a breakpoint is detected so it can step at the breakpoint. If the PC is currently
@@ -518,7 +522,7 @@ void CodeWidget::StepOut()
{
if (WillInstructionReturn(m_system, inst))
{
- PowerPC::SingleStep();
+ power_pc.SingleStep();
break;
}
@@ -528,24 +532,24 @@ void CodeWidget::StepOut()
u32 next_pc = ppc_state.pc + 4;
do
{
- PowerPC::SingleStep();
+ power_pc.SingleStep();
} while (ppc_state.pc != next_pc && clock::now() < timeout &&
- !PowerPC::breakpoints.IsAddressBreakPoint(ppc_state.pc));
+ !breakpoints.IsAddressBreakPoint(ppc_state.pc));
}
else
{
- PowerPC::SingleStep();
+ power_pc.SingleStep();
}
inst = PowerPC::MMU::HostRead_Instruction(guard, ppc_state.pc);
- } while (clock::now() < timeout && !PowerPC::breakpoints.IsAddressBreakPoint(ppc_state.pc));
+ } while (clock::now() < timeout && !breakpoints.IsAddressBreakPoint(ppc_state.pc));
- PowerPC::SetMode(old_mode);
+ power_pc.SetMode(old_mode);
}
emit Host::GetInstance()->UpdateDisasmDialog();
- if (PowerPC::breakpoints.IsAddressBreakPoint(ppc_state.pc))
+ if (breakpoints.IsAddressBreakPoint(ppc_state.pc))
Core::DisplayMessage(tr("Breakpoint encountered! Step out aborted.").toStdString(), 2000);
else if (clock::now() >= timeout)
Core::DisplayMessage(tr("Step out timed out!").toStdString(), 2000);