Skip to content

Commit

Permalink
target/riscv: fix exception index on instruction access fault
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
sifive-eblot authored and alistair23 committed May 11, 2021
1 parent b11e84b commit f9e580c
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion target/riscv/cpu_helper.c
Expand Up @@ -694,8 +694,10 @@ void riscv_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr,

if (access_type == MMU_DATA_STORE) {
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;
} else {
cs->exception_index = RISCV_EXCP_INST_ACCESS_FAULT;
}

env->badaddr = addr;
Expand Down

0 comments on commit f9e580c

Please sign in to comment.