target/riscv: Ensure mideleg is set correctly on reset
Bits 10, 6, 2 and 12 of mideleg are read only 1 when the Hypervisor is enabled. We currently only set them on accesses to mideleg, but they aren't correctly set on reset. Let's ensure they are always the correct value. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1617 Signed-off-by: Alistair Francis <alistair.francis@wdc.com> Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Message-ID: <20240108001328.280222-4-alistair.francis@wdc.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
1525d8aa3a
commit
71b76da33a
@ -931,6 +931,14 @@ static void riscv_cpu_reset_hold(Object *obj)
|
||||
/* mmte is supposed to have pm.current hardwired to 1 */
|
||||
env->mmte |= (EXT_STATUS_INITIAL | MMTE_M_PM_CURRENT);
|
||||
|
||||
/*
|
||||
* Bits 10, 6, 2 and 12 of mideleg are read only 1 when the Hypervisor
|
||||
* extension is enabled.
|
||||
*/
|
||||
if (riscv_has_ext(env, RVH)) {
|
||||
env->mideleg |= HS_MODE_INTERRUPTS;
|
||||
}
|
||||
|
||||
/*
|
||||
* Clear mseccfg and unlock all the PMP entries upon reset.
|
||||
* This is allowed as per the priv and smepmp specifications
|
||||
|
Loading…
Reference in New Issue
Block a user