memory: crack wide ioport accesses into smaller ones when needed

The memory API supports cracking wide accesses into narrower ones
when needed; but this was no implemented for the pio address space,
causing lsi53c895a's IO BAR to malfunction.

Fix by correctly cracking wide accesses when needed.

Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Avi Kivity 2011-08-11 10:40:26 +03:00 committed by Anthony Liguori
parent 164a4dcd8d
commit 3a130f4ef0

View File

@ -400,7 +400,11 @@ static void memory_region_iorange_read(IORange *iorange,
}
return;
}
*data = mr->ops->read(mr->opaque, offset, width);
*data = 0;
access_with_adjusted_size(offset, data, width,
mr->ops->impl.min_access_size,
mr->ops->impl.max_access_size,
memory_region_read_accessor, mr);
}
static void memory_region_iorange_write(IORange *iorange,
@ -418,7 +422,10 @@ static void memory_region_iorange_write(IORange *iorange,
}
return;
}
mr->ops->write(mr->opaque, offset, data, width);
access_with_adjusted_size(offset, &data, width,
mr->ops->impl.min_access_size,
mr->ops->impl.max_access_size,
memory_region_write_accessor, mr);
}
static const IORangeOps memory_region_iorange_ops = {