target/riscv: Fix hstatus.GVA bit setting for traps taken from HS-mode
Currently, QEMU does not set hstatus.GVA bit for traps taken from
HS-mode into HS-mode which breaks the Xvisor nested MMU test suite
on QEMU. This was working previously.
This patch updates riscv_cpu_do_interrupt() to fix the above issue.
Fixes: 86d0c45739
("target/riscv: Fixup setting GVA")
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-Id: <20220511144528.393530-3-apatel@ventanamicro.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
c1fbcecb3a
commit
24826da0ee
@ -1367,7 +1367,7 @@ void riscv_cpu_do_interrupt(CPUState *cs)
|
||||
case RISCV_EXCP_INST_PAGE_FAULT:
|
||||
case RISCV_EXCP_LOAD_PAGE_FAULT:
|
||||
case RISCV_EXCP_STORE_PAGE_FAULT:
|
||||
write_gva = true;
|
||||
write_gva = env->two_stage_lookup;
|
||||
tval = env->badaddr;
|
||||
break;
|
||||
case RISCV_EXCP_ILLEGAL_INST:
|
||||
@ -1434,7 +1434,6 @@ void riscv_cpu_do_interrupt(CPUState *cs)
|
||||
/* Trap into HS mode */
|
||||
env->hstatus = set_field(env->hstatus, HSTATUS_SPV, false);
|
||||
htval = env->guest_phys_fault_addr;
|
||||
write_gva = false;
|
||||
}
|
||||
env->hstatus = set_field(env->hstatus, HSTATUS_GVA, write_gva);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user