From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:40898) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R5InV-0001h1-Kt for qemu-devel@nongnu.org; Sun, 18 Sep 2011 10:56:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R5InU-0007Qs-FZ for qemu-devel@nongnu.org; Sun, 18 Sep 2011 10:56:45 -0400 Received: from smtp5-g21.free.fr ([212.27.42.5]:55627) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R5InT-0007QT-RU for qemu-devel@nongnu.org; Sun, 18 Sep 2011 10:56:44 -0400 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Sun, 18 Sep 2011 16:56:35 +0200 Message-Id: <1316357803-2366-4-git-send-email-hpoussin@reactos.org> In-Reply-To: <1316357803-2366-1-git-send-email-hpoussin@reactos.org> References: <1316357803-2366-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 03/11] 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 | 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]; } =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..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, 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,9 @@ static char *isabus_get_fw_dev_path(DeviceState *dev) =20 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); } =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