aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2010-08-26 04:56:07 -0400
committerAvi Kivity <avi@redhat.com>2010-10-24 04:51:36 -0400
commit5315fbb223086c078c979d16734844ccff12f087 (patch)
tree2dd51f5f215706dc7f7e42ab7985d85cac225e13
parent8d8f4e9f66ab36e4fcc75eca1e828af8466309f1 (diff)
KVM: x86 emulator: simplify ALU block (opcodes 00-3F) decode flags
Use the new byte/word dual opcode decode. Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
-rw-r--r--arch/x86/kvm/emulate.c40
1 files changed, 16 insertions, 24 deletions
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 1a230b5495e0..277e667a382f 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -2385,42 +2385,34 @@ static struct group_dual group9 = { {
2385 2385
2386static struct opcode opcode_table[256] = { 2386static struct opcode opcode_table[256] = {
2387 /* 0x00 - 0x07 */ 2387 /* 0x00 - 0x07 */
2388 D(ByteOp | DstMem | SrcReg | ModRM | Lock), D(DstMem | SrcReg | ModRM | Lock), 2388 D2bv(DstMem | SrcReg | ModRM | Lock), D2bv(DstReg | SrcMem | ModRM),
2389 D(ByteOp | DstReg | SrcMem | ModRM), D(DstReg | SrcMem | ModRM), 2389 D2bv(DstAcc | SrcImm),
2390 D(ByteOp | DstAcc | SrcImm), D(DstAcc | SrcImm),
2391 D(ImplicitOps | Stack | No64), D(ImplicitOps | Stack | No64), 2390 D(ImplicitOps | Stack | No64), D(ImplicitOps | Stack | No64),
2392 /* 0x08 - 0x0F */ 2391 /* 0x08 - 0x0F */
2393 D(ByteOp | DstMem | SrcReg | ModRM | Lock), D(DstMem | SrcReg | ModRM | Lock), 2392 D2bv(DstMem | SrcReg | ModRM | Lock), D2bv(DstReg | SrcMem | ModRM),
2394 D(ByteOp | DstReg | SrcMem | ModRM), D(DstReg | SrcMem | ModRM), 2393 D2bv(DstAcc | SrcImm),
2395 D(ByteOp | DstAcc | SrcImm), D(DstAcc | SrcImm),
2396 D(ImplicitOps | Stack | No64), N, 2394 D(ImplicitOps | Stack | No64), N,
2397 /* 0x10 - 0x17 */ 2395 /* 0x10 - 0x17 */
2398 D(ByteOp | DstMem | SrcReg | ModRM | Lock), D(DstMem | SrcReg | ModRM | Lock), 2396 D2bv(DstMem | SrcReg | ModRM | Lock), D2bv(DstReg | SrcMem | ModRM),
2399 D(ByteOp | DstReg | SrcMem | ModRM), D(DstReg | SrcMem | ModRM), 2397 D2bv(DstAcc | SrcImm),
2400 D(ByteOp | DstAcc | SrcImm), D(DstAcc | SrcImm),
2401 D(ImplicitOps | Stack | No64), D(ImplicitOps | Stack | No64), 2398 D(ImplicitOps | Stack | No64), D(ImplicitOps | Stack | No64),
2402 /* 0x18 - 0x1F */ 2399 /* 0x18 - 0x1F */
2403 D(ByteOp | DstMem | SrcReg | ModRM | Lock), D(DstMem | SrcReg | ModRM | Lock), 2400 D2bv(DstMem | SrcReg | ModRM | Lock), D2bv(DstReg | SrcMem | ModRM),
2404 D(ByteOp | DstReg | SrcMem | ModRM), D(DstReg | SrcMem | ModRM), 2401 D2bv(DstAcc | SrcImm),
2405 D(ByteOp | DstAcc | SrcImm), D(DstAcc | SrcImm),
2406 D(ImplicitOps | Stack | No64), D(ImplicitOps | Stack | No64), 2402 D(ImplicitOps | Stack | No64), D(ImplicitOps | Stack | No64),
2407 /* 0x20 - 0x27 */ 2403 /* 0x20 - 0x27 */
2408 D(ByteOp | DstMem | SrcReg | ModRM | Lock), D(DstMem | SrcReg | ModRM | Lock), 2404 D2bv(DstMem | SrcReg | ModRM | Lock), D2bv(DstReg | SrcMem | ModRM),
2409 D(ByteOp | DstReg | SrcMem | ModRM), D(DstReg | SrcMem | ModRM), 2405 D2bv(DstAcc | SrcImm), N, N,
2410 D(ByteOp | DstAcc | SrcImmByte), D(DstAcc | SrcImm), N, N,
2411 /* 0x28 - 0x2F */ 2406 /* 0x28 - 0x2F */
2412 D(ByteOp | DstMem | SrcReg | ModRM | Lock), D(DstMem | SrcReg | ModRM | Lock), 2407 D2bv(DstMem | SrcReg | ModRM | Lock), D2bv(DstReg | SrcMem | ModRM),
2413 D(ByteOp | DstReg | SrcMem | ModRM), D(DstReg | SrcMem | ModRM), 2408 D2bv(DstAcc | SrcImm),
2414 D(ByteOp | DstAcc | SrcImmByte), D(DstAcc | SrcImm),
2415 N, I(ByteOp | DstAcc | No64, em_das), 2409 N, I(ByteOp | DstAcc | No64, em_das),
2416 /* 0x30 - 0x37 */ 2410 /* 0x30 - 0x37 */
2417 D(ByteOp | DstMem | SrcReg | ModRM | Lock), D(DstMem | SrcReg | ModRM | Lock), 2411 D2bv(DstMem | SrcReg | ModRM | Lock), D2bv(DstReg | SrcMem | ModRM),
2418 D(ByteOp | DstReg | SrcMem | ModRM), D(DstReg | SrcMem | ModRM), 2412 D2bv(DstAcc | SrcImm), N, N,
2419 D(ByteOp | DstAcc | SrcImmByte), D(DstAcc | SrcImm), N, N,
2420 /* 0x38 - 0x3F */ 2413 /* 0x38 - 0x3F */
2421 D(ByteOp | DstMem | SrcReg | ModRM), D(DstMem | SrcReg | ModRM), 2414 D2bv(DstMem | SrcReg | ModRM), D2bv(DstReg | SrcMem | ModRM),
2422 D(ByteOp | DstReg | SrcMem | ModRM), D(DstReg | SrcMem | ModRM), 2415 D2bv(DstAcc | SrcImm),
2423 D(ByteOp | DstAcc | SrcImm), D(DstAcc | SrcImm),
2424 N, N, 2416 N, N,
2425 /* 0x40 - 0x4F */ 2417 /* 0x40 - 0x4F */
2426 X16(D(DstReg)), 2418 X16(D(DstReg)),