[PATCH] target/riscv: make cbo helpers [ms]envcfg gating in user-mode
Abhigyan Kumar <[email protected]>
| Newsgroups | org.nongnu.qemu-devel,org.nongnu.qemu-riscv |
|---|---|
| Message-ID | <[email protected]> |
Current implementation of check_zicbo_envcfg is wrapped in an if-else macro that eliminates the function during compilation for user-modde. But, the zicbo spec states that [ms]envcfg gating is to be used. Fixes: https://gitlab.com/qemu-project/qemu/-/work_items/4107 Signed-off-by: Abhigyan Kumar <[email protected]> --- target/riscv/tcg/op_helper.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/riscv/tcg/op_helper.c b/target/riscv/tcg/op_helper.c index ba3c7da..bc899c4 100644 --- a/target/riscv/tcg/op_helper.c +++ b/target/riscv/tcg/op_helper.c @@ -160,6 +160,11 @@ static void check_zicbo_envcfg(CPURISCVState *env, target_ulong envbits, if ((env->priv < PRV_S) && !get_field(env->senvcfg, envbits)) { riscv_raise_exception(env, RISCV_EXCP_ILLEGAL_INST, ra); } +#else + if (!get_field(env->senvcfg, envbits) || + !get_field(env->menvcfg, envbits)) { + riscv_raise_exception(env, RISCV_EXCP_ILLEGAL_INST, ra); + } #endif } -- 2.55.0