This commit is contained in:
Nav
2024-12-07 16:48:06 +00:00
parent cbfbd9f4b8
commit 1477719264
4 changed files with 25 additions and 5 deletions

View File

@@ -493,11 +493,11 @@ namespace DebugServer::Gdb
return std::make_unique<CommandPackets::WriteRegisterMonitor>(std::move(*(monitorCommand.release())));
}
#ifndef EXCLUDE_INSIGHT
#ifndef EXCLUDE_INSIGHT
if (monitorCommand->command.find("insight") == 0) {
return std::make_unique<CommandPackets::ActivateInsight>(std::move(*(monitorCommand.release())));
}
#endif
#endif
return monitorCommand;
}

View File

@@ -25,6 +25,8 @@
#include "TriggerModule/Registers/TriggerData1.hpp"
#include "TriggerModule/Registers/MatchControl.hpp"
#include "src/Helpers/Array.hpp"
#include "src/Exceptions/Exception.hpp"
#include "src/Exceptions/InvalidConfig.hpp"
#include "src/Exceptions/InternalFatalErrorException.hpp"
@@ -526,9 +528,10 @@ namespace DebugToolDrivers::Protocols::RiscVDebugSpec
return;
}
this->writeProgramBuffer(
std::vector<Opcodes::Opcode>(this->debugModuleDescriptor.programBufferSize, Opcodes::Ebreak)
);
static constexpr auto clearedBuffer = Array::repeat<DebugTranslator::MAX_PROGRAM_BUFFER_SIZE>(Opcodes::Ebreak);
assert(this->debugModuleDescriptor.programBufferSize <= DebugTranslator::MAX_PROGRAM_BUFFER_SIZE);
this->writeProgramBuffer({clearedBuffer.begin(), this->debugModuleDescriptor.programBufferSize});
}
void DebugTranslator::executeFenceProgram() {

View File

@@ -107,6 +107,7 @@ namespace DebugToolDrivers::Protocols::RiscVDebugSpec
private:
static constexpr auto DEBUG_MODULE_RESPONSE_DELAY = std::chrono::microseconds{10};
static constexpr auto WORD_BYTE_SIZE = ::Targets::TargetMemorySize{4};
static constexpr auto MAX_PROGRAM_BUFFER_SIZE = std::uint8_t{16};
DebugTransportModuleInterface& dtmInterface;
const DebugTranslatorConfig& config;

16
src/Helpers/Array.hpp Normal file
View File

@@ -0,0 +1,16 @@
#pragma once
#include <array>
#include <concepts>
#include <cstddef>
class Array
{
public:
template<std::size_t size, std::semiregular ValueType>
static constexpr auto repeat(const ValueType& value) {
auto output = std::array<ValueType, size>{};
output.fill(value);
return output;
}
};