KVM: x86 emulator: Use opcode::execute for Group 4/5 instructions
authorTakuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
Tue, 6 Dec 2011 09:06:44 +0000 (18:06 +0900)
committerAvi Kivity <avi@redhat.com>
Tue, 27 Dec 2011 09:23:36 +0000 (11:23 +0200)
Group 4: FE
Group 5: FF

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 cd49774f2d0eb7a4c6d6525e00d0a58fe60c9446..5b78785de41be751241d2b2df6a048125942d9e6 100644 (file)
@@ -3213,16 +3213,19 @@ static struct opcode group3[] = {
 };
 
 static struct opcode group4[] = {
-       D(ByteOp | DstMem | SrcNone | ModRM | Lock), D(ByteOp | DstMem | SrcNone | ModRM | Lock),
+       I(ByteOp | DstMem | SrcNone | ModRM | Lock, em_grp45),
+       I(ByteOp | DstMem | SrcNone | ModRM | Lock, em_grp45),
        N, N, N, N, N, N,
 };
 
 static struct opcode group5[] = {
-       D(DstMem | SrcNone | ModRM | Lock), D(DstMem | SrcNone | ModRM | Lock),
-       D(SrcMem | ModRM | Stack),
+       I(DstMem | SrcNone | ModRM | Lock, em_grp45),
+       I(DstMem | SrcNone | ModRM | Lock, em_grp45),
+       I(SrcMem | ModRM | Stack, em_grp45),
        I(SrcMemFAddr | ModRM | ImplicitOps | Stack, em_call_far),
-       D(SrcMem | ModRM | Stack), D(SrcMemFAddr | ModRM | ImplicitOps),
-       D(SrcMem | ModRM | Stack), N,
+       I(SrcMem | ModRM | Stack, em_grp45),
+       I(SrcMemFAddr | ModRM | ImplicitOps, em_grp45),
+       I(SrcMem | ModRM | Stack, em_grp45), N,
 };
 
 static struct opcode group6[] = {
@@ -4082,12 +4085,6 @@ special_insn:
        case 0xfd: /* std */
                ctxt->eflags |= EFLG_DF;
                break;
-       case 0xfe: /* Grp4 */
-               rc = em_grp45(ctxt);
-               break;
-       case 0xff: /* Grp5 */
-               rc = em_grp45(ctxt);
-               break;
        default:
                goto cannot_emulate;
        }