[PATCH] target/riscv: make cbo helpers [ms]envcfg gating in user-mode

Abhigyan Kumar posted 1 patch 1 week, 5 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260814082217.278685-1-314abh@gmail.com
Maintainers: Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <alistair.francis@wdc.com>, Weiwei Li <liwei1518@gmail.com>, Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>, Chao Liu <chao.liu@processmission.com>
target/riscv/tcg/op_helper.c | 5 +++++
1 file changed, 5 insertions(+)
[PATCH] target/riscv: make cbo helpers [ms]envcfg gating in user-mode
Posted by Abhigyan Kumar 1 week, 5 days ago
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 <314abh@gmail.com>
---
 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