Fixed issue with AVR8 'store program memory control register' (SPMCR) loading from TDFs

This commit is contained in:
Nav
2021-06-05 22:36:53 +01:00
parent 91b40133a1
commit 9a31bddd06

View File

@@ -595,11 +595,14 @@ std::optional<Register> TargetDescriptionFile::getOscillatorCalibrationRegister(
std::optional<Register> TargetDescriptionFile::getSpmcsRegister() const {
auto cpuRegisterGroup = this->getCpuRegisterGroup();
if (cpuRegisterGroup.has_value()) {
auto spmcsRegisterIt = cpuRegisterGroup->registersMappedByName.find("spmcsr");
if (cpuRegisterGroup.has_value() && cpuRegisterGroup->registersMappedByName.contains("spmcsr")) {
return cpuRegisterGroup->registersMappedByName.at("spmcsr");
if (spmcsRegisterIt != cpuRegisterGroup->registersMappedByName.end()) {
return spmcsRegisterIt->second;
} else {
auto bootLoadRegisterGroup = this->getBootLoadRegisterGroup();
if (bootLoadRegisterGroup.has_value() && bootLoadRegisterGroup->registersMappedByName.contains("spmcsr")) {
return bootLoadRegisterGroup->registersMappedByName.at("spmcsr");
}
}
@@ -609,11 +612,14 @@ std::optional<Register> TargetDescriptionFile::getSpmcsRegister() const {
std::optional<Register> TargetDescriptionFile::getSpmcRegister() const {
auto bootLoadRegisterGroup = this->getBootLoadRegisterGroup();
if (bootLoadRegisterGroup.has_value()) {
auto spmcRegisterIt = bootLoadRegisterGroup->registersMappedByName.find("spmcr");
if (bootLoadRegisterGroup.has_value() && bootLoadRegisterGroup->registersMappedByName.contains("spmcr")) {
return bootLoadRegisterGroup->registersMappedByName.at("spmcr");
if (spmcRegisterIt != bootLoadRegisterGroup->registersMappedByName.end()) {
return spmcRegisterIt->second;
} else {
auto cpuRegisterGroup = this->getCpuRegisterGroup();
if (cpuRegisterGroup.has_value() && cpuRegisterGroup->registersMappedByName.contains("spmcr")) {
return cpuRegisterGroup->registersMappedByName.at("spmcr");
}
}