* target/i386: SEV: fix incorrect property name
* target/i386: tcg: fix VSIB decode with XMM/YMM{4,12} -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmawwjoUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroO+kgf/SIOaF14Ozw6w33zddDiuK969ouNR 00hC17p0acVl3KwmbXBJp2CXtc4TcZwLEg6y2KrActEVg2CaFFjGx9wJUnTGOL/D 3Nhp3ipsExv+rFQuQvV9k/BeAVG0G9YoTZtQJVQvLPL/LYJ76h2JlVamjr9rsuKy hsVeHX6Xl6ad6mtM1hSFBonJzfGK08rKQPTnALfB0raFLmSHWleg9Xzs0r1YiuO2 SsGVr0NF369pZA2U0Y/tcw0RIRIikXfVYTX5+o9H6RzEqbqaOh3j9upLYSWym6LN cedTxjNFJdxZReR/VE1kAys3s2pE8k+yiQIBGzfwo4fN6hukJZGCtwrVmw== =2tkB -----END PGP SIGNATURE----- Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging * target/i386: SEV: fix incorrect property name * target/i386: tcg: fix VSIB decode with XMM/YMM{4,12} # -----BEGIN PGP SIGNATURE----- # # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmawwjoUHHBib256aW5p # QHJlZGhhdC5jb20ACgkQv/vSX3jHroO+kgf/SIOaF14Ozw6w33zddDiuK969ouNR # 00hC17p0acVl3KwmbXBJp2CXtc4TcZwLEg6y2KrActEVg2CaFFjGx9wJUnTGOL/D # 3Nhp3ipsExv+rFQuQvV9k/BeAVG0G9YoTZtQJVQvLPL/LYJ76h2JlVamjr9rsuKy # hsVeHX6Xl6ad6mtM1hSFBonJzfGK08rKQPTnALfB0raFLmSHWleg9Xzs0r1YiuO2 # SsGVr0NF369pZA2U0Y/tcw0RIRIikXfVYTX5+o9H6RzEqbqaOh3j9upLYSWym6LN # cedTxjNFJdxZReR/VE1kAys3s2pE8k+yiQIBGzfwo4fN6hukJZGCtwrVmw== # =2tkB # -----END PGP SIGNATURE----- # gpg: Signature made Mon 05 Aug 2024 10:14:50 PM AEST # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full] * tag 'for-upstream' of https://gitlab.com/bonzini/qemu: target/i386: Fix VSIB decode target/i386: SEV: fix mismatch in vcek-disabled property name Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
e7207a9971
@ -2422,7 +2422,7 @@ sev_snp_guest_class_init(ObjectClass *oc, void *data)
|
||||
object_class_property_add_bool(oc, "author-key-enabled",
|
||||
sev_snp_guest_get_author_key_enabled,
|
||||
sev_snp_guest_set_author_key_enabled);
|
||||
object_class_property_add_bool(oc, "vcek-required",
|
||||
object_class_property_add_bool(oc, "vcek-disabled",
|
||||
sev_snp_guest_get_vcek_disabled,
|
||||
sev_snp_guest_set_vcek_disabled);
|
||||
object_class_property_add_str(oc, "host-data",
|
||||
|
@ -1811,7 +1811,8 @@ static int decode_modrm(DisasContext *s, CPUX86State *env, X86DecodedInsn *decod
|
||||
} else {
|
||||
op->has_ea = true;
|
||||
op->n = -1;
|
||||
decode->mem = gen_lea_modrm_0(env, s, get_modrm(s, env));
|
||||
decode->mem = gen_lea_modrm_0(env, s, modrm,
|
||||
decode->e.vex_class == 12);
|
||||
}
|
||||
return modrm;
|
||||
}
|
||||
|
@ -1523,7 +1523,7 @@ typedef struct AddressParts {
|
||||
} AddressParts;
|
||||
|
||||
static AddressParts gen_lea_modrm_0(CPUX86State *env, DisasContext *s,
|
||||
int modrm)
|
||||
int modrm, bool is_vsib)
|
||||
{
|
||||
int def_seg, base, index, scale, mod, rm;
|
||||
target_long disp;
|
||||
@ -1552,7 +1552,7 @@ static AddressParts gen_lea_modrm_0(CPUX86State *env, DisasContext *s,
|
||||
int code = x86_ldub_code(env, s);
|
||||
scale = (code >> 6) & 3;
|
||||
index = ((code >> 3) & 7) | REX_X(s);
|
||||
if (index == 4) {
|
||||
if (index == 4 && !is_vsib) {
|
||||
index = -1; /* no index */
|
||||
}
|
||||
base = (code & 7) | REX_B(s);
|
||||
@ -1682,21 +1682,21 @@ static TCGv gen_lea_modrm_1(DisasContext *s, AddressParts a, bool is_vsib)
|
||||
|
||||
static void gen_lea_modrm(CPUX86State *env, DisasContext *s, int modrm)
|
||||
{
|
||||
AddressParts a = gen_lea_modrm_0(env, s, modrm);
|
||||
AddressParts a = gen_lea_modrm_0(env, s, modrm, false);
|
||||
TCGv ea = gen_lea_modrm_1(s, a, false);
|
||||
gen_lea_v_seg(s, ea, a.def_seg, s->override);
|
||||
}
|
||||
|
||||
static void gen_nop_modrm(CPUX86State *env, DisasContext *s, int modrm)
|
||||
{
|
||||
(void)gen_lea_modrm_0(env, s, modrm);
|
||||
(void)gen_lea_modrm_0(env, s, modrm, false);
|
||||
}
|
||||
|
||||
/* Used for BNDCL, BNDCU, BNDCN. */
|
||||
static void gen_bndck(CPUX86State *env, DisasContext *s, int modrm,
|
||||
TCGCond cond, TCGv_i64 bndv)
|
||||
{
|
||||
AddressParts a = gen_lea_modrm_0(env, s, modrm);
|
||||
AddressParts a = gen_lea_modrm_0(env, s, modrm, false);
|
||||
TCGv ea = gen_lea_modrm_1(s, a, false);
|
||||
|
||||
tcg_gen_extu_tl_i64(s->tmp1_i64, ea);
|
||||
@ -2417,7 +2417,7 @@ static bool disas_insn_x87(DisasContext *s, CPUState *cpu, int b)
|
||||
op = ((b & 7) << 3) | ((modrm >> 3) & 7);
|
||||
if (mod != 3) {
|
||||
/* memory op */
|
||||
AddressParts a = gen_lea_modrm_0(env, s, modrm);
|
||||
AddressParts a = gen_lea_modrm_0(env, s, modrm, false);
|
||||
TCGv ea = gen_lea_modrm_1(s, a, false);
|
||||
TCGv last_addr = tcg_temp_new();
|
||||
bool update_fdp = true;
|
||||
@ -3078,7 +3078,7 @@ static void disas_insn_old(DisasContext *s, CPUState *cpu, int b)
|
||||
rm = (modrm & 7) | REX_B(s);
|
||||
gen_op_mov_v_reg(s, MO_32, s->T1, reg);
|
||||
if (mod != 3) {
|
||||
AddressParts a = gen_lea_modrm_0(env, s, modrm);
|
||||
AddressParts a = gen_lea_modrm_0(env, s, modrm, false);
|
||||
/* specific case: we need to add a displacement */
|
||||
gen_exts(ot, s->T1);
|
||||
tcg_gen_sari_tl(s->tmp0, s->T1, 3 + ot);
|
||||
@ -3635,7 +3635,7 @@ static void disas_insn_old(DisasContext *s, CPUState *cpu, int b)
|
||||
}
|
||||
} else if (mod != 3) {
|
||||
/* bndldx */
|
||||
AddressParts a = gen_lea_modrm_0(env, s, modrm);
|
||||
AddressParts a = gen_lea_modrm_0(env, s, modrm, false);
|
||||
if (reg >= 4
|
||||
|| (prefixes & PREFIX_LOCK)
|
||||
|| s->aflag == MO_16
|
||||
@ -3679,7 +3679,7 @@ static void disas_insn_old(DisasContext *s, CPUState *cpu, int b)
|
||||
|| s->aflag == MO_16) {
|
||||
goto illegal_op;
|
||||
}
|
||||
AddressParts a = gen_lea_modrm_0(env, s, modrm);
|
||||
AddressParts a = gen_lea_modrm_0(env, s, modrm, false);
|
||||
if (a.base >= 0) {
|
||||
tcg_gen_extu_tl_i64(cpu_bndl[reg], cpu_regs[a.base]);
|
||||
if (!CODE64(s)) {
|
||||
@ -3740,7 +3740,7 @@ static void disas_insn_old(DisasContext *s, CPUState *cpu, int b)
|
||||
}
|
||||
} else if (mod != 3) {
|
||||
/* bndstx */
|
||||
AddressParts a = gen_lea_modrm_0(env, s, modrm);
|
||||
AddressParts a = gen_lea_modrm_0(env, s, modrm, false);
|
||||
if (reg >= 4
|
||||
|| (prefixes & PREFIX_LOCK)
|
||||
|| s->aflag == MO_16
|
||||
|
Loading…
Reference in New Issue
Block a user