debugger memory accesses should never lead to traps

This commit is contained in:
2023-10-06 21:39:48 +02:00
parent ee6a068b06
commit 9180ad1f9c
3 changed files with 6 additions and 6 deletions

View File

@ -636,7 +636,7 @@ iss::status riscv_hart_msu_vp<BASE>::read(const address_type type, const access_
}
}
auto res = read_mem( BASE::v2p(iss::addr_t{access, type, space, addr}), length, data);
if (unlikely(res != iss::Ok)){
if (unlikely(res != iss::Ok && (access & access_type::DEBUG) == 0)){
this->reg.trap_state = (1 << 31) | (5 << 16); // issue trap 5 (load access fault
fault_data=addr;
}
@ -734,7 +734,7 @@ iss::status riscv_hart_msu_vp<BASE>::write(const address_type type, const access
}
}
auto res = write_mem(paddr, length, data);
if (unlikely(res != iss::Ok)) {
if (unlikely(res != iss::Ok && (access & access_type::DEBUG) == 0)) {
this->reg.trap_state = (1UL << 31) | (7UL << 16); // issue trap 7 (Store/AMO access fault)
fault_data=addr;
}