1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

register: ignore strict aliasing for setting register as float

Signed-off-by: Niklas Eiling <niklas.eiling@eonerc.rwth-aachen.de>
This commit is contained in:
Niklas Eiling 2024-02-26 15:38:26 +01:00 committed by Niklas Eiling
parent 8a40b873be
commit 033634ac47

View file

@ -69,8 +69,11 @@ void Register::setRegister(size_t reg, float value) {
logger->error("Register index out of range: {}/{}", reg, registerNum);
throw std::out_of_range("Register index out of range");
}
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
Xil_Out32(getBaseAddr(registerMemory) + REGISTER_OUT(reg),
reinterpret_cast<uint32_t &>(value));
#pragma GCC diagnostic pop
}
uint32_t Register::getRegister(size_t reg) {
@ -87,7 +90,10 @@ float Register::getRegisterFloat(size_t reg) {
throw std::out_of_range("Register index out of range");
}
uint32_t value = Xil_In32(getBaseAddr(registerMemory) + REGISTER_OUT(reg));
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
return reinterpret_cast<float &>(value);
#pragma GCC diagnostic pop
}
void Register::resetRegister(size_t reg) {