I think you're right, thanks.
I'll add a check for M-mode as well and I guess I'll have to rename the
function.
Any ideas on the proper and self-describing name?

Thanks

пт, 5 янв. 2024 г. в 03:46, Deepak Gupta <de...@rivosinc.com>:

> On Wed, Jan 3, 2024 at 10:59 AM Alexey Baturo <baturo.ale...@gmail.com>
> wrote:
> > +
> > +bool riscv_cpu_bare_mode(CPURISCVState *env)
> > +{
> > +    int satp_mode = 0;
> > +#ifndef CONFIG_USER_ONLY
> > +    if (riscv_cpu_mxl(env) == MXL_RV32) {
> > +        satp_mode = get_field(env->satp, SATP32_MODE);
> > +    } else {
> > +        satp_mode = get_field(env->satp, SATP64_MODE);
> > +    }
> > +#endif
> > +    return (satp_mode == VM_1_10_MBARE);
> > +}
> > +
>
> Assume the CPU was in S or U with satp = non-bare mode but then a
> transfer to M-mode happened.
> In that case, even though the CPU is in M mode, the above function
> will return non-bare mode and enforce
> signed extension on M mode pointer masking (if enabled).
>
> right or am I missing something here?
>

Reply via email to