On Sun, Aug 05, 2012 at 06:03:12PM +0300, Avi Kivity wrote: > On 07/30/2012 05:38 PM, Gleb Natapov wrote: > > Optimize "rep ins" by allowing emulator to write back more than one > > datum at a time. Introduce new operand type OP_MEM_STR which tells > > writeback() that dst contains pointer to an array that should be written > > back as opposite to just one data element. > > > > > > if (ctxt->rep_prefix && (ctxt->d & String)) { > > + unsigned int count; > > struct read_cache *r = &ctxt->io_read; > > - register_address_increment(ctxt, &ctxt->regs[VCPU_REGS_RCX], -1); > > + if ((ctxt->d & SrcMask) == SrcSI) > > + count = ctxt->src.count; > > + else > > + count = ctxt->dst.count; > > + register_address_increment(ctxt, &ctxt->regs[VCPU_REGS_RCX], > > + -count); > > > > count is unsigned. Does it sign extend correctly in > register_address_increment()? > I think it sign extent before register_address_increment() when compiler sees -count. count is in the range 1-1024 here, so there shouldn't be a problem. By I welcome better suggestions. -- Gleb. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html