diff options
author | Avi Kivity <avi@redhat.com> | 2010-08-26 04:56:07 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2010-10-24 04:51:36 -0400 |
commit | 5315fbb223086c078c979d16734844ccff12f087 (patch) | |
tree | 2dd51f5f215706dc7f7e42ab7985d85cac225e13 | |
parent | 8d8f4e9f66ab36e4fcc75eca1e828af8466309f1 (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.c | 40 |
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 | ||
2386 | static struct opcode opcode_table[256] = { | 2386 | static 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)), |