Commit 2b5e97e1 authored by Takuya Yoshikawa's avatar Takuya Yoshikawa Committed by Avi Kivity

KVM: x86 emulator: Use opcode::execute for INS/OUTS from/to port in DX

INSB       : 6C
INSW/INSD  : 6D
OUTSB      : 6E
OUTSW/OUTSD: 6F

The I/O port address is read from the DX register when we decode the
operand because we see the SrcDX/DstDX flag is set.
Signed-off-by: default avatarTakuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent d77fe635
...@@ -3321,8 +3321,8 @@ static struct opcode opcode_table[256] = { ...@@ -3321,8 +3321,8 @@ static struct opcode opcode_table[256] = {
I(DstReg | SrcMem | ModRM | Src2Imm, em_imul_3op), I(DstReg | SrcMem | ModRM | Src2Imm, em_imul_3op),
I(SrcImmByte | Mov | Stack, em_push), I(SrcImmByte | Mov | Stack, em_push),
I(DstReg | SrcMem | ModRM | Src2ImmByte, em_imul_3op), I(DstReg | SrcMem | ModRM | Src2ImmByte, em_imul_3op),
D2bvIP(DstDI | SrcDX | Mov | String, ins, check_perm_in), /* insb, insw/insd */ I2bvIP(DstDI | SrcDX | Mov | String, em_in, ins, check_perm_in), /* insb, insw/insd */
D2bvIP(SrcSI | DstDX | String, outs, check_perm_out), /* outsb, outsw/outsd */ I2bvIP(SrcSI | DstDX | String, em_out, outs, check_perm_out), /* outsb, outsw/outsd */
/* 0x70 - 0x7F */ /* 0x70 - 0x7F */
X16(D(SrcImmByte)), X16(D(SrcImmByte)),
/* 0x80 - 0x87 */ /* 0x80 - 0x87 */
...@@ -4027,16 +4027,6 @@ int x86_emulate_insn(struct x86_emulate_ctxt *ctxt) ...@@ -4027,16 +4027,6 @@ int x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
goto cannot_emulate; goto cannot_emulate;
ctxt->dst.val = (s32) ctxt->src.val; ctxt->dst.val = (s32) ctxt->src.val;
break; break;
case 0x6c: /* insb */
case 0x6d: /* insw/insd */
ctxt->src.val = ctxt->regs[VCPU_REGS_RDX];
rc = em_in(ctxt);
break;
case 0x6e: /* outsb */
case 0x6f: /* outsw/outsd */
ctxt->dst.val = ctxt->regs[VCPU_REGS_RDX];
rc = em_out(ctxt);
break;
case 0x70 ... 0x7f: /* jcc (short) */ case 0x70 ... 0x7f: /* jcc (short) */
if (test_cc(ctxt->b, ctxt->eflags)) if (test_cc(ctxt->b, ctxt->eflags))
jmp_rel(ctxt, ctxt->src.val); jmp_rel(ctxt, ctxt->src.val);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment