]> xenbits.xensource.com Git - xen.git/commit
x86emul: fix PINSRW and adjust other {,V}PINSR*
authorJan Beulich <jbeulich@suse.com>
Wed, 4 Nov 2020 10:02:30 +0000 (11:02 +0100)
committerJan Beulich <jbeulich@suse.com>
Wed, 4 Nov 2020 10:02:30 +0000 (11:02 +0100)
commitfc8fab1bb4d3a16914d8e7f6e288e946e68d5a41
tree5fa5460865e36661455e3717ae275f257f098763
parent898864c3736338548bc2f684b7e307326e0dd4a5
x86emul: fix PINSRW and adjust other {,V}PINSR*

The use of simd_packed_int together with no further update to op_bytes
has lead to wrong signaling of #GP(0) for PINSRW without a 16-byte
aligned memory operand. Use simd_none instead and override it after
general decoding with simd_other, like is done for the B/D/Q siblings.

While benign, for consistency also use DstImplicit instead of DstReg
in x86_decode_twobyte().

PINSR{B,D,Q} also had a stray (redundant) get_fpu() invocation, which
gets dropped.

For further consistency also
- use src.bytes instead of op_bytes in relevant memcpy() invocations,
- avoid the pointless updating of op_bytes (all we care about later is
  that the value be less than 16).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
master commit: 06f0598b41f23c9e4cf7d8c5a05b282de92f3a35
master date: 2020-10-23 18:03:18 +0200
xen/arch/x86/x86_emulate/x86_emulate.c