From 9f3761879ae22618070f9480ea2e9c0b721860ef Mon Sep 17 00:00:00 2001 From: Nav Date: Thu, 1 Jun 2023 22:16:05 +0100 Subject: [PATCH] Used TC atomic session in GDB ReadRegisters handler, to prevent Insight causing delays in the GDB session. --- .../Gdb/AvrGdb/CommandPackets/ReadRegisters.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/DebugServer/Gdb/AvrGdb/CommandPackets/ReadRegisters.cpp b/src/DebugServer/Gdb/AvrGdb/CommandPackets/ReadRegisters.cpp index bdcdf56e..c7f91a7e 100644 --- a/src/DebugServer/Gdb/AvrGdb/CommandPackets/ReadRegisters.cpp +++ b/src/DebugServer/Gdb/AvrGdb/CommandPackets/ReadRegisters.cpp @@ -4,6 +4,7 @@ #include "src/DebugServer/Gdb/AvrGdb/TargetDescriptor.hpp" #include "src/Targets/TargetRegister.hpp" +#include "src/Targets/TargetMemory.hpp" #include "src/Services/StringService.hpp" #include "src/Logger/Logger.hpp" @@ -44,7 +45,15 @@ namespace Bloom::DebugServer::Gdb::AvrGdb::CommandPackets } } - auto registerSet = targetControllerService.readRegisters(descriptorIds); + Targets::TargetRegisters registerSet; + Targets::TargetProgramCounter programCounter; + + { + const auto atomicSession = targetControllerService.makeAtomicSession(); + + registerSet = targetControllerService.readRegisters(descriptorIds); + programCounter = targetControllerService.getProgramCounter(); + } /* * Sort each register by their respective GDB register ID - this will leave us with a collection of @@ -81,7 +90,6 @@ namespace Bloom::DebugServer::Gdb::AvrGdb::CommandPackets } // Finally, include the program counter (which GDB expects to reside at the end) - const auto programCounter = targetControllerService.getProgramCounter(); registers.insert(registers.end(), static_cast(programCounter)); registers.insert(registers.end(), static_cast(programCounter >> 8)); registers.insert(registers.end(), static_cast(programCounter >> 16));