Added default values for some registers
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
c3bcf99d6a
commit
1ed3d43abe
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue