mirror of
https://github.com/infiniteCable2/panda.git
synced 2026-02-18 17:23:52 +08:00
@@ -49,13 +49,10 @@ void check_registers(void){
|
||||
if((uint32_t) register_map[i].address != 0U){
|
||||
ENTER_CRITICAL()
|
||||
if((*(register_map[i].address) & register_map[i].check_mask) != (register_map[i].value & register_map[i].check_mask)){
|
||||
#ifdef DEBUG_FAULTS
|
||||
print("Register at address 0x"); puth((uint32_t) register_map[i].address); print(" is divergent!");
|
||||
print(" Map: 0x"); puth(register_map[i].value);
|
||||
print(" Register: 0x"); puth(*(register_map[i].address));
|
||||
print(" Mask: 0x"); puth(register_map[i].check_mask);
|
||||
print("\n");
|
||||
#endif
|
||||
if(!register_map[i].logged_fault){
|
||||
print("Register 0x"); puth((uint32_t) register_map[i].address); print(" divergent! Map: 0x"); puth(register_map[i].value); print(" Reg: 0x"); puth(*(register_map[i].address)); print("\n");
|
||||
register_map[i].logged_fault = true;
|
||||
}
|
||||
fault_occurred(FAULT_REGISTER_DIVERGENT);
|
||||
}
|
||||
EXIT_CRITICAL()
|
||||
|
||||
@@ -4,6 +4,7 @@ typedef struct reg {
|
||||
volatile uint32_t *address;
|
||||
uint32_t value;
|
||||
uint32_t check_mask;
|
||||
bool logged_fault;
|
||||
} reg;
|
||||
|
||||
// 10 bit hash with 23 as a prime
|
||||
|
||||
Reference in New Issue
Block a user