Skip to content

Commit

Permalink
KVM: x86 emulator: use struct operand for mov reg,dr and mov dr,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 1a0c7d4 commit b27f385
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 | DstMem | Priv | Op3264), D(ModRM | Priv | Op3264),
D(ModRM | SrcMem | Priv | Op3264), D(ModRM | Priv | Op3264),
D(ModRM | DstMem | Priv | Op3264), D(ModRM | DstMem | Priv | Op3264),
D(ModRM | SrcMem | Priv | Op3264), D(ModRM | SrcMem | Priv | Op3264),
N, N, N, N,
N, N, N, N, N, N, N, N,
/* 0x30 - 0x3F */
Expand Down Expand Up @@ -3248,8 +3248,7 @@ x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
emulate_ud(ctxt);
goto done;
}
ops->get_dr(c->modrm_reg, &c->regs[c->modrm_rm], ctxt->vcpu);
c->dst.type = OP_NONE; /* no writeback */
ops->get_dr(c->modrm_reg, &c->dst.val, ctxt->vcpu);
break;
case 0x22: /* mov reg, cr */
if (ops->set_cr(c->modrm_reg, c->src.val, ctxt->vcpu)) {
Expand All @@ -3265,7 +3264,7 @@ x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
goto done;
}

if (ops->set_dr(c->modrm_reg, c->regs[c->modrm_rm] &
if (ops->set_dr(c->modrm_reg, c->src.val &
((ctxt->mode == X86EMUL_MODE_PROT64) ?
~0ULL : ~0U), ctxt->vcpu) < 0) {
/* #UD condition is already handled by the code above */
Expand Down

0 comments on commit b27f385

Please sign in to comment.