From: Richard Henderson Date: Wed, 10 Aug 2011 22:28:19 +0000 (-0700) Subject: memory: Fix old_portio vs non-zero offset X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=563ea489031375c53d3b94d74c56c42238e94914;p=qemu.git memory: Fix old_portio vs non-zero offset The legacy functions that we're wrapping expect that offset to be included in the register. Indeed, they generally expect the absolute address and then mask off the "high" bits. The FDC is the first converted device with a non-zero offset. Signed-off-by: Richard Henderson Signed-off-by: Avi Kivity --- diff --git a/memory.c b/memory.c index 531b57533a..8e9ac460e8 100644 --- a/memory.c +++ b/memory.c @@ -396,7 +396,7 @@ static void memory_region_iorange_read(IORange *iorange, *data = ((uint64_t)1 << (width * 8)) - 1; if (mrp) { - *data = mrp->read(mr->opaque, offset - mrp->offset); + *data = mrp->read(mr->opaque, offset); } return; } @@ -418,7 +418,7 @@ static void memory_region_iorange_write(IORange *iorange, const MemoryRegionPortio *mrp = find_portio(mr, offset, width, true); if (mrp) { - mrp->write(mr->opaque, offset - mrp->offset, data); + mrp->write(mr->opaque, offset, data); } return; }