|
@@ -1324,7 +1324,8 @@ static int pio_in_emulated(struct x86_emulate_ctxt *ctxt,
|
|
|
rc->end = n * size;
|
|
rc->end = n * size;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (ctxt->rep_prefix && !(ctxt->eflags & EFLG_DF)) {
|
|
|
|
|
|
|
+ if (ctxt->rep_prefix && (ctxt->d & String) &&
|
|
|
|
|
+ !(ctxt->eflags & EFLG_DF)) {
|
|
|
ctxt->dst.data = rc->data + rc->pos;
|
|
ctxt->dst.data = rc->data + rc->pos;
|
|
|
ctxt->dst.type = OP_MEM_STR;
|
|
ctxt->dst.type = OP_MEM_STR;
|
|
|
ctxt->dst.count = (rc->end - rc->pos) / size;
|
|
ctxt->dst.count = (rc->end - rc->pos) / size;
|