KVM: x86 emulator: simplify OpMem64 decode
authorAvi Kivity <avi@redhat.com>
Tue, 13 Sep 2011 07:45:48 +0000 (10:45 +0300)
committerAvi Kivity <avi@redhat.com>
Sun, 25 Sep 2011 16:52:55 +0000 (19:52 +0300)
Use the same technique as the other OpMem variants, and goto mem_common.

Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/kvm/emulate.c

index e46809b8f31b1fb7d55c5276ed5ad3208a15f5af..1c95935fe1b7c05a88e56d0d0f382f941daa2c2a 100644 (file)
@@ -3361,11 +3361,7 @@ static int decode_operand(struct x86_emulate_ctxt *ctxt, struct operand *op,
                rc = decode_imm(ctxt, op, 1, false);
                break;
        case OpMem:
-       case OpMem64:
-               if (d == OpMem64)
-                       ctxt->memop.bytes = 8;
-               else
-                       ctxt->memop.bytes = (ctxt->d & ByteOp) ? 1 : ctxt->op_bytes;
+               ctxt->memop.bytes = (ctxt->d & ByteOp) ? 1 : ctxt->op_bytes;
        mem_common:
                *op = ctxt->memop;
                ctxt->memopp = op;
@@ -3373,6 +3369,9 @@ static int decode_operand(struct x86_emulate_ctxt *ctxt, struct operand *op,
                        fetch_bit_operand(ctxt);
                op->orig_val = op->val;
                break;
+       case OpMem64:
+               ctxt->memop.bytes = 8;
+               goto mem_common;
        case OpAcc:
                op->type = OP_REG;
                op->bytes = (ctxt->d & ByteOp) ? 1 : ctxt->op_bytes;