# HG changeset patch
# User Steven Hand <steven@xxxxxxxxxxxxx>
# Node ID d4b99e615af25d510302ee3bac552621a19123a1
# Parent a2549eb494827196e318716a5bfeeae2b05a22e7
Add mmio emulation of opcodes 0x3A and 0x85 for SMP W2K3 installation.
Signed-off-by: Qing He <qing.he@xxxxxxxxx>
Signed-off-by: Steven Hand <steven@xxxxxxxxxxxxx>
---
xen/arch/x86/hvm/platform.c | 10 ++++++++++
1 files changed, 10 insertions(+)
diff -r a2549eb49482 -r d4b99e615af2 xen/arch/x86/hvm/platform.c
--- a/xen/arch/x86/hvm/platform.c Fri Sep 22 14:55:11 2006 +0100
+++ b/xen/arch/x86/hvm/platform.c Fri Sep 22 14:57:19 2006 +0100
@@ -416,6 +416,11 @@ static int hvm_decode(int realmode, unsi
GET_OP_SIZE_FOR_NONEBYTE(instr->op_size);
return reg_mem(instr->op_size, opcode, instr, rex);
+ case 0x3A: /* cmp r8, r8/m8 */
+ instr->instr = INSTR_CMP;
+ GET_OP_SIZE_FOR_BYTE(instr->op_size);
+ return reg_mem(instr->op_size, opcode, instr, rex);
+
case 0x3B: /* cmp m32/16, r32/16 */
instr->instr = INSTR_CMP;
GET_OP_SIZE_FOR_NONEBYTE(instr->op_size);
@@ -470,6 +475,11 @@ static int hvm_decode(int realmode, unsi
instr->op_size = BYTE;
GET_OP_SIZE_FOR_BYTE(size_reg);
return mem_reg(size_reg, opcode, instr, rex);
+
+ case 0x85: /* text m16/32, r16/32 */
+ instr->instr = INSTR_TEST;
+ GET_OP_SIZE_FOR_NONEBYTE(instr->op_size);
+ return mem_reg(instr->op_size, opcode, instr, rex);
case 0x87: /* xchg {r/m16|r/m32}, {m/r16|m/r32} */
instr->instr = INSTR_XCHG;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|