> > for (y = 0; y < lines; y++) {
> > - off_cur = off_begin;
> > + off_cur = off_begin & s->cirrus_addr_mask;
> > off_cur_end = ((off_cur + bytesperline - 1) & s->cirrus_addr_mask)
> > + 1;
> > - assert(off_cur_end >= off_cur);
> > - memory_region_set_dirty(&s->vga.vram, off_cur, off_cur_end -
> > off_cur);
> > + if (off_cur_end >= off_cur) {
> > + memory_region_set_dirty(&s->vga.vram, off_cur, off_cur_end -
> > off_cur);
> > + } else {
> > + /* wraparound */
> > + memory_region_set_dirty(&s->vga.vram, off_cur,
> > s->cirrus_addr_mask - off_cur);
>
> Should here be 's->cirrus_addr_mask + 1 - off_cur'
Yes (mask != size).
> > + memory_region_set_dirty(&s->vga.vram, 0, off_cur_end);
>
> And here be 'off_cur_end -1'
--verbose please. I think this one is correct.
take care,
Gerd