diff options
author | Avi Kivity <avi@redhat.com> | 2011-09-26 14:52:26 +0300 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2011-10-11 15:57:07 +0200 |
commit | 6bf9fd43cfc10022670d1135711d6952d98bcb02 (patch) | |
tree | 77f495b976f71e42980e5f16995e7a0db7f86437 /memory.c | |
parent | ebf47c24b01857d8b49a892b853bdd13b8e3eb5e (diff) | |
download | qemu-6bf9fd43cfc10022670d1135711d6952d98bcb02.zip qemu-6bf9fd43cfc10022670d1135711d6952d98bcb02.tar.gz qemu-6bf9fd43cfc10022670d1135711d6952d98bcb02.tar.bz2 |
Introduce PortioList
Add a type and methods for manipulating a list of disjoint I/O ports,
used in some older hardware devices.
Based on original patch by Richard Henderson.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'memory.c')
-rw-r--r-- | memory.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -403,12 +403,12 @@ static void memory_region_iorange_read(IORange *iorange, *data = ((uint64_t)1 << (width * 8)) - 1; if (mrp) { - *data = mrp->read(mr->opaque, offset); + *data = mrp->read(mr->opaque, offset + mr->offset); } return; } *data = 0; - access_with_adjusted_size(offset, data, width, + access_with_adjusted_size(offset + mr->offset, data, width, mr->ops->impl.min_access_size, mr->ops->impl.max_access_size, memory_region_read_accessor, mr); @@ -425,11 +425,11 @@ static void memory_region_iorange_write(IORange *iorange, const MemoryRegionPortio *mrp = find_portio(mr, offset, width, true); if (mrp) { - mrp->write(mr->opaque, offset, data); + mrp->write(mr->opaque, offset + mr->offset, data); } return; } - access_with_adjusted_size(offset, &data, width, + access_with_adjusted_size(offset + mr->offset, &data, width, mr->ops->impl.min_access_size, mr->ops->impl.max_access_size, memory_region_write_accessor, mr); |