[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 01/11] mcf5206: convert to memory API
From: |
Benoît Canet |
Subject: |
[Qemu-devel] [PATCH v4 01/11] mcf5206: convert to memory API |
Date: |
Thu, 24 Nov 2011 14:31:12 +0100 |
Signed-off-by: Benoît Canet <address@hidden>
---
hw/an5206.c | 2 +-
hw/mcf.h | 5 ++++-
hw/mcf5206.c | 37 +++++++++++++++++++++----------------
3 files changed, 26 insertions(+), 18 deletions(-)
diff --git a/hw/an5206.c b/hw/an5206.c
index 3fe1f00..319a40e 100644
--- a/hw/an5206.c
+++ b/hw/an5206.c
@@ -53,7 +53,7 @@ static void an5206_init(ram_addr_t ram_size,
memory_region_init_ram(sram, NULL, "an5206.sram", 512);
memory_region_add_subregion(address_space_mem, AN5206_RAMBAR_ADDR, sram);
- mcf5206_init(AN5206_MBAR_ADDR, env);
+ mcf5206_init(address_space_mem, AN5206_MBAR_ADDR, env);
/* Load kernel. */
if (!kernel_filename) {
diff --git a/hw/mcf.h b/hw/mcf.h
index 91f2821..572424d 100644
--- a/hw/mcf.h
+++ b/hw/mcf.h
@@ -2,6 +2,8 @@
#define HW_MCF_H
/* Motorola ColdFire device prototypes. */
+struct MemoryRegion;
+
/* mcf_uart.c */
uint32_t mcf_uart_read(void *opaque, target_phys_addr_t addr);
void mcf_uart_write(void *opaque, target_phys_addr_t addr, uint32_t val);
@@ -16,6 +18,7 @@ qemu_irq *mcf_intc_init(target_phys_addr_t base, CPUState
*env);
void mcf_fec_init(NICInfo *nd, target_phys_addr_t base, qemu_irq *irq);
/* mcf5206.c */
-qemu_irq *mcf5206_init(uint32_t base, CPUState *env);
+qemu_irq *mcf5206_init(struct MemoryRegion *sysmem,
+ uint32_t base, CPUState *env);
#endif
diff --git a/hw/mcf5206.c b/hw/mcf5206.c
index 15d6f22..987687d 100644
--- a/hw/mcf5206.c
+++ b/hw/mcf5206.c
@@ -9,6 +9,7 @@
#include "mcf.h"
#include "qemu-timer.h"
#include "sysemu.h"
+#include "exec-memory.h"
/* General purpose timer module. */
typedef struct {
@@ -144,6 +145,7 @@ static m5206_timer_state *m5206_timer_init(qemu_irq irq)
typedef struct {
CPUState *env;
+ MemoryRegion iomem;
m5206_timer_state *timer[2];
void *uart[2];
uint8_t scr;
@@ -505,29 +507,32 @@ static void m5206_mbar_writel(void *opaque,
target_phys_addr_t offset,
m5206_mbar_write(s, offset, value);
}
-static CPUReadMemoryFunc * const m5206_mbar_readfn[] = {
- m5206_mbar_readb,
- m5206_mbar_readw,
- m5206_mbar_readl
+static const MemoryRegionOps m5206_mbar_ops = {
+ .old_mmio = {
+ .read = {
+ m5206_mbar_readb,
+ m5206_mbar_readw,
+ m5206_mbar_readl,
+ },
+ .write = {
+ m5206_mbar_writeb,
+ m5206_mbar_writew,
+ m5206_mbar_writel,
+ },
+ },
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
-static CPUWriteMemoryFunc * const m5206_mbar_writefn[] = {
- m5206_mbar_writeb,
- m5206_mbar_writew,
- m5206_mbar_writel
-};
-
-qemu_irq *mcf5206_init(uint32_t base, CPUState *env)
+qemu_irq *mcf5206_init(MemoryRegion *sysmem, uint32_t base, CPUState *env)
{
m5206_mbar_state *s;
qemu_irq *pic;
- int iomemtype;
s = (m5206_mbar_state *)g_malloc0(sizeof(m5206_mbar_state));
- iomemtype = cpu_register_io_memory(m5206_mbar_readfn,
- m5206_mbar_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- cpu_register_physical_memory(base, 0x00001000, iomemtype);
+
+ memory_region_init_io(&s->iomem, &m5206_mbar_ops, s,
+ "mbar", 0x00001000);
+ memory_region_add_subregion(sysmem, base, &s->iomem);
pic = qemu_allocate_irqs(m5206_mbar_set_irq, s, 14);
s->timer[0] = m5206_timer_init(pic[9]);
--
1.7.7.3
- [Qemu-devel] [PATCH v4 00/11] more memory API conversions, Benoît Canet, 2011/11/24
- [Qemu-devel] [PATCH v4 01/11] mcf5206: convert to memory API,
Benoît Canet <=
- [Qemu-devel] [PATCH v4 04/11] mcf_intc: convert to memory API, Benoît Canet, 2011/11/24
- [Qemu-devel] [PATCH v4 09/11] bonito: convert south bridge pci config to memory API, Benoît Canet, 2011/11/24
- [Qemu-devel] [PATCH v4 05/11] lm32_uart: convert to memory API, Benoît Canet, 2011/11/24
- [Qemu-devel] [PATCH v4 03/11] mcf_fec: convert to memory API, Benoît Canet, 2011/11/24
- [Qemu-devel] [PATCH v4 06/11] lm32_sys: convert to memory API, Benoît Canet, 2011/11/24
- [Qemu-devel] [PATCH v4 02/11] mcf_uart: convert to memory API, Benoît Canet, 2011/11/24
- [Qemu-devel] [PATCH v4 07/11] bonito: convert north bridge register mapping to memory API, Benoît Canet, 2011/11/24
- [Qemu-devel] [PATCH v4 11/11] bonito: convert cop to memory API, Benoît Canet, 2011/11/24