From: Christoph Müllner <christoph.muellner@vrull.eu>
This allows privileged instructions to check the required
privilege level in the translation without calling a helper.
Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
---
target/riscv/translate.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/target/riscv/translate.c b/target/riscv/translate.c
index 63b04e8a94..fd241ff667 100644
--- a/target/riscv/translate.c
+++ b/target/riscv/translate.c
@@ -59,6 +59,9 @@ typedef struct DisasContext {
/* pc_succ_insn points to the instruction following base.pc_next */
target_ulong pc_succ_insn;
target_ulong priv_ver;
+#ifndef CONFIG_USER_ONLY
+ target_ulong priv;
+#endif
RISCVMXL misa_mxl_max;
RISCVMXL xl;
uint32_t misa_ext;
@@ -1079,6 +1082,7 @@ static void riscv_tr_init_disas_context(DisasContextBase
*dcbase, CPUState *cs)
ctx->mstatus_vs = tb_flags & TB_FLAGS_MSTATUS_VS;
ctx->priv_ver = env->priv_ver;
#if !defined(CONFIG_USER_ONLY)
+ ctx->priv = env->priv;
if (riscv_has_ext(env, RVH)) {
ctx->virt_enabled = riscv_cpu_virt_enabled(env);
} else {