Avi Kivity wrote: > Yang, Sheng wrote: >> Another comment: I forgot if I answer the question on why eip should move >> backward. I did it because some instruction like "mov" will move eip to >> skip some dst/src operand when executing, so eip should be kept for >> consistency. >> > > I think you're talking about > >> case 0xa0 ... 0xa1: /* mov */ >> c->dst.ptr = (unsigned long *)&c->regs[VCPU_REGS_RAX]; >> c->dst.val = c->src.val; >> /* skip src displacement */ >> c->eip += c->ad_bytes; >> break; > > ? > > If so, instead of skipping, we can fetch the address here. > > It's been annoying me for a long time; it causes a dependency on cr2 > which we don't have in real mode (and with FlexPriority), and which is > broken anyway because cr2 points at the wrong address during a page > fault on the second page of a misaligned cross-page access.
Yeah, like that. But I don't think only "mov" has memory operand, so fetch address in some determined place is better than inside every instruction executing code. Another thing, if we can use physical address as supplement of cr2 in emulate_instrcutions, that will be better. Any suggestion? Thanks Yang, Sheng ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel