KVM: x86 emulator: unify two switches
The rep prefix cleanup left two switch () statements next to each other. Unify them. Signed-off-by: Avi Kivity <avi@qumranet.com>
This commit is contained in:
parent
b9fa9d6bc6
commit
111de5d60c
|
@ -1541,31 +1541,6 @@ special_insn:
|
||||||
case 0x9d: /* popf */
|
case 0x9d: /* popf */
|
||||||
c->dst.ptr = (unsigned long *) &ctxt->eflags;
|
c->dst.ptr = (unsigned long *) &ctxt->eflags;
|
||||||
goto pop_instruction;
|
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 */
|
case 0xa4 ... 0xa5: /* movs */
|
||||||
c->dst.type = OP_MEM;
|
c->dst.type = OP_MEM;
|
||||||
c->dst.bytes = (c->d & ByteOp) ? 1 : c->op_bytes;
|
c->dst.bytes = (c->d & ByteOp) ? 1 : c->op_bytes;
|
||||||
|
@ -1652,6 +1627,9 @@ special_insn:
|
||||||
case 0xae ... 0xaf: /* scas */
|
case 0xae ... 0xaf: /* scas */
|
||||||
DPRINTF("Urk! I don't handle SCAS.\n");
|
DPRINTF("Urk! I don't handle SCAS.\n");
|
||||||
goto cannot_emulate;
|
goto cannot_emulate;
|
||||||
|
case 0xc3: /* ret */
|
||||||
|
c->dst.ptr = &c->eip;
|
||||||
|
goto pop_instruction;
|
||||||
case 0xe8: /* call (near) */ {
|
case 0xe8: /* call (near) */ {
|
||||||
long int rel;
|
long int rel;
|
||||||
switch (c->op_bytes) {
|
switch (c->op_bytes) {
|
||||||
|
@ -1676,8 +1654,26 @@ special_insn:
|
||||||
JMP_REL(c->src.val);
|
JMP_REL(c->src.val);
|
||||||
c->dst.type = OP_NONE; /* Disable writeback. */
|
c->dst.type = OP_NONE; /* Disable writeback. */
|
||||||
break;
|
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;
|
goto writeback;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue