Corrected memory address/size alignment in EDBG and RISC-V drivers

This commit is contained in:
Nav
2024-08-30 19:59:59 +01:00
parent cb35051e6d
commit 914153077e
2 changed files with 4 additions and 8 deletions

View File

@@ -1267,9 +1267,7 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr
} }
if ((address % alignTo) != 0) { if ((address % alignTo) != 0) {
return static_cast<TargetMemoryAddress>(std::floor( return (address / alignTo) * alignTo;
static_cast<float>(address) / static_cast<float>(alignTo)
) * alignTo);
} }
return address; return address;
@@ -1299,7 +1297,7 @@ namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr
if ((bytes % alignTo) != 0) { if ((bytes % alignTo) != 0) {
return static_cast<TargetMemorySize>(std::ceil( return static_cast<TargetMemorySize>(std::ceil(
static_cast<float>(bytes) / static_cast<float>(alignTo) static_cast<double>(bytes) / static_cast<double>(alignTo)
) * alignTo); ) * alignTo);
} }

View File

@@ -579,14 +579,12 @@ namespace DebugToolDrivers::Protocols::RiscVDebugSpec
} }
TargetMemoryAddress DebugTranslator::alignMemoryAddress(TargetMemoryAddress address, TargetMemoryAddress alignTo) { TargetMemoryAddress DebugTranslator::alignMemoryAddress(TargetMemoryAddress address, TargetMemoryAddress alignTo) {
return static_cast<TargetMemoryAddress>( return (address / alignTo) * alignTo;
std::floor(static_cast<float>(address) / static_cast<float>(alignTo))
) * alignTo;
} }
TargetMemorySize DebugTranslator::alignMemorySize(TargetMemorySize size, TargetMemorySize alignTo) { TargetMemorySize DebugTranslator::alignMemorySize(TargetMemorySize size, TargetMemorySize alignTo) {
return static_cast<TargetMemorySize>( return static_cast<TargetMemorySize>(
std::ceil(static_cast<float>(size) / static_cast<float>(alignTo)) std::ceil(static_cast<double>(size) / static_cast<double>(alignTo))
) * alignTo; ) * alignTo;
} }
} }