mirror of https://github.com/xemu-project/xemu.git
target/riscv: Fix the mstatus.MPP value after executing MRET
The MPP will be set to the least-privileged supported mode (U if U-mode is implemented, else M). Signed-off-by: Weiwei Li <liweiwei@iscas.ac.cn> Signed-off-by: Junqiang Wang <wangjunqiang@iscas.ac.cn> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-Id: <20230407014743.18779-2-liweiwei@iscas.ac.cn> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
dd8f244f35
commit
04803c3ddb
|
@ -338,7 +338,8 @@ target_ulong helper_mret(CPURISCVState *env)
|
|||
mstatus = set_field(mstatus, MSTATUS_MIE,
|
||||
get_field(mstatus, MSTATUS_MPIE));
|
||||
mstatus = set_field(mstatus, MSTATUS_MPIE, 1);
|
||||
mstatus = set_field(mstatus, MSTATUS_MPP, PRV_U);
|
||||
mstatus = set_field(mstatus, MSTATUS_MPP,
|
||||
riscv_has_ext(env, RVU) ? PRV_U : PRV_M);
|
||||
mstatus = set_field(mstatus, MSTATUS_MPV, 0);
|
||||
if ((env->priv_ver >= PRIV_VERSION_1_12_0) && (prev_priv != PRV_M)) {
|
||||
mstatus = set_field(mstatus, MSTATUS_MPRV, 0);
|
||||
|
|
Loading…
Reference in New Issue