From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:59559) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RSx3j-0004yW-PJ for qemu-devel@nongnu.org; Tue, 22 Nov 2011 15:35:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RSx3i-0004km-9Y for qemu-devel@nongnu.org; Tue, 22 Nov 2011 15:35:15 -0500 Received: from mail-ww0-f53.google.com ([74.125.82.53]:33584) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RSx3i-0004kR-1a for qemu-devel@nongnu.org; Tue, 22 Nov 2011 15:35:14 -0500 Received: by mail-ww0-f53.google.com with SMTP id 27so930098wwf.10 for ; Tue, 22 Nov 2011 12:35:13 -0800 (PST) From: =?UTF-8?q?Beno=C3=AEt=20Canet?= Date: Tue, 22 Nov 2011 21:34:55 +0100 Message-Id: <1321994102-28263-5-git-send-email-benoit.canet@gmail.com> In-Reply-To: <1321994102-28263-1-git-send-email-benoit.canet@gmail.com> References: <1321994102-28263-1-git-send-email-benoit.canet@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [PATCH v3 04/11] mcf_intc: convert to memory API List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Beno=C3=AEt=20Canet?= , avi@redhat.com Signed-off-by: BenoƮt Canet --- hw/mcf.h | 4 +++- hw/mcf5208.c | 2 +- hw/mcf_intc.c | 33 +++++++++++++++------------------ 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/hw/mcf.h b/hw/mcf.h index 2f88ff0..baa790b 100644 --- a/hw/mcf.h +++ b/hw/mcf.h @@ -15,7 +15,9 @@ void mcf_uart_mm_init(struct MemoryRegion *sysmem, qemu_irq irq, CharDriverState *chr); /* mcf_intc.c */ -qemu_irq *mcf_intc_init(target_phys_addr_t base, CPUState *env); +qemu_irq *mcf_intc_init(struct MemoryRegion *sysmem, + target_phys_addr_t base, + CPUState *env); /* mcf_fec.c */ void mcf_fec_init(struct MemoryRegion *sysmem, NICInfo *nd, diff --git a/hw/mcf5208.c b/hw/mcf5208.c index e03d80b..ec608a1 100644 --- a/hw/mcf5208.c +++ b/hw/mcf5208.c @@ -221,7 +221,7 @@ static void mcf5208evb_init(ram_addr_t ram_size, memory_region_add_subregion(address_space_mem, 0x80000000, sram); /* Internal peripherals. */ - pic = mcf_intc_init(0xfc048000, env); + pic = mcf_intc_init(address_space_mem, 0xfc048000, env); mcf_uart_mm_init(address_space_mem, 0xfc060000, pic[26], serial_hds[0]); mcf_uart_mm_init(address_space_mem, 0xfc064000, pic[27], serial_hds[1]); diff --git a/hw/mcf_intc.c b/hw/mcf_intc.c index 99092e7..0b498dd 100644 --- a/hw/mcf_intc.c +++ b/hw/mcf_intc.c @@ -7,8 +7,10 @@ */ #include "hw.h" #include "mcf.h" +#include "exec-memory.h" typedef struct { + MemoryRegion iomem; uint64_t ipr; uint64_t imr; uint64_t ifr; @@ -41,7 +43,8 @@ static void mcf_intc_update(mcf_intc_state *s) m68k_set_irq_level(s->env, best_level, s->active_vector); } -static uint32_t mcf_intc_read(void *opaque, target_phys_addr_t addr) +static uint64_t mcf_intc_read(void *opaque, target_phys_addr_t addr, + unsigned size) { int offset; mcf_intc_state *s = (mcf_intc_state *)opaque; @@ -73,7 +76,8 @@ static uint32_t mcf_intc_read(void *opaque, target_phys_addr_t addr) } } -static void mcf_intc_write(void *opaque, target_phys_addr_t addr, uint32_t val) +static void mcf_intc_write(void *opaque, target_phys_addr_t addr, + uint64_t val, unsigned size) { int offset; mcf_intc_state *s = (mcf_intc_state *)opaque; @@ -127,31 +131,24 @@ static void mcf_intc_reset(mcf_intc_state *s) s->active_vector = 24; } -static CPUReadMemoryFunc * const mcf_intc_readfn[] = { - mcf_intc_read, - mcf_intc_read, - mcf_intc_read +static const MemoryRegionOps mcf_intc_ops = { + .read = mcf_intc_read, + .write = mcf_intc_write, + .endianness = DEVICE_NATIVE_ENDIAN, }; -static CPUWriteMemoryFunc * const mcf_intc_writefn[] = { - mcf_intc_write, - mcf_intc_write, - mcf_intc_write -}; - -qemu_irq *mcf_intc_init(target_phys_addr_t base, CPUState *env) +qemu_irq *mcf_intc_init(MemoryRegion *sysmem, + target_phys_addr_t base, + CPUState *env) { mcf_intc_state *s; - int iomemtype; s = g_malloc0(sizeof(mcf_intc_state)); s->env = env; mcf_intc_reset(s); - iomemtype = cpu_register_io_memory(mcf_intc_readfn, - mcf_intc_writefn, s, - DEVICE_NATIVE_ENDIAN); - cpu_register_physical_memory(base, 0x100, iomemtype); + memory_region_init_io(&s->iomem, &mcf_intc_ops, s, "mcf", 0x100); + memory_region_add_subregion(sysmem, base, &s->iomem); return qemu_allocate_irqs(mcf_intc_set_irq, s, 64); } -- 1.7.7.3