26 lines
870 B
Diff
26 lines
870 B
Diff
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
|
|
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
|
|
@@ -232,7 +232,8 @@ static uint8_t twobyte_table[256] = {
|
|
DstReg|SrcMem|ModRM, DstReg|SrcMem|ModRM,
|
|
ByteOp|DstReg|SrcMem|ModRM|Mov, DstReg|SrcMem16|ModRM|Mov,
|
|
/* 0xC0 - 0xC7 */
|
|
- ByteOp|DstMem|SrcReg|ModRM, DstMem|SrcReg|ModRM, 0, 0,
|
|
+ ByteOp|DstMem|SrcReg|ModRM, DstMem|SrcReg|ModRM,
|
|
+ 0, DstMem|SrcReg|ModRM|Mov,
|
|
0, 0, 0, ImplicitOps|ModRM,
|
|
/* 0xC8 - 0xCF */
|
|
ImplicitOps, ImplicitOps, ImplicitOps, ImplicitOps,
|
|
@@ -3656,6 +3657,12 @@ x86_emulate(
|
|
case 8: *src.reg = dst.val; break;
|
|
}
|
|
goto add;
|
|
+
|
|
+ case 0xc3: /* movnti */
|
|
+ /* Ignore the non-temporal hint for now. */
|
|
+ generate_exception_if(dst.bytes <= 2, EXC_UD, -1);
|
|
+ dst.val = src.val;
|
|
+ break;
|
|
}
|
|
goto writeback;
|
|
|