Added default values for some registers
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
DataHoarder 2021-01-02 04:29:31 +01:00
parent c3bcf99d6a
commit 1ed3d43abe
3 changed files with 39 additions and 1 deletions

View file

@ -47,3 +47,35 @@ void AnalysisState::setRegister(const Instruction::AddressWithOffset &address, u
uint32_t AnalysisState::getAddressWithOffset(const Instruction::AddressWithOffset &address) const {
return address.address + getAddressOffset(address.offset);
}
uint32_t AnalysisState::getDefaultRegisterValue(uint32_t addr) {
if(addr == (uint32_t)KnownRegisters::SOFT_RESET){
return 0b0000000001111111110111;
}else if(addr == (uint32_t)KnownRegisters::DEVICE_CFG){
return 0b01111111110000000;
}else if(addr == (uint32_t)KnownRegisters::RESET_CFG){
return (0x40 << 8) | 0x10;
}else if(addr == (uint32_t)KnownRegisters::VITAL_PRODUCT_DATA){
return 0xAE21;
}else if(addr == (uint32_t)KnownRegisters::SRAM_ERR_IM_0){
return 0xFFFFFFFF;
}else if(addr == (uint32_t)KnownRegisters::SRAM_ERR_IM_1){
return 0x0000FFFF;
}else if(addr == (uint32_t)KnownRegisters::SW_IM){
return 0xFFFFFFFF;
}else if(addr == (uint32_t)KnownRegisters::CHIP_VERSION){
return 0x1;
}else if(addr == (uint32_t)KnownRegisters::REI_CTRL){
return 0b1;
}else if(addr == (uint32_t)KnownRegisters::GPIO_IM){
return 0xFFFFFFFF;
}else if(addr == (uint32_t)KnownRegisters::PLL_PCIE_CTRL){
return (0xA << 18) | (0x19 << 10) | (0x1 << 3) | 0b1;
}else if(addr == (uint32_t)KnownRegisters::SBUS_PCIE_CFG){
return 0b1;
}else if(addr == (uint32_t)KnownRegisters::SBUS_PCIE_IM){
return 0xFFFFFFFF;
}
return 0;
}

View file

@ -91,8 +91,9 @@ public:
uint32_t getRegister(const Instruction::AddressWithOffset &address) const;
uint32_t getRegister(uint32_t addr) const {
return memory.find(addr) == memory.end() ? 0 : memory.at(addr);
return memory.find(addr) == memory.end() ? getDefaultRegisterValue(addr) : memory.at(addr);
}
static uint32_t getDefaultRegisterValue(uint32_t addr);
uint32_t getAddressWithOffset(const Instruction::AddressWithOffset &address) const;

View file

@ -52,6 +52,11 @@ enum class KnownRegisters : uint32_t {
INTERRUPT_MASK_BSM = 0x442,
SRAM_ERR_IM_0 = 0x448,
SRAM_ERR_IM_1 = 0x449,
SW_IM = 0x44E,
CHIP_VERSION = 0x452,
BSM_SCRATCH_START = 0x800,