qemu-patch-raspberry4/target/i386
David Greenaway 51909241d2 target/i386: Fix decoding of certain BMI instructions
This patch fixes a translation bug for a subset of x86 BMI instructions
such as the following:

   c4 e2 f9 f7 c0                shlxq   %rax, %rax, %rax

Currently, these incorrectly generate an undefined instruction exception
when SSE is disabled via CR4, while instructions like "shrxq" work fine.

The problem appears to be related to BMI instructions encoded using VEX
and with a mandatory prefix of "0x66" (data). Instructions with this
data prefix (such as shlxq) are currently rejected. Instructions with
other mandatory prefixes (such as shrxq) translate as expected.

This patch removes the incorrect check in "gen_sse" that causes the
exception to be generated. For the non-BMI cases, the check is
redundant: prefixes are already checked at line 3696.

Buglink: https://bugs.launchpad.net/qemu/+bug/1748296

Signed-off-by: David Greenaway <dgreenaway@google.com>
Message-Id: <20210114063958.1508050-1-dgreenaway@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2021-02-08 14:43:55 +01:00
..
hax accel: replace struct CpusAccel with AccelOpsClass 2021-02-05 10:24:15 -10:00
hvf accel: replace struct CpusAccel with AccelOpsClass 2021-02-05 10:24:15 -10:00
kvm confidential guest support: Move SEV initialization into arch specific code 2021-02-08 16:57:38 +11:00
tcg target/i386: Fix decoding of certain BMI instructions 2021-02-08 14:43:55 +01:00
whpx accel: replace struct CpusAccel with AccelOpsClass 2021-02-05 10:24:15 -10:00
arch_dump.c dump: add kernel_gs_base to QEMU CPU state 2018-07-16 16:13:34 +02:00
arch_memory_mapping.c exec,dump,i386,ppc,s390x: don't include exec/cpu-all.h explicitly 2017-09-19 18:21:33 +02:00
cpu-dump.c i386: move cpu dump out of helper.c into cpu-dump.c 2020-12-16 14:06:53 -05:00
cpu-param.h tcg: Split out target/arch/cpu-param.h 2019-06-10 07:03:34 -07:00
cpu-qom.h qom: Remove module_obj_name parameter from OBJECT_DECLARE* macros 2020-09-18 14:12:32 -04:00
cpu.c x86/cpu: Populate SVM CPUID feature bits 2021-02-08 14:43:54 +01:00
cpu.h x86/cpu: Populate SVM CPUID feature bits 2021-02-08 14:43:54 +01:00
gdbstub.c target/i386: Use X86Seg enum for segment registers 2021-01-12 17:05:10 +01:00
helper.c i386: move TCG cpu class initialization to tcg/ 2020-12-16 15:50:33 -05:00
helper.h target/i386: fix IEEE SSE floating-point exception raising 2020-07-10 18:02:17 -04:00
machine.c i386: move kvm accel files into kvm/ 2020-12-16 14:06:52 -05:00
meson.build i386: move cpu dump out of helper.c into cpu-dump.c 2020-12-16 14:06:53 -05:00
monitor.c sev: add sev-inject-launch-secret 2020-12-10 17:33:17 -05:00
ops_sse.h x86 tcg cpus: Fix Lesser GPL version number 2020-11-15 16:41:42 +01:00
ops_sse_header.h x86 tcg cpus: Fix Lesser GPL version number 2020-11-15 16:41:42 +01:00
sev-stub.c sev: Remove false abstraction of flash encryption 2021-02-08 16:57:38 +11:00
sev.c confidential guest support: Move SEV initialization into arch specific code 2021-02-08 16:57:38 +11:00
sev_i386.h target/i386: sev: provide proper error reporting for query-sev-capabilities 2020-07-10 18:02:22 -04:00
shift_helper_template.h x86 tcg cpus: Fix Lesser GPL version number 2020-11-15 16:41:42 +01:00
svm.h tcg/svm: use host cr4 during NPT page table walk 2020-07-10 18:02:14 -04:00
trace-events i386: move kvm accel files into kvm/ 2020-12-16 14:06:52 -05:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
xsave_helper.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00