target/riscv: fix exception index on instruction access fault
When no MMU is used and the guest code attempts to fetch an instruction from an invalid memory location, the exception index defaults to a data load access fault, rather an instruction access fault. Signed-off-by: Emmanuel Blot <emmanuel.blot@sifive.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-id: FB9EA197-B018-4879-AB0F-922C2047A08B@sifive.com Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
b11e84b883
commit
f9e580c13a
@ -694,8 +694,10 @@ void riscv_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr,
|
|||||||
|
|
||||||
if (access_type == MMU_DATA_STORE) {
|
if (access_type == MMU_DATA_STORE) {
|
||||||
cs->exception_index = RISCV_EXCP_STORE_AMO_ACCESS_FAULT;
|
cs->exception_index = RISCV_EXCP_STORE_AMO_ACCESS_FAULT;
|
||||||
} else {
|
} else if (access_type == MMU_DATA_LOAD) {
|
||||||
cs->exception_index = RISCV_EXCP_LOAD_ACCESS_FAULT;
|
cs->exception_index = RISCV_EXCP_LOAD_ACCESS_FAULT;
|
||||||
|
} else {
|
||||||
|
cs->exception_index = RISCV_EXCP_INST_ACCESS_FAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
env->badaddr = addr;
|
env->badaddr = addr;
|
||||||
|
Loading…
Reference in New Issue
Block a user