From e89edd94d4f1352f55da8f52cd226c68f05a0715 Mon Sep 17 00:00:00 2001 From: Nitin A Kamble Date: Tue, 16 Oct 2007 18:23:27 -0700 Subject: [PATCH] --- yaml --- r: 80666 b: refs/heads/master c: b284be576471b1521dd04c0845beedb790cbb9d7 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/kvm/x86_emulate.c | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 304169c96b98..0a2a7bab9ac8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 42bf3f0a1f5a25be26e6bb53162cdee82410310d +refs/heads/master: b284be576471b1521dd04c0845beedb790cbb9d7 diff --git a/trunk/drivers/kvm/x86_emulate.c b/trunk/drivers/kvm/x86_emulate.c index 988c6498640f..e962de331606 100644 --- a/trunk/drivers/kvm/x86_emulate.c +++ b/trunk/drivers/kvm/x86_emulate.c @@ -161,10 +161,10 @@ static u8 opcode_table[256] = { ImplicitOps, SrcImm|ImplicitOps, 0, SrcImmByte|ImplicitOps, 0, 0, 0, 0, /* 0xF0 - 0xF7 */ 0, 0, 0, 0, - ImplicitOps, 0, + ImplicitOps, ImplicitOps, ByteOp | DstMem | SrcNone | ModRM, DstMem | SrcNone | ModRM, /* 0xF8 - 0xFF */ - 0, 0, 0, 0, + ImplicitOps, 0, ImplicitOps, ImplicitOps, 0, 0, ByteOp | DstMem | SrcNone | ModRM, DstMem | SrcNone | ModRM }; @@ -1476,6 +1476,23 @@ x86_emulate_insn(struct x86_emulate_ctxt *ctxt, struct x86_emulate_ops *ops) case 0xf4: /* hlt */ ctxt->vcpu->halt_request = 1; goto done; + case 0xf5: /* cmc */ + /* complement carry flag from eflags reg */ + ctxt->eflags ^= EFLG_CF; + c->dst.type = OP_NONE; /* Disable writeback. */ + break; + case 0xf8: /* clc */ + ctxt->eflags &= ~EFLG_CF; + c->dst.type = OP_NONE; /* Disable writeback. */ + break; + case 0xfa: /* cli */ + ctxt->eflags &= ~X86_EFLAGS_IF; + c->dst.type = OP_NONE; /* Disable writeback. */ + break; + case 0xfb: /* sti */ + ctxt->eflags |= X86_EFLAGS_IF; + c->dst.type = OP_NONE; /* Disable writeback. */ + break; } if (c->rep_prefix) { if (c->regs[VCPU_REGS_RCX] == 0) {