On Thu, 2026-10-15 at 08:05 +0000, wangyang wrote:
> Zicfilp adds MNPELP to mnstatus, and MNRET consumes it when restoring
> ELP.
> Include the field in write_mnstatus() when Zicfilp is implemented.
> Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/4222
> Reviewed-by: Alistair Francis <[email protected]>
> Signed-off-by: wangyang <[email protected]>
Thanks!
Applied to riscv-to-apply.next
Alistair
> ---
> target/riscv/tcg/csr.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/target/riscv/tcg/csr.c b/target/riscv/tcg/csr.c
> index 061bc9d..fdb55b8 100644
> --- a/target/riscv/tcg/csr.c
> +++ b/target/riscv/tcg/csr.c
> @@ -5584,6 +5584,10 @@ static RISCVException
> write_mnstatus(CPURISCVState *env, int csrno,
> mask |= MNSTATUS_MNPV;
> }
>
> + if (env_archcpu(env)->cfg.ext_zicfilp) {
> + mask |= MNSTATUS_MNPELP;
> + }
> +
> /* mnstatus.mnie can only be cleared by hardware. */
> env->mnstatus = (env->mnstatus & MNSTATUS_NMIE) | (val & mask);
> return RISCV_EXCP_NONE;