|
@@ -1870,17 +1870,16 @@ static inline int emulate_grp9(struct x86_emulate_ctxt *ctxt,
|
|
|
struct x86_emulate_ops *ops)
|
|
|
{
|
|
|
struct decode_cache *c = &ctxt->decode;
|
|
|
- u64 old = c->dst.orig_val;
|
|
|
+ u64 old = c->dst.orig_val64;
|
|
|
|
|
|
if (((u32) (old >> 0) != (u32) c->regs[VCPU_REGS_RAX]) ||
|
|
|
((u32) (old >> 32) != (u32) c->regs[VCPU_REGS_RDX])) {
|
|
|
-
|
|
|
c->regs[VCPU_REGS_RAX] = (u32) (old >> 0);
|
|
|
c->regs[VCPU_REGS_RDX] = (u32) (old >> 32);
|
|
|
ctxt->eflags &= ~EFLG_ZF;
|
|
|
} else {
|
|
|
- c->dst.val = ((u64)c->regs[VCPU_REGS_RCX] << 32) |
|
|
|
- (u32) c->regs[VCPU_REGS_RBX];
|
|
|
+ c->dst.val64 = ((u64)c->regs[VCPU_REGS_RCX] << 32) |
|
|
|
+ (u32) c->regs[VCPU_REGS_RBX];
|
|
|
|
|
|
ctxt->eflags |= EFLG_ZF;
|
|
|
}
|
|
@@ -2616,7 +2615,7 @@ x86_emulate_insn(struct x86_emulate_ctxt *ctxt, struct x86_emulate_ops *ops)
|
|
|
c->src.valptr, c->src.bytes);
|
|
|
if (rc != X86EMUL_CONTINUE)
|
|
|
goto done;
|
|
|
- c->src.orig_val = c->src.val;
|
|
|
+ c->src.orig_val64 = c->src.val64;
|
|
|
}
|
|
|
|
|
|
if (c->src2.type == OP_MEM) {
|