提交 d6d367d6 编写于 作者: G Gleb Natapov 提交者: Avi Kivity

KVM: x86 emulator: Fix DstAcc decoding.

Set correct operation length. Add RAX (64bit) handling.
Signed-off-by: NGleb Natapov <gleb@redhat.com>
Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
上级 08e850c6
...@@ -1194,9 +1194,9 @@ x86_decode_insn(struct x86_emulate_ctxt *ctxt, struct x86_emulate_ops *ops) ...@@ -1194,9 +1194,9 @@ x86_decode_insn(struct x86_emulate_ctxt *ctxt, struct x86_emulate_ops *ops)
break; break;
case DstAcc: case DstAcc:
c->dst.type = OP_REG; c->dst.type = OP_REG;
c->dst.bytes = c->op_bytes; c->dst.bytes = (c->d & ByteOp) ? 1 : c->op_bytes;
c->dst.ptr = &c->regs[VCPU_REGS_RAX]; c->dst.ptr = &c->regs[VCPU_REGS_RAX];
switch (c->op_bytes) { switch (c->dst.bytes) {
case 1: case 1:
c->dst.val = *(u8 *)c->dst.ptr; c->dst.val = *(u8 *)c->dst.ptr;
break; break;
...@@ -1206,6 +1206,9 @@ x86_decode_insn(struct x86_emulate_ctxt *ctxt, struct x86_emulate_ops *ops) ...@@ -1206,6 +1206,9 @@ x86_decode_insn(struct x86_emulate_ctxt *ctxt, struct x86_emulate_ops *ops)
case 4: case 4:
c->dst.val = *(u32 *)c->dst.ptr; c->dst.val = *(u32 *)c->dst.ptr;
break; break;
case 8:
c->dst.val = *(u64 *)c->dst.ptr;
break;
} }
c->dst.orig_val = c->dst.val; c->dst.orig_val = c->dst.val;
break; break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册