Move away from using const references of std::vector<unsigned char> for target memory buffers. Replaced with std::span<const unsigned char> (via TargetMemoryBufferSpan alias)
This commit is contained in:
@@ -10,7 +10,7 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr::CommandFrames::Avr8
|
|||||||
class WriteMemory: public Avr8GenericCommandFrame<std::vector<unsigned char>>
|
class WriteMemory: public Avr8GenericCommandFrame<std::vector<unsigned char>>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
WriteMemory(const Avr8MemoryType& type, std::uint32_t address, const Targets::TargetMemoryBuffer& buffer)
|
WriteMemory(const Avr8MemoryType& type, std::uint32_t address, Targets::TargetMemoryBufferSpan buffer)
|
||||||
: Avr8GenericCommandFrame()
|
: Avr8GenericCommandFrame()
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -745,7 +745,7 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr
|
|||||||
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
TargetMemoryAddress startAddress,
|
TargetMemoryAddress startAddress,
|
||||||
const TargetMemoryBuffer& buffer
|
Targets::TargetMemoryBufferSpan buffer
|
||||||
) {
|
) {
|
||||||
if (memorySegmentDescriptor.type == TargetMemorySegmentType::FLASH) {
|
if (memorySegmentDescriptor.type == TargetMemorySegmentType::FLASH) {
|
||||||
if (this->session.configVariant == Avr8ConfigVariant::XMEGA) {
|
if (this->session.configVariant == Avr8ConfigVariant::XMEGA) {
|
||||||
@@ -1484,7 +1484,7 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr
|
|||||||
void EdbgAvr8Interface::writeMemory(
|
void EdbgAvr8Interface::writeMemory(
|
||||||
Avr8MemoryType type,
|
Avr8MemoryType type,
|
||||||
TargetMemoryAddress startAddress,
|
TargetMemoryAddress startAddress,
|
||||||
const TargetMemoryBuffer& buffer
|
Targets::TargetMemoryBufferSpan buffer
|
||||||
) {
|
) {
|
||||||
if (type == Avr8MemoryType::FUSES && this->session.configVariant == Avr8ConfigVariant::DEBUG_WIRE) {
|
if (type == Avr8MemoryType::FUSES && this->session.configVariant == Avr8ConfigVariant::DEBUG_WIRE) {
|
||||||
throw Exception{"Cannot access AVR fuses via the debugWIRE interface"};
|
throw Exception{"Cannot access AVR fuses via the debugWIRE interface"};
|
||||||
@@ -1548,7 +1548,7 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr
|
|||||||
this->writeMemory(
|
this->writeMemory(
|
||||||
type,
|
type,
|
||||||
startAddress + bytesWritten,
|
startAddress + bytesWritten,
|
||||||
TargetMemoryBuffer{buffer.begin() + bytesWritten, buffer.begin() + bytesWritten + chunkSize}
|
buffer.subspan(bytesWritten, chunkSize)
|
||||||
);
|
);
|
||||||
|
|
||||||
bytesWritten += chunkSize;
|
bytesWritten += chunkSize;
|
||||||
|
|||||||
@@ -259,7 +259,7 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr
|
|||||||
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
Targets::TargetMemoryAddress startAddress,
|
Targets::TargetMemoryAddress startAddress,
|
||||||
const Targets::TargetMemoryBuffer& buffer
|
Targets::TargetMemoryBufferSpan buffer
|
||||||
) override;
|
) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -546,7 +546,11 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr
|
|||||||
* @param address
|
* @param address
|
||||||
* @param buffer
|
* @param buffer
|
||||||
*/
|
*/
|
||||||
void writeMemory(Avr8MemoryType type, Targets::TargetMemoryAddress address, const Targets::TargetMemoryBuffer& buffer);
|
void writeMemory(
|
||||||
|
Avr8MemoryType type,
|
||||||
|
Targets::TargetMemoryAddress address,
|
||||||
|
Targets::TargetMemoryBufferSpan buffer
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches the current target state.
|
* Fetches the current target state.
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ namespace DebugToolDrivers::Protocols::RiscVDebugSpec
|
|||||||
using ::Targets::TargetMemoryAddressRange;
|
using ::Targets::TargetMemoryAddressRange;
|
||||||
using ::Targets::TargetMemorySize;
|
using ::Targets::TargetMemorySize;
|
||||||
using ::Targets::TargetMemoryBuffer;
|
using ::Targets::TargetMemoryBuffer;
|
||||||
|
using ::Targets::TargetMemoryBufferSpan;
|
||||||
using ::Targets::TargetStackPointer;
|
using ::Targets::TargetStackPointer;
|
||||||
using ::Targets::TargetAddressSpaceDescriptor;
|
using ::Targets::TargetAddressSpaceDescriptor;
|
||||||
using ::Targets::TargetMemorySegmentDescriptor;
|
using ::Targets::TargetMemorySegmentDescriptor;
|
||||||
@@ -389,7 +390,7 @@ namespace DebugToolDrivers::Protocols::RiscVDebugSpec
|
|||||||
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
TargetMemoryAddress startAddress,
|
TargetMemoryAddress startAddress,
|
||||||
const TargetMemoryBuffer& buffer
|
TargetMemoryBufferSpan buffer
|
||||||
) {
|
) {
|
||||||
using DebugModule::Registers::MemoryAccessControlField;
|
using DebugModule::Registers::MemoryAccessControlField;
|
||||||
|
|
||||||
@@ -799,7 +800,7 @@ namespace DebugToolDrivers::Protocols::RiscVDebugSpec
|
|||||||
|
|
||||||
void DebugTranslator::writeMemoryViaAbstractCommand(
|
void DebugTranslator::writeMemoryViaAbstractCommand(
|
||||||
Targets::TargetMemoryAddress startAddress,
|
Targets::TargetMemoryAddress startAddress,
|
||||||
const TargetMemoryBuffer& buffer
|
Targets::TargetMemoryBufferSpan buffer
|
||||||
) {
|
) {
|
||||||
using DebugModule::Registers::MemoryAccessControlField;
|
using DebugModule::Registers::MemoryAccessControlField;
|
||||||
|
|
||||||
@@ -814,7 +815,7 @@ namespace DebugToolDrivers::Protocols::RiscVDebugSpec
|
|||||||
.commandType = AbstractCommandRegister::CommandType::MEMORY_ACCESS
|
.commandType = AbstractCommandRegister::CommandType::MEMORY_ACCESS
|
||||||
};
|
};
|
||||||
|
|
||||||
for (TargetMemoryAddress offset = 0; offset < buffer.size(); offset += 4) {
|
for (auto offset = TargetMemoryAddress{0}; offset < buffer.size(); offset += 4) {
|
||||||
this->dtmInterface.writeDebugModuleRegister(
|
this->dtmInterface.writeDebugModuleRegister(
|
||||||
RegisterAddress::ABSTRACT_DATA_0,
|
RegisterAddress::ABSTRACT_DATA_0,
|
||||||
static_cast<RegisterValue>(
|
static_cast<RegisterValue>(
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ namespace DebugToolDrivers::Protocols::RiscVDebugSpec
|
|||||||
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
Targets::TargetMemoryAddress startAddress,
|
Targets::TargetMemoryAddress startAddress,
|
||||||
const Targets::TargetMemoryBuffer& buffer
|
Targets::TargetMemoryBufferSpan buffer
|
||||||
) override;
|
) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -146,7 +146,7 @@ namespace DebugToolDrivers::Protocols::RiscVDebugSpec
|
|||||||
);
|
);
|
||||||
void writeMemoryViaAbstractCommand(
|
void writeMemoryViaAbstractCommand(
|
||||||
Targets::TargetMemoryAddress startAddress,
|
Targets::TargetMemoryAddress startAddress,
|
||||||
const Targets::TargetMemoryBuffer& buffer
|
Targets::TargetMemoryBufferSpan buffer
|
||||||
);
|
);
|
||||||
|
|
||||||
std::optional<std::reference_wrapper<const TriggerModule::TriggerDescriptor>> getAvailableTrigger();
|
std::optional<std::reference_wrapper<const TriggerModule::TriggerDescriptor>> getAvailableTrigger();
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ namespace DebugToolDrivers::TargetInterfaces::Microchip::Avr8
|
|||||||
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
Targets::TargetMemoryAddress startAddress,
|
Targets::TargetMemoryAddress startAddress,
|
||||||
const Targets::TargetMemoryBuffer& buffer
|
Targets::TargetMemoryBufferSpan buffer
|
||||||
) = 0;
|
) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace DebugToolDrivers::TargetInterfaces::RiscV
|
|||||||
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
Targets::TargetMemoryAddress startAddress,
|
Targets::TargetMemoryAddress startAddress,
|
||||||
const Targets::TargetMemoryBuffer& buffer
|
Targets::TargetMemoryBufferSpan buffer
|
||||||
) = 0;
|
) = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ namespace Services
|
|||||||
using Targets::TargetMemorySize;
|
using Targets::TargetMemorySize;
|
||||||
using Targets::TargetMemoryAddressRange;
|
using Targets::TargetMemoryAddressRange;
|
||||||
using Targets::TargetMemoryBuffer;
|
using Targets::TargetMemoryBuffer;
|
||||||
|
using Targets::TargetMemoryBufferSpan;
|
||||||
using Targets::TargetStackPointer;
|
using Targets::TargetStackPointer;
|
||||||
|
|
||||||
using Targets::TargetBreakpoint;
|
using Targets::TargetBreakpoint;
|
||||||
@@ -210,14 +211,14 @@ namespace Services
|
|||||||
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
TargetMemoryAddress startAddress,
|
TargetMemoryAddress startAddress,
|
||||||
Targets::TargetMemoryBuffer&& buffer
|
TargetMemoryBufferSpan buffer
|
||||||
) const {
|
) const {
|
||||||
this->commandManager.sendCommandAndWaitForResponse(
|
this->commandManager.sendCommandAndWaitForResponse(
|
||||||
std::make_unique<WriteTargetMemory>(
|
std::make_unique<WriteTargetMemory>(
|
||||||
addressSpaceDescriptor,
|
addressSpaceDescriptor,
|
||||||
memorySegmentDescriptor,
|
memorySegmentDescriptor,
|
||||||
startAddress,
|
startAddress,
|
||||||
std::move(buffer)
|
buffer
|
||||||
),
|
),
|
||||||
this->defaultTimeout,
|
this->defaultTimeout,
|
||||||
this->activeAtomicSessionId
|
this->activeAtomicSessionId
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ namespace Services
|
|||||||
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
Targets::TargetMemoryAddress startAddress,
|
Targets::TargetMemoryAddress startAddress,
|
||||||
Targets::TargetMemoryBuffer&& buffer
|
Targets::TargetMemoryBufferSpan buffer
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -18,18 +18,18 @@ namespace TargetController::Commands
|
|||||||
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor;
|
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor;
|
||||||
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor;
|
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor;
|
||||||
Targets::TargetMemoryAddress startAddress;
|
Targets::TargetMemoryAddress startAddress;
|
||||||
Targets::TargetMemoryBuffer buffer;
|
Targets::TargetMemoryBufferSpan buffer;
|
||||||
|
|
||||||
WriteTargetMemory(
|
WriteTargetMemory(
|
||||||
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
Targets::TargetMemoryAddress startAddress,
|
Targets::TargetMemoryAddress startAddress,
|
||||||
Targets::TargetMemoryBuffer&& buffer
|
Targets::TargetMemoryBufferSpan buffer
|
||||||
)
|
)
|
||||||
: addressSpaceDescriptor(addressSpaceDescriptor)
|
: addressSpaceDescriptor(addressSpaceDescriptor)
|
||||||
, memorySegmentDescriptor(memorySegmentDescriptor)
|
, memorySegmentDescriptor(memorySegmentDescriptor)
|
||||||
, startAddress(startAddress)
|
, startAddress(startAddress)
|
||||||
, buffer(std::move(buffer))
|
, buffer(buffer)
|
||||||
{};
|
{};
|
||||||
|
|
||||||
[[nodiscard]] CommandType getType() const override {
|
[[nodiscard]] CommandType getType() const override {
|
||||||
|
|||||||
@@ -741,8 +741,8 @@ namespace TargetController
|
|||||||
void TargetControllerComponent::writeTargetMemory(
|
void TargetControllerComponent::writeTargetMemory(
|
||||||
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
Targets::TargetMemoryAddress startAddress,
|
TargetMemoryAddress startAddress,
|
||||||
const TargetMemoryBuffer& buffer
|
TargetMemoryBufferSpan buffer
|
||||||
) {
|
) {
|
||||||
const auto isProgramMemory = this->target->isProgramMemory(
|
const auto isProgramMemory = this->target->isProgramMemory(
|
||||||
addressSpaceDescriptor,
|
addressSpaceDescriptor,
|
||||||
|
|||||||
@@ -302,7 +302,7 @@ namespace TargetController
|
|||||||
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const Targets::TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const Targets::TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
Targets::TargetMemoryAddress startAddress,
|
Targets::TargetMemoryAddress startAddress,
|
||||||
const Targets::TargetMemoryBuffer& buffer
|
Targets::TargetMemoryBufferSpan buffer
|
||||||
);
|
);
|
||||||
|
|
||||||
void eraseTargetMemory(
|
void eraseTargetMemory(
|
||||||
|
|||||||
@@ -405,7 +405,7 @@ namespace Targets::Microchip::Avr8
|
|||||||
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
std::uint32_t startAddress,
|
std::uint32_t startAddress,
|
||||||
const TargetMemoryBuffer& buffer
|
TargetMemoryBufferSpan buffer
|
||||||
) {
|
) {
|
||||||
if (memorySegmentDescriptor.type == TargetMemorySegmentType::FLASH && !this->programmingModeEnabled()) {
|
if (memorySegmentDescriptor.type == TargetMemorySegmentType::FLASH && !this->programmingModeEnabled()) {
|
||||||
throw Exception{"Attempted Flash memory write in the absence of an active programming session."};
|
throw Exception{"Attempted Flash memory write in the absence of an active programming session."};
|
||||||
@@ -1088,7 +1088,7 @@ namespace Targets::Microchip::Avr8
|
|||||||
this->fuseAddressSpaceDescriptor,
|
this->fuseAddressSpaceDescriptor,
|
||||||
this->fuseMemorySegmentDescriptor,
|
this->fuseMemorySegmentDescriptor,
|
||||||
ocdenRegisterDescriptor.startAddress,
|
ocdenRegisterDescriptor.startAddress,
|
||||||
{newValue}
|
TargetMemoryBuffer({newValue})
|
||||||
);
|
);
|
||||||
|
|
||||||
Logger::debug("Verifying OCDEN fuse bit");
|
Logger::debug("Verifying OCDEN fuse bit");
|
||||||
@@ -1140,7 +1140,7 @@ namespace Targets::Microchip::Avr8
|
|||||||
this->fuseAddressSpaceDescriptor,
|
this->fuseAddressSpaceDescriptor,
|
||||||
this->fuseMemorySegmentDescriptor,
|
this->fuseMemorySegmentDescriptor,
|
||||||
eesaveRegisterDescriptor.startAddress,
|
eesaveRegisterDescriptor.startAddress,
|
||||||
{newValue}
|
TargetMemoryBuffer({newValue})
|
||||||
);
|
);
|
||||||
|
|
||||||
Logger::debug("Verifying EESAVE fuse bit");
|
Logger::debug("Verifying EESAVE fuse bit");
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ namespace Targets::Microchip::Avr8
|
|||||||
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
TargetMemoryAddress startAddress,
|
TargetMemoryAddress startAddress,
|
||||||
const TargetMemoryBuffer& buffer
|
TargetMemoryBufferSpan buffer
|
||||||
) override;
|
) override;
|
||||||
bool isProgramMemory(
|
bool isProgramMemory(
|
||||||
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
|
|||||||
@@ -235,7 +235,7 @@ namespace Targets::RiscV
|
|||||||
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
TargetMemoryAddress startAddress,
|
TargetMemoryAddress startAddress,
|
||||||
const TargetMemoryBuffer& buffer
|
TargetMemoryBufferSpan buffer
|
||||||
) {
|
) {
|
||||||
assert(!buffer.empty());
|
assert(!buffer.empty());
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ namespace Targets::RiscV
|
|||||||
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
TargetMemoryAddress startAddress,
|
TargetMemoryAddress startAddress,
|
||||||
const TargetMemoryBuffer& buffer
|
TargetMemoryBufferSpan buffer
|
||||||
) override;
|
) override;
|
||||||
bool isProgramMemory(
|
bool isProgramMemory(
|
||||||
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ namespace Targets::RiscV::Wch
|
|||||||
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
TargetMemoryAddress startAddress,
|
TargetMemoryAddress startAddress,
|
||||||
const TargetMemoryBuffer& buffer
|
TargetMemoryBufferSpan buffer
|
||||||
) {
|
) {
|
||||||
/*
|
/*
|
||||||
* WCH targets have an alias segment that maps to either the program memory segment or the boot program
|
* WCH targets have an alias segment that maps to either the program memory segment or the boot program
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace Targets::RiscV::Wch
|
|||||||
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
TargetMemoryAddress startAddress,
|
TargetMemoryAddress startAddress,
|
||||||
const TargetMemoryBuffer& buffer
|
TargetMemoryBufferSpan buffer
|
||||||
) override;
|
) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ namespace Targets
|
|||||||
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
const TargetAddressSpaceDescriptor& addressSpaceDescriptor,
|
||||||
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
const TargetMemorySegmentDescriptor& memorySegmentDescriptor,
|
||||||
TargetMemoryAddress startAddress,
|
TargetMemoryAddress startAddress,
|
||||||
const TargetMemoryBuffer& buffer
|
TargetMemoryBufferSpan buffer
|
||||||
) = 0;
|
) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ namespace Targets
|
|||||||
&& intersectingSegmentIt->second >= (startAddress + bytes - 1);
|
&& intersectingSegmentIt->second >= (startAddress + bytes - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TargetMemoryCache::insert(TargetMemoryAddress startAddress, const TargetMemoryBuffer& data) {
|
void TargetMemoryCache::insert(TargetMemoryAddress startAddress, TargetMemoryBufferSpan data) {
|
||||||
const auto startIndex = startAddress - this->memorySegmentDescriptor.addressRange.startAddress;
|
const auto startIndex = startAddress - this->memorySegmentDescriptor.addressRange.startAddress;
|
||||||
|
|
||||||
std::copy(data.begin(), data.end(), this->data.begin() + startIndex);
|
std::copy(data.begin(), data.end(), this->data.begin() + startIndex);
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ namespace Targets
|
|||||||
* @param startAddress
|
* @param startAddress
|
||||||
* @param data
|
* @param data
|
||||||
*/
|
*/
|
||||||
void insert(TargetMemoryAddress startAddress, const TargetMemoryBuffer& data);
|
void insert(TargetMemoryAddress startAddress, TargetMemoryBufferSpan data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clears the cache.
|
* Clears the cache.
|
||||||
|
|||||||
Reference in New Issue
Block a user