Signed-off-by: Hervé Poussineau <hpous...@reactos.org>
---
 hw/isa-bridge.c |    6 ++++++
 hw/isa-bus.c    |   11 ++++++++++-
 hw/isa.h        |    1 +
 3 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/hw/isa-bridge.c b/hw/isa-bridge.c
index 49fa033..bb2d8b0 100644
--- a/hw/isa-bridge.c
+++ b/hw/isa-bridge.c
@@ -42,9 +42,15 @@ static qemu_irq isabus_bridge_get_irq(ISABus *bus, int 
isairq)
     return s->irqs[isairq];
 }
 
+static MemoryRegion *isabus_bridge_get_address_space(ISABus *bus)
+{
+    return get_system_memory();
+}
+
 static ISABusOps isabus_bridge_ops = {
     .set_irqs = isabus_bridge_set_irqs,
     .get_irq = isabus_bridge_get_irq,
+    .get_address_space = isabus_bridge_get_address_space,
 };
 
 static int isabus_bridge_init(SysBusDevice *dev)
diff --git a/hw/isa-bus.c b/hw/isa-bus.c
index 27cffb3..03e7381 100644
--- a/hw/isa-bus.c
+++ b/hw/isa-bus.c
@@ -49,9 +49,15 @@ static qemu_irq isa_bus_default_get_irq(ISABus *bus, int 
isairq)
     return isa_bus_default_irqs[isairq];
 }
 
+static MemoryRegion *isa_bus_default_get_address_space(ISABus *bus)
+{
+    return get_system_memory();
+}
+
 static ISABusOps isa_bus_default_ops = {
     .set_irqs = isa_bus_default_set_irqs,
     .get_irq = isa_bus_default_get_irq,
+    .get_address_space = isa_bus_default_get_address_space,
 };
 
 ISABus *isa_bus_bridge_init(DeviceState *dev)
@@ -215,6 +221,9 @@ static char *isabus_get_fw_dev_path(DeviceState *dev)
 
 MemoryRegion *isa_address_space(ISADevice *dev)
 {
-    return get_system_memory();
+    if (!isabus || !isabus->ops->get_address_space) {
+        hw_error("Tried to get isa address space with no isa bus present.");
+    }
+    return isabus->ops->get_address_space(isabus);
 }
 
diff --git a/hw/isa.h b/hw/isa.h
index 129f129..22a2783 100644
--- a/hw/isa.h
+++ b/hw/isa.h
@@ -35,6 +35,7 @@ struct ISABus {
 struct ISABusOps {
     void (*set_irqs)(ISABus *bus, qemu_irq *irqs);
     qemu_irq (*get_irq)(ISABus *bus, int isairq);
+    MemoryRegion *(*get_address_space)(ISABus *bus);
 };
 
 ISABus *isa_bus_bridge_init(DeviceState *dev);
-- 
1.7.5.4


Reply via email to