OSDN Git Service

KVM: x86 emulator: Use opcode::execute for Group 1A instruction
authorTakuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
Tue, 6 Dec 2011 09:06:02 +0000 (18:06 +0900)
committerAvi Kivity <avi@redhat.com>
Tue, 27 Dec 2011 09:23:35 +0000 (11:23 +0200)
Group 1A: 8F

Register em_pop() directly and remove em_grp1a().

Signed-off-by: Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/kvm/emulate.c

index f641201..cd49774 100644 (file)
@@ -1675,11 +1675,6 @@ static int em_jmp_far(struct x86_emulate_ctxt *ctxt)
        return X86EMUL_CONTINUE;
 }
 
-static int em_grp1a(struct x86_emulate_ctxt *ctxt)
-{
-       return emulate_pop(ctxt, &ctxt->dst.val, ctxt->dst.bytes);
-}
-
 static int em_grp2(struct x86_emulate_ctxt *ctxt)
 {
        switch (ctxt->modrm_reg) {
@@ -3203,7 +3198,7 @@ static struct opcode group1[] = {
 };
 
 static struct opcode group1A[] = {
-       D(DstMem | SrcNone | ModRM | Mov | Stack), N, N, N, N, N, N, N,
+       I(DstMem | SrcNone | ModRM | Mov | Stack, em_pop), N, N, N, N, N, N, N,
 };
 
 static struct opcode group3[] = {
@@ -4031,9 +4026,6 @@ special_insn:
        case 0x8d: /* lea r16/r32, m */
                ctxt->dst.val = ctxt->src.addr.mem.ea;
                break;
-       case 0x8f:              /* pop (sole member of Grp1a) */
-               rc = em_grp1a(ctxt);
-               break;
        case 0x90 ... 0x97: /* nop / xchg reg, rax */
                if (ctxt->dst.addr.reg == &ctxt->regs[VCPU_REGS_RAX])
                        break;