lkml.org 
[lkml]   [2008]   [Jan]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 17/54] KVM: x86 emulator: unify two switches
    Date
    The rep prefix cleanup left two switch () statements next to each other.
    Unify them.

    Signed-off-by: Avi Kivity <avi@qumranet.com>
    ---
    drivers/kvm/x86_emulate.c | 50 ++++++++++++++++++++------------------------
    1 files changed, 23 insertions(+), 27 deletions(-)

    diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
    index 53377f0..499d1ad 100644
    --- a/drivers/kvm/x86_emulate.c
    +++ b/drivers/kvm/x86_emulate.c
    @@ -1541,31 +1541,6 @@ special_insn:
    case 0x9d: /* popf */
    c->dst.ptr = (unsigned long *) &ctxt->eflags;
    goto pop_instruction;
    - case 0xc3: /* ret */
    - c->dst.ptr = &c->eip;
    - goto pop_instruction;
    - case 0xf4: /* hlt */
    - ctxt->vcpu->halt_request = 1;
    - goto done;
    - case 0xf5: /* cmc */
    - /* complement carry flag from eflags reg */
    - ctxt->eflags ^= EFLG_CF;
    - c->dst.type = OP_NONE; /* Disable writeback. */
    - break;
    - case 0xf8: /* clc */
    - ctxt->eflags &= ~EFLG_CF;
    - c->dst.type = OP_NONE; /* Disable writeback. */
    - break;
    - case 0xfa: /* cli */
    - ctxt->eflags &= ~X86_EFLAGS_IF;
    - c->dst.type = OP_NONE; /* Disable writeback. */
    - break;
    - case 0xfb: /* sti */
    - ctxt->eflags |= X86_EFLAGS_IF;
    - c->dst.type = OP_NONE; /* Disable writeback. */
    - break;
    - }
    - switch (c->b) {
    case 0xa4 ... 0xa5: /* movs */
    c->dst.type = OP_MEM;
    c->dst.bytes = (c->d & ByteOp) ? 1 : c->op_bytes;
    @@ -1652,6 +1627,9 @@ special_insn:
    case 0xae ... 0xaf: /* scas */
    DPRINTF("Urk! I don't handle SCAS.\n");
    goto cannot_emulate;
    + case 0xc3: /* ret */
    + c->dst.ptr = &c->eip;
    + goto pop_instruction;
    case 0xe8: /* call (near) */ {
    long int rel;
    switch (c->op_bytes) {
    @@ -1676,8 +1654,26 @@ special_insn:
    JMP_REL(c->src.val);
    c->dst.type = OP_NONE; /* Disable writeback. */
    break;
    -
    -
    + case 0xf4: /* hlt */
    + ctxt->vcpu->halt_request = 1;
    + goto done;
    + case 0xf5: /* cmc */
    + /* complement carry flag from eflags reg */
    + ctxt->eflags ^= EFLG_CF;
    + c->dst.type = OP_NONE; /* Disable writeback. */
    + break;
    + case 0xf8: /* clc */
    + ctxt->eflags &= ~EFLG_CF;
    + c->dst.type = OP_NONE; /* Disable writeback. */
    + break;
    + case 0xfa: /* cli */
    + ctxt->eflags &= ~X86_EFLAGS_IF;
    + c->dst.type = OP_NONE; /* Disable writeback. */
    + break;
    + case 0xfb: /* sti */
    + ctxt->eflags |= X86_EFLAGS_IF;
    + c->dst.type = OP_NONE; /* Disable writeback. */
    + break;
    }
    goto writeback;

    --
    1.5.3.7


    \
     
     \ /
      Last update: 2008-01-01 16:43    [W:4.042 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site