KVM: x86: Emulator mis-decodes VEX instructions on real-mode
Commit 7fe864dc94
(KVM: x86: Mark VEX-prefix instructions emulation as
unimplemented, 2014-06-02) marked VEX instructions as such in protected
mode. VEX-prefix instructions are not supported relevant on real-mode
and VM86, but should cause #UD instead of being decoded as LES/LDS.
Fix this behaviour to be consistent with real hardware.
Signed-off-by: Nadav Amit <namit@cs.technion.ac.il>
[Check for mod == 3, rather than 2 or 3. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
2c2ca2d12f
commit
d14cb5df59
|
@ -4517,8 +4517,7 @@ done_prefixes:
|
||||||
|
|
||||||
/* vex-prefix instructions are not implemented */
|
/* vex-prefix instructions are not implemented */
|
||||||
if (ctxt->opcode_len == 1 && (ctxt->b == 0xc5 || ctxt->b == 0xc4) &&
|
if (ctxt->opcode_len == 1 && (ctxt->b == 0xc5 || ctxt->b == 0xc4) &&
|
||||||
(mode == X86EMUL_MODE_PROT64 ||
|
(mode == X86EMUL_MODE_PROT64 || (ctxt->modrm & 0xc0) == 0xc0)) {
|
||||||
(mode >= X86EMUL_MODE_PROT16 && (ctxt->modrm & 0x80)))) {
|
|
||||||
ctxt->d = NotImpl;
|
ctxt->d = NotImpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue