summaryrefslogtreecommitdiffstats
path: root/src/core/arm
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2019-04-06 05:46:37 +0200
committerGitHub <noreply@github.com>2019-04-06 05:46:37 +0200
commit54c7e8e40ed44a7331f5b8bf88bea866078fda51 (patch)
tree9e116ce7842b417ac2c8998a682efedb52ca6254 /src/core/arm
parentMerge pull request #2346 from lioncash/header (diff)
parentgdbstub: Fix some bugs in IsMemoryBreak() and ServeBreak. Add workaround to let watchpoints break into GDB. (#4651) (diff)
downloadyuzu-54c7e8e40ed44a7331f5b8bf88bea866078fda51.tar
yuzu-54c7e8e40ed44a7331f5b8bf88bea866078fda51.tar.gz
yuzu-54c7e8e40ed44a7331f5b8bf88bea866078fda51.tar.bz2
yuzu-54c7e8e40ed44a7331f5b8bf88bea866078fda51.tar.lz
yuzu-54c7e8e40ed44a7331f5b8bf88bea866078fda51.tar.xz
yuzu-54c7e8e40ed44a7331f5b8bf88bea866078fda51.tar.zst
yuzu-54c7e8e40ed44a7331f5b8bf88bea866078fda51.zip
Diffstat (limited to 'src/core/arm')
-rw-r--r--src/core/arm/unicorn/arm_unicorn.cpp5
-rw-r--r--src/core/arm/unicorn/arm_unicorn.h2
2 files changed, 4 insertions, 3 deletions
diff --git a/src/core/arm/unicorn/arm_unicorn.cpp b/src/core/arm/unicorn/arm_unicorn.cpp
index a542a098b..27309280c 100644
--- a/src/core/arm/unicorn/arm_unicorn.cpp
+++ b/src/core/arm/unicorn/arm_unicorn.cpp
@@ -192,12 +192,13 @@ void ARM_Unicorn::ExecuteInstructions(int num_instructions) {
CHECKED(uc_emu_start(uc, GetPC(), 1ULL << 63, 0, num_instructions));
core_timing.AddTicks(num_instructions);
if (GDBStub::IsServerEnabled()) {
- if (last_bkpt_hit) {
+ if (last_bkpt_hit && last_bkpt.type == GDBStub::BreakpointType::Execute) {
uc_reg_write(uc, UC_ARM64_REG_PC, &last_bkpt.address);
}
+
Kernel::Thread* thread = Kernel::GetCurrentThread();
SaveContext(thread->GetContext());
- if (last_bkpt_hit || GDBStub::GetCpuStepFlag()) {
+ if (last_bkpt_hit || GDBStub::IsMemoryBreak() || GDBStub::GetCpuStepFlag()) {
last_bkpt_hit = false;
GDBStub::Break();
GDBStub::SendTrap(thread, 5);
diff --git a/src/core/arm/unicorn/arm_unicorn.h b/src/core/arm/unicorn/arm_unicorn.h
index f313b7394..1e44f0736 100644
--- a/src/core/arm/unicorn/arm_unicorn.h
+++ b/src/core/arm/unicorn/arm_unicorn.h
@@ -50,7 +50,7 @@ private:
uc_engine* uc{};
Timing::CoreTiming& core_timing;
GDBStub::BreakpointAddress last_bkpt{};
- bool last_bkpt_hit;
+ bool last_bkpt_hit = false;
};
} // namespace Core