From c7324e3333c52f61738136896baa5348bccad11e Mon Sep 17 00:00:00 2001 From: Stenzek Date: Thu, 30 Jul 2026 21:28:33 +1000 Subject: [PATCH] GDBServer: Preserve unchanged resume state Avoid calling SetPC when an address-qualified continue or single-step names the CPU's current PC. The next instruction is already prefetched at that address, and rebuilding the pipeline would incorrectly discard pending load and branch-delay state. --- src/core/gdb_server.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/gdb_server.cpp b/src/core/gdb_server.cpp index 70021944d..7ba4811c9 100644 --- a/src/core/gdb_server.cpp +++ b/src/core/gdb_server.cpp @@ -316,7 +316,7 @@ bool GDBServer::Cmd$c(ClientSocket* client, std::string_view data) } client->SendAck(); - if (address.has_value()) + if (address.has_value() && address.value() != CPU::g_state.pc) CPU::SetPC(address.value()); System::PauseSystem(false); return true; @@ -334,7 +334,7 @@ bool GDBServer::Cmd$s(ClientSocket* client, std::string_view data) } client->SendAck(); - if (address.has_value()) + if (address.has_value() && address.value() != CPU::g_state.pc) CPU::SetPC(address.value()); System::SingleStepCPU(); return true;