From patchwork Sun Oct 2 16:10:26 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Herv=C3=A9_Poussineau?= X-Patchwork-Id: 117335 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 11C5DB6F76 for ; Mon, 3 Oct 2011 03:43:30 +1100 (EST) Received: from localhost ([::1]:56072 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RAP8R-0005Zp-Bn for incoming@patchwork.ozlabs.org; Sun, 02 Oct 2011 12:43:27 -0400 Received: from eggs.gnu.org ([140.186.70.92]:38748) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RAOdR-0006z9-6e for qemu-devel@nongnu.org; Sun, 02 Oct 2011 12:11:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RAOdQ-0008FM-9y for qemu-devel@nongnu.org; Sun, 02 Oct 2011 12:11:25 -0400 Received: from smtp5-g21.free.fr ([212.27.42.5]:34413) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RAOdP-0008FE-Lm for qemu-devel@nongnu.org; Sun, 02 Oct 2011 12:11:24 -0400 Received: from localhost.localdomain (unknown [88.171.126.33]) by smtp5-g21.free.fr (Postfix) with ESMTP id 1AB06D482AC; Sun, 2 Oct 2011 18:11:17 +0200 (CEST) From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= To: qemu-devel@nongnu.org Date: Sun, 2 Oct 2011 18:10:26 +0200 Message-Id: <1317571828-9059-15-git-send-email-hpoussin@reactos.org> X-Mailer: git-send-email 1.7.6.3 In-Reply-To: <1317571828-9059-1-git-send-email-hpoussin@reactos.org> References: <1317571828-9059-1-git-send-email-hpoussin@reactos.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 212.27.42.5 Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Subject: [Qemu-devel] [PATCH v3 14/16] i8259: add ad-hock variables to please future changes in isa_register_ioport() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org This patch should be reverted once i8259 is qdevified Signed-off-by: Hervé Poussineau --- hw/i8259.c | 29 +++++++++++++++++++++++++++-- 1 files changed, 27 insertions(+), 2 deletions(-) diff --git a/hw/i8259.c b/hw/i8259.c index e5323ff..9af2bbb 100644 --- a/hw/i8259.c +++ b/hw/i8259.c @@ -499,15 +499,40 @@ static const MemoryRegionOps pic_elcr_ioport_ops = { }, }; +static BusState *qbus_find_recursive(BusState *bus, const char *name) +{ + DeviceState *dev; + BusState *child, *ret; + + if (strcmp(bus->name, name) == 0) { + return bus; + } + + QLIST_FOREACH(dev, &bus->children, sibling) { + QLIST_FOREACH(child, &dev->child_bus, sibling) { + ret = qbus_find_recursive(child, name); + if (ret) { + return ret; + } + } + } + return NULL; +} + /* XXX: add generic master/slave system */ static void pic_init1(int io_addr, int elcr_addr, PicState *s) { + ISADevice dev; + + memset(&dev, 0, sizeof(dev)); + dev.qdev.parent_bus = qbus_find_recursive(sysbus_get_default(), "isa.0"); + memory_region_init_io(&s->base_io, &pic_base_ioport_ops, s, "pic", 2); memory_region_init_io(&s->elcr_io, &pic_elcr_ioport_ops, s, "elcr", 1); - isa_register_ioport(NULL, &s->base_io, io_addr); + isa_register_ioport(&dev, &s->base_io, io_addr); if (elcr_addr >= 0) { - isa_register_ioport(NULL, &s->elcr_io, elcr_addr); + isa_register_ioport(&dev, &s->elcr_io, elcr_addr); } vmstate_register(NULL, io_addr, &vmstate_pic, s);