From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:47659) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R5soZ-00020n-EJ for qemu-devel@nongnu.org; Tue, 20 Sep 2011 01:24:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R5soY-0003m8-4Y for qemu-devel@nongnu.org; Tue, 20 Sep 2011 01:24:15 -0400 Received: from smtp5-g21.free.fr ([212.27.42.5]:35105) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R5soX-0003lu-DM for qemu-devel@nongnu.org; Tue, 20 Sep 2011 01:24:14 -0400 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Tue, 20 Sep 2011 07:24:01 +0200 Message-Id: <1316496250-2727-4-git-send-email-hpoussin@reactos.org> In-Reply-To: <1316496250-2727-1-git-send-email-hpoussin@reactos.org> References: <1316496250-2727-1-git-send-email-hpoussin@reactos.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH v2 03/12] isa: implement isa_address_space() as a method of ISA bus List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Signed-off-by: Herv=C3=A9 Poussineau --- hw/isa-bridge.c | 6 ++++++ hw/isa-bus.c | 13 ++++++++++++- hw/isa.h | 1 + 3 files changed, 19 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]; } =20 +static MemoryRegion *isabus_bridge_get_address_space(ISABus *bus) +{ + return get_system_memory(); +} + static ISABusOps isabus_bridge_ops =3D { .set_irqs =3D isabus_bridge_set_irqs, .get_irq =3D isabus_bridge_get_irq, + .get_address_space =3D isabus_bridge_get_address_space, }; =20 static int isabus_bridge_init(SysBusDevice *dev) diff --git a/hw/isa-bus.c b/hw/isa-bus.c index 27cffb3..b492486 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, i= nt isairq) return isa_bus_default_irqs[isairq]; } =20 +static MemoryRegion *isa_bus_default_get_address_space(ISABus *bus) +{ + return get_system_memory(); +} + static ISABusOps isa_bus_default_ops =3D { .set_irqs =3D isa_bus_default_set_irqs, .get_irq =3D isa_bus_default_get_irq, + .get_address_space =3D isa_bus_default_get_address_space, }; =20 ISABus *isa_bus_bridge_init(DeviceState *dev) @@ -215,6 +221,11 @@ static char *isabus_get_fw_dev_path(DeviceState *dev= ) =20 MemoryRegion *isa_address_space(ISADevice *dev) { - return get_system_memory(); + ISABus *bus =3D FROM_QBUS(ISABus, qdev_get_parent_bus(&dev->qdev)); + + if (!bus->ops->get_address_space) { + hw_error("Tried to get isa address space on invalid isa bus."); + } + return bus->ops->get_address_space(bus); } =20 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); }; =20 ISABus *isa_bus_bridge_init(DeviceState *dev); --=20 1.7.5.4