aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/kvm
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/kvm')
-rw-r--r--drivers/kvm/x86_emulate.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
index 9f1772fd7480..18c2b2cea608 100644
--- a/drivers/kvm/x86_emulate.c
+++ b/drivers/kvm/x86_emulate.c
@@ -123,7 +123,7 @@ static u8 opcode_table[256] = {
123 ByteOp | DstReg | SrcMem | ModRM | Mov, DstReg | SrcMem | ModRM | Mov, 123 ByteOp | DstReg | SrcMem | ModRM | Mov, DstReg | SrcMem | ModRM | Mov,
124 0, 0, 0, DstMem | SrcNone | ModRM | Mov, 124 0, 0, 0, DstMem | SrcNone | ModRM | Mov,
125 /* 0x90 - 0x9F */ 125 /* 0x90 - 0x9F */
126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ImplicitOps, 0, 0, 0,
127 /* 0xA0 - 0xA7 */ 127 /* 0xA0 - 0xA7 */
128 ByteOp | DstReg | SrcMem | Mov, DstReg | SrcMem | Mov, 128 ByteOp | DstReg | SrcMem | Mov, DstReg | SrcMem | Mov,
129 ByteOp | DstMem | SrcReg | Mov, DstMem | SrcReg | Mov, 129 ByteOp | DstMem | SrcReg | Mov, DstMem | SrcReg | Mov,
@@ -928,7 +928,8 @@ push:
928 dst.bytes = op_bytes; 928 dst.bytes = op_bytes;
929 dst.val = src.val; 929 dst.val = src.val;
930 register_address_increment(_regs[VCPU_REGS_RSP], -op_bytes); 930 register_address_increment(_regs[VCPU_REGS_RSP], -op_bytes);
931 dst.ptr = register_address(ctxt->ss_base, _regs[VCPU_REGS_RSP]); 931 dst.ptr = (void *) register_address(ctxt->ss_base,
932 _regs[VCPU_REGS_RSP]);
932 break; 933 break;
933 case 0x80 ... 0x83: /* Grp1 */ 934 case 0x80 ... 0x83: /* Grp1 */
934 switch (modrm_reg) { 935 switch (modrm_reg) {
@@ -1216,6 +1217,12 @@ special_insn:
1216 ) == 0) 1217 ) == 0)
1217 return -1; 1218 return -1;
1218 return 0; 1219 return 0;
1220
1221 case 0x9c: /* pushf */
1222 src.val = (unsigned long) _eflags;
1223 goto push;
1224 break;
1225
1219 } 1226 }
1220 if (rep_prefix) { 1227 if (rep_prefix) {
1221 if (_regs[VCPU_REGS_RCX] == 0) { 1228 if (_regs[VCPU_REGS_RCX] == 0) {