diff options
author | Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp> | 2011-12-06 04:06:02 -0500 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2011-12-27 04:23:35 -0500 |
commit | c15af35f54631b9e9b7ad1981016cc6e73cec794 (patch) | |
tree | 2c345f6fca237a603ee4764abdd770977d8d86fa /arch/x86/kvm/emulate.c | |
parent | 4f69b6805c4f818cf7f4126978cc4a54c489119f (diff) |
KVM: x86 emulator: Use opcode::execute for Group 1A instruction
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>
Diffstat (limited to 'arch/x86/kvm/emulate.c')
-rw-r--r-- | arch/x86/kvm/emulate.c | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c index f641201c7b31..cd49774f2d0e 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c | |||
@@ -1675,11 +1675,6 @@ static int em_jmp_far(struct x86_emulate_ctxt *ctxt) | |||
1675 | return X86EMUL_CONTINUE; | 1675 | return X86EMUL_CONTINUE; |
1676 | } | 1676 | } |
1677 | 1677 | ||
1678 | static int em_grp1a(struct x86_emulate_ctxt *ctxt) | ||
1679 | { | ||
1680 | return emulate_pop(ctxt, &ctxt->dst.val, ctxt->dst.bytes); | ||
1681 | } | ||
1682 | |||
1683 | static int em_grp2(struct x86_emulate_ctxt *ctxt) | 1678 | static int em_grp2(struct x86_emulate_ctxt *ctxt) |
1684 | { | 1679 | { |
1685 | switch (ctxt->modrm_reg) { | 1680 | switch (ctxt->modrm_reg) { |
@@ -3203,7 +3198,7 @@ static struct opcode group1[] = { | |||
3203 | }; | 3198 | }; |
3204 | 3199 | ||
3205 | static struct opcode group1A[] = { | 3200 | static struct opcode group1A[] = { |
3206 | D(DstMem | SrcNone | ModRM | Mov | Stack), N, N, N, N, N, N, N, | 3201 | I(DstMem | SrcNone | ModRM | Mov | Stack, em_pop), N, N, N, N, N, N, N, |
3207 | }; | 3202 | }; |
3208 | 3203 | ||
3209 | static struct opcode group3[] = { | 3204 | static struct opcode group3[] = { |
@@ -4031,9 +4026,6 @@ special_insn: | |||
4031 | case 0x8d: /* lea r16/r32, m */ | 4026 | case 0x8d: /* lea r16/r32, m */ |
4032 | ctxt->dst.val = ctxt->src.addr.mem.ea; | 4027 | ctxt->dst.val = ctxt->src.addr.mem.ea; |
4033 | break; | 4028 | break; |
4034 | case 0x8f: /* pop (sole member of Grp1a) */ | ||
4035 | rc = em_grp1a(ctxt); | ||
4036 | break; | ||
4037 | case 0x90 ... 0x97: /* nop / xchg reg, rax */ | 4029 | case 0x90 ... 0x97: /* nop / xchg reg, rax */ |
4038 | if (ctxt->dst.addr.reg == &ctxt->regs[VCPU_REGS_RAX]) | 4030 | if (ctxt->dst.addr.reg == &ctxt->regs[VCPU_REGS_RAX]) |
4039 | break; | 4031 | break; |