diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2024-05-09 14:34:24 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2024-06-11 14:29:22 +0200 |
commit | 024538287e4b4838a21cacec3709ed55093807b9 (patch) | |
tree | 10533a67c35eeb05aeea82ba6c7d0353d39f668f | |
parent | c0df9563a3d1b95b91d3ad7e2519fed0c2952772 (diff) | |
download | qemu-024538287e4b4838a21cacec3709ed55093807b9.zip qemu-024538287e4b4838a21cacec3709ed55093807b9.tar.gz qemu-024538287e4b4838a21cacec3709ed55093807b9.tar.bz2 |
target/i386: fix processing of intercept 0 (read CR0)
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | target/i386/tcg/decode-new.c.inc | 4 | ||||
-rw-r--r-- | target/i386/tcg/decode-new.h | 1 |
2 files changed, 3 insertions, 2 deletions
diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.c.inc index 4f5fcdb..cd925fe 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -221,7 +221,7 @@ #define vex13 .vex_class = 13, #define chk(a) .check = X86_CHECK_##a, -#define svm(a) .intercept = SVM_EXIT_##a, +#define svm(a) .intercept = SVM_EXIT_##a, .has_intercept = true, #define avx2_256 .vex_special = X86_VEX_AVX2_256, @@ -2559,7 +2559,7 @@ static void disas_insn(DisasContext *s, CPUState *cpu) goto gp_fault; } } - if (decode.e.intercept && unlikely(GUEST(s))) { + if (decode.e.has_intercept && unlikely(GUEST(s))) { gen_helper_svm_check_intercept(tcg_env, tcg_constant_i32(decode.e.intercept)); } diff --git a/target/i386/tcg/decode-new.h b/target/i386/tcg/decode-new.h index 46a96b2..8465717 100644 --- a/target/i386/tcg/decode-new.h +++ b/target/i386/tcg/decode-new.h @@ -272,6 +272,7 @@ struct X86OpEntry { unsigned valid_prefix:16; unsigned check:16; unsigned intercept:8; + bool has_intercept:1; bool is_decode:1; }; |