aboutsummaryrefslogtreecommitdiff
path: root/target/riscv
diff options
context:
space:
mode:
authorEmmanuel Blot <emmanuel.blot@sifive.com>2021-04-16 16:17:11 +0200
committerAlistair Francis <alistair.francis@wdc.com>2021-05-11 20:02:07 +1000
commitf9e580c13ae0d42cf8989063254300c59166ffed (patch)
treeb8ecfb4bbf3ccb3895a4d04c83deb0131877200d /target/riscv
parentb11e84b883bf9b790732a03703559bf4797ad272 (diff)
downloadqemu-f9e580c13ae0d42cf8989063254300c59166ffed.zip
qemu-f9e580c13ae0d42cf8989063254300c59166ffed.tar.gz
qemu-f9e580c13ae0d42cf8989063254300c59166ffed.tar.bz2
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>
Diffstat (limited to 'target/riscv')
-rw-r--r--target/riscv/cpu_helper.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c
index 659ca8a..1018c00 100644
--- a/target/riscv/cpu_helper.c
+++ b/target/riscv/cpu_helper.c
@@ -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;