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

View File

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