From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:55445) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RKWSi-0005xB-3U for qemu-devel@nongnu.org; Sun, 30 Oct 2011 10:34:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RKWSf-0003sk-09 for qemu-devel@nongnu.org; Sun, 30 Oct 2011 10:34:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:52214) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RKWSe-0003sC-J4 for qemu-devel@nongnu.org; Sun, 30 Oct 2011 10:34:08 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p9UEY7UZ019143 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sun, 30 Oct 2011 10:34:08 -0400 Received: from cleopatra.tlv.redhat.com (cleopatra.tlv.redhat.com [10.35.255.11]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p9UEY5DY005292 for ; Sun, 30 Oct 2011 10:34:07 -0400 From: Avi Kivity Date: Sun, 30 Oct 2011 16:33:44 +0200 Message-Id: <1319985234-32371-8-git-send-email-avi@redhat.com> In-Reply-To: <1319985234-32371-1-git-send-email-avi@redhat.com> References: <1319985234-32371-1-git-send-email-avi@redhat.com> Subject: [Qemu-devel] [PATCH 07/17] parallel: convert to memory API List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Signed-off-by: Avi Kivity --- hw/mips_jazz.c | 3 ++- hw/parallel.c | 27 ++++++++++++--------------- hw/pc.h | 3 ++- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/hw/mips_jazz.c b/hw/mips_jazz.c index 6e657dd..f6e3316 100644 --- a/hw/mips_jazz.c +++ b/hw/mips_jazz.c @@ -274,7 +274,8 @@ static void mips_jazz_init(MemoryRegion *address_space, /* Parallel port */ if (parallel_hds[0]) - parallel_mm_init(0x80008000, 0, rc4030[0], parallel_hds[0]); + parallel_mm_init(address_space, 0x80008000, 0, rc4030[0], + parallel_hds[0]); /* Sound card */ /* FIXME: missing Jazz sound at 0x8000c000, rc4030[2] */ diff --git a/hw/parallel.c b/hw/parallel.c index 8494d94..c4c5dbe 100644 --- a/hw/parallel.c +++ b/hw/parallel.c @@ -65,6 +65,7 @@ #define PARA_CTR_SIGNAL (PARA_CTR_SELECT|PARA_CTR_INIT|PARA_CTR_AUTOLF|PARA_CTR_STROBE) typedef struct ParallelState { + MemoryRegion iomem; uint8_t dataw; uint8_t datar; uint8_t status; @@ -555,24 +556,20 @@ static void parallel_mm_writel (void *opaque, parallel_ioport_write_sw(s, addr >> s->it_shift, value); } -static CPUReadMemoryFunc * const parallel_mm_read_sw[] = { - ¶llel_mm_readb, - ¶llel_mm_readw, - ¶llel_mm_readl, -}; - -static CPUWriteMemoryFunc * const parallel_mm_write_sw[] = { - ¶llel_mm_writeb, - ¶llel_mm_writew, - ¶llel_mm_writel, +static const MemoryRegionOps parallel_mm_ops = { + .old_mmio = { + .read = { parallel_mm_readb, parallel_mm_readw, parallel_mm_readl }, + .write = { parallel_mm_writeb, parallel_mm_writew, parallel_mm_writel }, + }, + .endianness = DEVICE_NATIVE_ENDIAN, }; /* If fd is zero, it means that the parallel device uses the console */ -bool parallel_mm_init(target_phys_addr_t base, int it_shift, qemu_irq irq, +bool parallel_mm_init(MemoryRegion *address_space, + target_phys_addr_t base, int it_shift, qemu_irq irq, CharDriverState *chr) { ParallelState *s; - int io_sw; s = g_malloc0(sizeof(ParallelState)); s->irq = irq; @@ -580,9 +577,9 @@ bool parallel_mm_init(target_phys_addr_t base, int it_shift, qemu_irq irq, s->it_shift = it_shift; qemu_register_reset(parallel_reset, s); - io_sw = cpu_register_io_memory(parallel_mm_read_sw, parallel_mm_write_sw, - s, DEVICE_NATIVE_ENDIAN); - cpu_register_physical_memory(base, 8 << it_shift, io_sw); + memory_region_init_io(&s->iomem, ¶llel_mm_ops, s, + "parallel", 8 << it_shift); + memory_region_add_subregion(address_space, base, &s->iomem); return true; } diff --git a/hw/pc.h b/hw/pc.h index 4515006..b7b7e40 100644 --- a/hw/pc.h +++ b/hw/pc.h @@ -55,7 +55,8 @@ static inline bool parallel_init(int index, CharDriverState *chr) return true; } -bool parallel_mm_init(target_phys_addr_t base, int it_shift, qemu_irq irq, +bool parallel_mm_init(MemoryRegion *address_space, + target_phys_addr_t base, int it_shift, qemu_irq irq, CharDriverState *chr); /* i8259.c */ -- 1.7.6.3