|
@@ -4640,6 +4640,7 @@ int x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
|
|
/* All REP prefixes have the same first termination condition */
|
|
/* All REP prefixes have the same first termination condition */
|
|
if (address_mask(ctxt, reg_read(ctxt, VCPU_REGS_RCX)) == 0) {
|
|
if (address_mask(ctxt, reg_read(ctxt, VCPU_REGS_RCX)) == 0) {
|
|
ctxt->eip = ctxt->_eip;
|
|
ctxt->eip = ctxt->_eip;
|
|
|
|
+ ctxt->eflags &= ~EFLG_RF;
|
|
goto done;
|
|
goto done;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -4682,6 +4683,8 @@ special_insn:
|
|
goto done;
|
|
goto done;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ ctxt->eflags &= ~EFLG_RF;
|
|
|
|
+
|
|
if (ctxt->execute) {
|
|
if (ctxt->execute) {
|
|
if (ctxt->d & Fastop) {
|
|
if (ctxt->d & Fastop) {
|
|
void (*fop)(struct fastop *) = (void *)ctxt->execute;
|
|
void (*fop)(struct fastop *) = (void *)ctxt->execute;
|