Skip to content

Commit

Permalink
KVM: x86 emulator: use struct operand for mov reg,cr and mov cr,reg f…
Browse files Browse the repository at this point in the history
…or reg op

This is an ordinary modrm source or destination; use the standard structure
representing it.

Signed-off-by: Avi Kivity <avi@redhat.com>
  • Loading branch information
Avi Kivity committed Oct 24, 2010
1 parent cecc9e3 commit 1a0c7d4
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions arch/x86/kvm/emulate.c
Original file line number Diff line number Diff line change
Expand Up @@ -2210,8 +2210,8 @@ static struct opcode twobyte_table[256] = {
/* 0x10 - 0x1F */
N, N, N, N, N, N, N, N, D(ImplicitOps | ModRM), N, N, N, N, N, N, N,
/* 0x20 - 0x2F */
D(ModRM | ImplicitOps | Priv | Op3264), D(ModRM | Priv | Op3264),
D(ModRM | ImplicitOps | Priv | Op3264), D(ModRM | Priv | Op3264),
D(ModRM | DstMem | Priv | Op3264), D(ModRM | Priv | Op3264),
D(ModRM | SrcMem | Priv | Op3264), D(ModRM | Priv | Op3264),
N, N, N, N,
N, N, N, N, N, N, N, N,
/* 0x30 - 0x3F */
Expand Down Expand Up @@ -3240,8 +3240,7 @@ x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
emulate_ud(ctxt);
goto done;
}
c->regs[c->modrm_rm] = ops->get_cr(c->modrm_reg, ctxt->vcpu);
c->dst.type = OP_NONE; /* no writeback */
c->dst.val = ops->get_cr(c->modrm_reg, ctxt->vcpu);
break;
case 0x21: /* mov from dr to reg */
if ((ops->get_cr(4, ctxt->vcpu) & X86_CR4_DE) &&
Expand All @@ -3253,7 +3252,7 @@ x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
c->dst.type = OP_NONE; /* no writeback */
break;
case 0x22: /* mov reg, cr */
if (ops->set_cr(c->modrm_reg, c->modrm_val, ctxt->vcpu)) {
if (ops->set_cr(c->modrm_reg, c->src.val, ctxt->vcpu)) {
emulate_gp(ctxt, 0);
goto done;
}
Expand Down

0 comments on commit 1a0c7d4

Please sign in to comment.