aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2011-08-24 22:09:41 +0300
committerEdgar E. Iglesias <edgar.iglesias@gmail.com>2011-08-24 21:11:21 +0200
commit89da90b1b4acf24a9a3f2fd197b1bdf69ab24e72 (patch)
treef406329b8d5c6992681d0ad47bd04752a40c0601
parente8906f3529a452276375ab8e7b8598751bc33b01 (diff)
downloadqemu-89da90b1b4acf24a9a3f2fd197b1bdf69ab24e72.zip
qemu-89da90b1b4acf24a9a3f2fd197b1bdf69ab24e72.tar.gz
qemu-89da90b1b4acf24a9a3f2fd197b1bdf69ab24e72.tar.bz2
gt64xxx: fix crash in gt64120_pci_mapping()
The map/unmap code was assymetric - unmap used the local MemoryRegion while map used isa_mmio_init(), which cannot handle dynamic mappings. Fix by using isa_mmio_setup() and the local MemoryRegion. Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
-rw-r--r--hw/gt64xxx.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/hw/gt64xxx.c b/hw/gt64xxx.c
index 6af9782..1c34253 100644
--- a/hw/gt64xxx.c
+++ b/hw/gt64xxx.c
@@ -297,7 +297,11 @@ static void gt64120_pci_mapping(GT64120State *s)
s->PCI0IO_start = s->regs[GT_PCI0IOLD] << 21;
s->PCI0IO_length = ((s->regs[GT_PCI0IOHD] + 1) - (s->regs[GT_PCI0IOLD] & 0x7f)) << 21;
isa_mem_base = s->PCI0IO_start;
- isa_mmio_init(s->PCI0IO_start, s->PCI0IO_length);
+ if (s->PCI0IO_length) {
+ isa_mmio_setup(&s->PCI0IO_mem, s->PCI0IO_length);
+ memory_region_add_subregion(get_system_memory(), s->PCI0IO_start,
+ &s->PCI0IO_mem);
+ }
}
}