* [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13
@ 2011-10-30 14:33 Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 01/17] tosa: convert to memory API Avi Kivity
` (16 more replies)
0 siblings, 17 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
If you expect anything interesting here, you're looking at the wrong place.
Nevertheless, please review.
Avi Kivity (17):
tosa: convert to memory API
versatilepb: convert to memory API
vexpress: convert to memory API
virtex_ml507: convert to memory API
shix: convert to memory API
jazz_led: convert to memory API
parallel: convert to memory API
zaurus: convert to memory API
pl011: convert to memory API
pl022: convert to memory API
pl031: convert to memory API
pl050: convert to memory API
pl061: convert to memory API
pl080: convert to memory API
pl110: convert to memory API
pl181: convert to memory API
pl190: convert to memory API
hw/jazz_led.c | 25 ++++++++++---------------
hw/mips.h | 4 +++-
hw/mips_jazz.c | 5 +++--
hw/parallel.c | 27 ++++++++++++---------------
hw/pc.h | 3 ++-
hw/pl011.c | 27 ++++++++++-----------------
hw/pl022.c | 29 +++++++++++------------------
hw/pl031.c | 30 ++++++++++--------------------
hw/pl050.c | 27 ++++++++++-----------------
hw/pl061.c | 27 ++++++++++-----------------
hw/pl080.c | 27 ++++++++++-----------------
hw/pl110.c | 27 ++++++++++-----------------
hw/pl181.c | 26 ++++++++++----------------
hw/pl190.c | 28 +++++++++++-----------------
hw/shix.c | 14 +++++++++++---
hw/tosa.c | 6 ++++--
hw/versatilepb.c | 35 +++++++++++++++--------------------
hw/vexpress.c | 31 +++++++++++++++++--------------
hw/virtex_ml507.c | 6 +++---
hw/zaurus.c | 26 +++++++++++---------------
20 files changed, 183 insertions(+), 247 deletions(-)
--
1.7.6.3
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 01/17] tosa: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 02/17] versatilepb: " Avi Kivity
` (15 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/tosa.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/hw/tosa.c b/hw/tosa.c
index b992b99..67a71fe 100644
--- a/hw/tosa.c
+++ b/hw/tosa.c
@@ -208,6 +208,7 @@ static void tosa_init(ram_addr_t ram_size,
const char *initrd_filename, const char *cpu_model)
{
MemoryRegion *address_space_mem = get_system_memory();
+ MemoryRegion *rom = g_new(MemoryRegion, 1);
PXA2xxState *cpu;
TC6393xbState *tmio;
DeviceState *scp0, *scp1;
@@ -217,8 +218,9 @@ static void tosa_init(ram_addr_t ram_size,
cpu = pxa255_init(address_space_mem, tosa_binfo.ram_size);
- cpu_register_physical_memory(0, TOSA_ROM,
- qemu_ram_alloc(NULL, "tosa.rom", TOSA_ROM) | IO_MEM_ROM);
+ memory_region_init_ram(rom, NULL, "tosa.rom", TOSA_ROM);
+ memory_region_set_readonly(rom, true);
+ memory_region_add_subregion(address_space_mem, 0, rom);
tmio = tc6393xb_init(address_space_mem, 0x10000000,
qdev_get_gpio_in(cpu->gpio, TOSA_GPIO_TC6393XB_INT));
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 02/17] versatilepb: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 01/17] tosa: convert to memory API Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 03/17] vexpress: " Avi Kivity
` (14 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/versatilepb.c | 35 +++++++++++++++--------------------
1 files changed, 15 insertions(+), 20 deletions(-)
diff --git a/hw/versatilepb.c b/hw/versatilepb.c
index 68402cc..38e8e7a 100644
--- a/hw/versatilepb.c
+++ b/hw/versatilepb.c
@@ -17,12 +17,14 @@
#include "usb-ohci.h"
#include "boards.h"
#include "blockdev.h"
+#include "exec-memory.h"
/* Primary interrupt controller. */
typedef struct vpb_sic_state
{
SysBusDevice busdev;
+ MemoryRegion iomem;
uint32_t level;
uint32_t mask;
uint32_t pic_enable;
@@ -75,7 +77,8 @@ static void vpb_sic_set_irq(void *opaque, int irq, int level)
vpb_sic_update(s);
}
-static uint32_t vpb_sic_read(void *opaque, target_phys_addr_t offset)
+static uint64_t vpb_sic_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
vpb_sic_state *s = (vpb_sic_state *)opaque;
@@ -97,7 +100,7 @@ static uint32_t vpb_sic_read(void *opaque, target_phys_addr_t offset)
}
static void vpb_sic_write(void *opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
vpb_sic_state *s = (vpb_sic_state *)opaque;
@@ -131,22 +134,15 @@ static void vpb_sic_write(void *opaque, target_phys_addr_t offset,
vpb_sic_update(s);
}
-static CPUReadMemoryFunc * const vpb_sic_readfn[] = {
- vpb_sic_read,
- vpb_sic_read,
- vpb_sic_read
-};
-
-static CPUWriteMemoryFunc * const vpb_sic_writefn[] = {
- vpb_sic_write,
- vpb_sic_write,
- vpb_sic_write
+static const MemoryRegionOps vpb_sic_ops = {
+ .read = vpb_sic_read,
+ .write = vpb_sic_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static int vpb_sic_init(SysBusDevice *dev)
{
vpb_sic_state *s = FROM_SYSBUS(vpb_sic_state, dev);
- int iomemtype;
int i;
qdev_init_gpio_in(&dev->qdev, vpb_sic_set_irq, 32);
@@ -154,10 +150,8 @@ static int vpb_sic_init(SysBusDevice *dev)
sysbus_init_irq(dev, &s->parent[i]);
}
s->irq = 31;
- iomemtype = cpu_register_io_memory(vpb_sic_readfn,
- vpb_sic_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &vpb_sic_ops, s, "vpb-sic", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
return 0;
}
@@ -176,7 +170,8 @@ static void versatile_init(ram_addr_t ram_size,
int board_id)
{
CPUState *env;
- ram_addr_t ram_offset;
+ MemoryRegion *sysmem = get_system_memory();
+ MemoryRegion *ram = g_new(MemoryRegion, 1);
qemu_irq *cpu_pic;
qemu_irq pic[32];
qemu_irq sic[32];
@@ -194,10 +189,10 @@ static void versatile_init(ram_addr_t ram_size,
fprintf(stderr, "Unable to find CPU definition\n");
exit(1);
}
- ram_offset = qemu_ram_alloc(NULL, "versatile.ram", ram_size);
+ memory_region_init_ram(ram, NULL, "versatile.ram", ram_size);
/* ??? RAM should repeat to fill physical memory space. */
/* SDRAM at address zero. */
- cpu_register_physical_memory(0, ram_size, ram_offset | IO_MEM_RAM);
+ memory_region_add_subregion(sysmem, 0, ram);
sysctl = qdev_create(NULL, "realview_sysctl");
qdev_prop_set_uint32(sysctl, "sys_id", 0x41007004);
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 03/17] vexpress: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 01/17] tosa: convert to memory API Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 02/17] versatilepb: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 04/17] virtex_ml507: " Avi Kivity
` (13 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/vexpress.c | 31 +++++++++++++++++--------------
1 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/hw/vexpress.c b/hw/vexpress.c
index c9766dd..d4c9f7c 100644
--- a/hw/vexpress.c
+++ b/hw/vexpress.c
@@ -25,6 +25,7 @@
#include "net.h"
#include "sysemu.h"
#include "boards.h"
+#include "exec-memory.h"
#define SMP_BOOT_ADDR 0xe0000000
@@ -40,7 +41,12 @@ static void vexpress_a9_init(ram_addr_t ram_size,
const char *initrd_filename, const char *cpu_model)
{
CPUState *env = NULL;
- ram_addr_t ram_offset, vram_offset, sram_offset;
+ MemoryRegion *sysmem = get_system_memory();
+ MemoryRegion *ram = g_new(MemoryRegion, 1);
+ MemoryRegion *lowram = g_new(MemoryRegion, 1);
+ MemoryRegion *vram = g_new(MemoryRegion, 1);
+ MemoryRegion *sram = g_new(MemoryRegion, 1);
+ MemoryRegion *hackram = g_new(MemoryRegion, 1);
DeviceState *dev, *sysctl;
SysBusDevice *busdev;
qemu_irq *irqp;
@@ -71,7 +77,7 @@ static void vexpress_a9_init(ram_addr_t ram_size,
exit(1);
}
- ram_offset = qemu_ram_alloc(NULL, "vexpress.highmem", ram_size);
+ memory_region_init_ram(ram, NULL, "vexpress.highmem", ram_size);
low_ram_size = ram_size;
if (low_ram_size > 0x4000000) {
low_ram_size = 0x4000000;
@@ -80,9 +86,9 @@ static void vexpress_a9_init(ram_addr_t ram_size,
* address space should in theory be remappable to various
* things including ROM or RAM; we always map the RAM there.
*/
- cpu_register_physical_memory(0x0, low_ram_size, ram_offset | IO_MEM_RAM);
- cpu_register_physical_memory(0x60000000, ram_size,
- ram_offset | IO_MEM_RAM);
+ memory_region_init_alias(lowram, "vexpress.lowmem", ram, 0, low_ram_size);
+ memory_region_add_subregion(sysmem, 0x0, lowram);
+ memory_region_add_subregion(sysmem, 0x60000000, ram);
/* 0x1e000000 A9MPCore (SCU) private memory region */
dev = qdev_create(NULL, "a9mpcore_priv");
@@ -170,17 +176,15 @@ static void vexpress_a9_init(ram_addr_t ram_size,
/* CS4: NOR1 flash : 0x44000000 .. 0x48000000 */
/* CS2: SRAM : 0x48000000 .. 0x4a000000 */
sram_size = 0x2000000;
- sram_offset = qemu_ram_alloc(NULL, "vexpress.sram", sram_size);
- cpu_register_physical_memory(0x48000000, sram_size,
- sram_offset | IO_MEM_RAM);
+ memory_region_init_ram(sram, NULL, "vexpress.sram", sram_size);
+ memory_region_add_subregion(sysmem, 0x48000000, sram);
/* CS3: USB, ethernet, VRAM : 0x4c000000 .. 0x50000000 */
/* 0x4c000000 Video RAM */
vram_size = 0x800000;
- vram_offset = qemu_ram_alloc(NULL, "vexpress.vram", vram_size);
- cpu_register_physical_memory(0x4c000000, vram_size,
- vram_offset | IO_MEM_RAM);
+ memory_region_init_ram(vram, NULL, "vexpress.vram", vram_size);
+ memory_region_add_subregion(sysmem, 0x4c000000, vram);
/* 0x4e000000 LAN9118 Ethernet */
if (nd_table[0].vlan) {
@@ -193,9 +197,8 @@ static void vexpress_a9_init(ram_addr_t ram_size,
startup code. I guess this works on real hardware because the
BootROM happens to be in ROM/flash or in memory that isn't clobbered
until after Linux boots the secondary CPUs. */
- ram_offset = qemu_ram_alloc(NULL, "vexpress.hack", 0x1000);
- cpu_register_physical_memory(SMP_BOOT_ADDR, 0x1000,
- ram_offset | IO_MEM_RAM);
+ memory_region_init_ram(hackram, NULL, "vexpress.hack", 0x1000);
+ memory_region_add_subregion(sysmem, SMP_BOOT_ADDR, hackram);
vexpress_binfo.ram_size = ram_size;
vexpress_binfo.kernel_filename = kernel_filename;
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 04/17] virtex_ml507: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
` (2 preceding siblings ...)
2011-10-30 14:33 ` [Qemu-devel] [PATCH 03/17] vexpress: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 05/17] shix: " Avi Kivity
` (12 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/virtex_ml507.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/hw/virtex_ml507.c b/hw/virtex_ml507.c
index d31a204..5313e2e 100644
--- a/hw/virtex_ml507.c
+++ b/hw/virtex_ml507.c
@@ -192,7 +192,7 @@ static void virtex_init(ram_addr_t ram_size,
CPUState *env;
target_phys_addr_t ram_base = 0;
DriveInfo *dinfo;
- ram_addr_t phys_ram;
+ MemoryRegion *phys_ram = g_new(MemoryRegion, 1);
qemu_irq irq[32], *cpu_irq;
int kernel_size;
int i;
@@ -206,8 +206,8 @@ static void virtex_init(ram_addr_t ram_size,
env = ppc440_init_xilinx(&ram_size, 1, cpu_model, 400000000);
qemu_register_reset(main_cpu_reset, env);
- phys_ram = qemu_ram_alloc(NULL, "ram", ram_size);
- cpu_register_physical_memory(ram_base, ram_size, phys_ram | IO_MEM_RAM);
+ memory_region_init_ram(phys_ram, NULL, "ram", ram_size);
+ memory_region_add_subregion(address_space_mem, ram_base, phys_ram);
dinfo = drive_get(IF_PFLASH, 0, 0);
pflash_cfi01_register(0xfc000000, NULL, "virtex.flash", FLASH_SIZE,
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 05/17] shix: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
` (3 preceding siblings ...)
2011-10-30 14:33 ` [Qemu-devel] [PATCH 04/17] virtex_ml507: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 06/17] jazz_led: " Avi Kivity
` (11 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
RAM wasn't actually allocated, only used, so fix that as well.
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/shix.c | 14 +++++++++++---
1 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/hw/shix.c b/hw/shix.c
index dbf4764..670ddb5 100644
--- a/hw/shix.c
+++ b/hw/shix.c
@@ -32,6 +32,7 @@
#include "sysemu.h"
#include "boards.h"
#include "loader.h"
+#include "exec-memory.h"
#define BIOS_FILENAME "shix_bios.bin"
#define BIOS_ADDRESS 0xA0000000
@@ -44,6 +45,9 @@ static void shix_init(ram_addr_t ram_size,
int ret;
CPUState *env;
struct SH7750State *s;
+ MemoryRegion *sysmem = get_system_memory();
+ MemoryRegion *rom = g_new(MemoryRegion, 1);
+ MemoryRegion *sdram = g_new(MemoryRegion, 2);
if (!cpu_model)
cpu_model = "any";
@@ -53,11 +57,15 @@ static void shix_init(ram_addr_t ram_size,
/* Allocate memory space */
printf("Allocating ROM\n");
- cpu_register_physical_memory(0x00000000, 0x00004000, IO_MEM_ROM);
+ memory_region_init_ram(rom, NULL, "shix.rom", 0x4000);
+ memory_region_set_readonly(rom, true);
+ memory_region_add_subregion(sysmem, 0x00000000, rom);
printf("Allocating SDRAM 1\n");
- cpu_register_physical_memory(0x08000000, 0x01000000, 0x00004000);
+ memory_region_init_ram(&sdram[0], NULL, "shix.sdram1", 0x01000000);
+ memory_region_add_subregion(sysmem, 0x08000000, &sdram[0]);
printf("Allocating SDRAM 2\n");
- cpu_register_physical_memory(0x0c000000, 0x01000000, 0x01004000);
+ memory_region_init_ram(&sdram[1], NULL, "shix.sdram2", 0x01000000);
+ memory_region_add_subregion(sysmem, 0x0c000000, &sdram[1]);
/* Load BIOS in 0 (and access it through P2, 0xA0000000) */
if (bios_name == NULL)
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 06/17] jazz_led: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
` (4 preceding siblings ...)
2011-10-30 14:33 ` [Qemu-devel] [PATCH 05/17] shix: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 07/17] parallel: " Avi Kivity
` (10 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/jazz_led.c | 25 ++++++++++---------------
hw/mips.h | 4 +++-
hw/mips_jazz.c | 2 +-
3 files changed, 14 insertions(+), 17 deletions(-)
diff --git a/hw/jazz_led.c b/hw/jazz_led.c
index eb472a0..6fab334 100644
--- a/hw/jazz_led.c
+++ b/hw/jazz_led.c
@@ -43,6 +43,7 @@
} screen_state_t;
typedef struct LedState {
+ MemoryRegion iomem;
uint8_t segments;
DisplayState *ds;
screen_state_t state;
@@ -140,16 +141,12 @@ static void led_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
#endif
}
-static CPUReadMemoryFunc * const led_read[3] = {
- led_readb,
- led_readw,
- led_readl,
-};
-
-static CPUWriteMemoryFunc * const led_write[3] = {
- led_writeb,
- led_writew,
- led_writel,
+static const MemoryRegionOps led_ops = {
+ .old_mmio = {
+ .read = { led_readb, led_readw, led_readl, },
+ .write = { led_writeb, led_writew, led_writel, },
+ },
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
/***********************************************************/
@@ -307,18 +304,16 @@ static void jazz_led_text_update(void *opaque, console_ch_t *chardata)
dpy_update(s->ds, 0, 0, 2, 1);
}
-void jazz_led_init(target_phys_addr_t base)
+void jazz_led_init(MemoryRegion *address_space, target_phys_addr_t base)
{
LedState *s;
- int io;
s = g_malloc0(sizeof(LedState));
s->state = REDRAW_SEGMENTS | REDRAW_BACKGROUND;
- io = cpu_register_io_memory(led_read, led_write, s,
- DEVICE_NATIVE_ENDIAN);
- cpu_register_physical_memory(base, 1, io);
+ memory_region_init_io(&s->iomem, &led_ops, s, "led", 1);
+ memory_region_add_subregion(address_space, base, &s->iomem);
s->ds = graphic_console_init(jazz_led_update_display,
jazz_led_invalidate_display,
diff --git a/hw/mips.h b/hw/mips.h
index 6fa9a3a..0d4bf25 100644
--- a/hw/mips.h
+++ b/hw/mips.h
@@ -2,6 +2,8 @@
#define HW_MIPS_H
/* Definitions for mips board emulation. */
+#include "memory.h"
+
/* gt64xxx.c */
PCIBus *gt64120_register(qemu_irq *pic);
@@ -9,7 +11,7 @@ PCIBus *gt64120_register(qemu_irq *pic);
PCIBus *bonito_init(qemu_irq *pic);
/* jazz_led.c */
-void jazz_led_init(target_phys_addr_t base);
+void jazz_led_init(MemoryRegion *address_space, target_phys_addr_t base);
/* rc4030.c */
typedef struct rc4030DMAState *rc4030_dma;
diff --git a/hw/mips_jazz.c b/hw/mips_jazz.c
index 14beea2..6e657dd 100644
--- a/hw/mips_jazz.c
+++ b/hw/mips_jazz.c
@@ -287,7 +287,7 @@ static void mips_jazz_init(MemoryRegion *address_space,
sysbus_mmio_map(sysbus, 0, 0x80009000);
/* LED indicator */
- jazz_led_init(0x8000f000);
+ jazz_led_init(address_space, 0x8000f000);
}
static
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 07/17] parallel: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
` (5 preceding siblings ...)
2011-10-30 14:33 ` [Qemu-devel] [PATCH 06/17] jazz_led: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 08/17] zaurus: " Avi Kivity
` (9 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
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
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 08/17] zaurus: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
` (6 preceding siblings ...)
2011-10-30 14:33 ` [Qemu-devel] [PATCH 07/17] parallel: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 09/17] pl011: " Avi Kivity
` (8 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/zaurus.c | 26 +++++++++++---------------
1 files changed, 11 insertions(+), 15 deletions(-)
diff --git a/hw/zaurus.c b/hw/zaurus.c
index 0eeacf7..3c27cd8 100644
--- a/hw/zaurus.c
+++ b/hw/zaurus.c
@@ -28,6 +28,7 @@
struct ScoopInfo {
SysBusDevice busdev;
qemu_irq handler[16];
+ MemoryRegion iomem;
uint16_t status;
uint16_t power;
uint32_t gpio_level;
@@ -67,7 +68,8 @@ static inline void scoop_gpio_handler_update(ScoopInfo *s) {
s->prev_level = level;
}
-static uint32_t scoop_readb(void *opaque, target_phys_addr_t addr)
+static uint64_t scoop_read(void *opaque, target_phys_addr_t addr,
+ unsigned size)
{
ScoopInfo *s = (ScoopInfo *) opaque;
@@ -100,7 +102,8 @@ static uint32_t scoop_readb(void *opaque, target_phys_addr_t addr)
return 0;
}
-static void scoop_writeb(void *opaque, target_phys_addr_t addr, uint32_t value)
+static void scoop_write(void *opaque, target_phys_addr_t addr,
+ uint64_t value, unsigned size)
{
ScoopInfo *s = (ScoopInfo *) opaque;
value &= 0xffff;
@@ -143,15 +146,10 @@ static void scoop_writeb(void *opaque, target_phys_addr_t addr, uint32_t value)
}
}
-static CPUReadMemoryFunc * const scoop_readfn[] = {
- scoop_readb,
- scoop_readb,
- scoop_readb,
-};
-static CPUWriteMemoryFunc * const scoop_writefn[] = {
- scoop_writeb,
- scoop_writeb,
- scoop_writeb,
+static const MemoryRegionOps scoop_ops = {
+ .read = scoop_read,
+ .write = scoop_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static void scoop_gpio_set(void *opaque, int line, int level)
@@ -167,15 +165,13 @@ static void scoop_gpio_set(void *opaque, int line, int level)
static int scoop_init(SysBusDevice *dev)
{
ScoopInfo *s = FROM_SYSBUS(ScoopInfo, dev);
- int iomemtype;
s->status = 0x02;
qdev_init_gpio_out(&s->busdev.qdev, s->handler, 16);
qdev_init_gpio_in(&s->busdev.qdev, scoop_gpio_set, 16);
- iomemtype = cpu_register_io_memory(scoop_readfn,
- scoop_writefn, s, DEVICE_NATIVE_ENDIAN);
+ memory_region_init_io(&s->iomem, &scoop_ops, s, "scoop", 0x1000);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ sysbus_init_mmio_region(dev, &s->iomem);
return 0;
}
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 09/17] pl011: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
` (7 preceding siblings ...)
2011-10-30 14:33 ` [Qemu-devel] [PATCH 08/17] zaurus: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 10/17] pl022: " Avi Kivity
` (7 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/pl011.c | 27 ++++++++++-----------------
1 files changed, 10 insertions(+), 17 deletions(-)
diff --git a/hw/pl011.c b/hw/pl011.c
index 707a161..9cf6dea 100644
--- a/hw/pl011.c
+++ b/hw/pl011.c
@@ -12,6 +12,7 @@
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
uint32_t readbuff;
uint32_t flags;
uint32_t lcr;
@@ -53,7 +54,8 @@ static void pl011_update(pl011_state *s)
qemu_set_irq(s->irq, flags != 0);
}
-static uint32_t pl011_read(void *opaque, target_phys_addr_t offset)
+static uint64_t pl011_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
pl011_state *s = (pl011_state *)opaque;
uint32_t c;
@@ -123,7 +125,7 @@ static void pl011_set_read_trigger(pl011_state *s)
}
static void pl011_write(void *opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
pl011_state *s = (pl011_state *)opaque;
unsigned char ch;
@@ -223,16 +225,10 @@ static void pl011_event(void *opaque, int event)
pl011_put_fifo(opaque, 0x400);
}
-static CPUReadMemoryFunc * const pl011_readfn[] = {
- pl011_read,
- pl011_read,
- pl011_read
-};
-
-static CPUWriteMemoryFunc * const pl011_writefn[] = {
- pl011_write,
- pl011_write,
- pl011_write
+static const MemoryRegionOps pl011_ops = {
+ .read = pl011_read,
+ .write = pl011_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static const VMStateDescription vmstate_pl011 = {
@@ -262,13 +258,10 @@ static void pl011_event(void *opaque, int event)
static int pl011_init(SysBusDevice *dev, const unsigned char *id)
{
- int iomemtype;
pl011_state *s = FROM_SYSBUS(pl011_state, dev);
- iomemtype = cpu_register_io_memory(pl011_readfn,
- pl011_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000,iomemtype);
+ memory_region_init_io(&s->iomem, &pl011_ops, s, "pl011", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
sysbus_init_irq(dev, &s->irq);
s->id = id;
s->chr = qdev_init_chardev(&dev->qdev);
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 10/17] pl022: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
` (8 preceding siblings ...)
2011-10-30 14:33 ` [Qemu-devel] [PATCH 09/17] pl011: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 11/17] pl031: " Avi Kivity
` (6 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/pl022.c | 29 +++++++++++------------------
1 files changed, 11 insertions(+), 18 deletions(-)
diff --git a/hw/pl022.c b/hw/pl022.c
index 9a1cb71..e0cf2b0 100644
--- a/hw/pl022.c
+++ b/hw/pl022.c
@@ -42,6 +42,7 @@
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
uint32_t cr0;
uint32_t cr1;
uint32_t bitmask;
@@ -130,7 +131,8 @@ static void pl022_xfer(pl022_state *s)
pl022_update(s);
}
-static uint32_t pl022_read(void *opaque, target_phys_addr_t offset)
+static uint64_t pl022_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
pl022_state *s = (pl022_state *)opaque;
int val;
@@ -173,7 +175,7 @@ static uint32_t pl022_read(void *opaque, target_phys_addr_t offset)
}
static void pl022_write(void *opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
pl022_state *s = (pl022_state *)opaque;
@@ -193,7 +195,7 @@ static void pl022_write(void *opaque, target_phys_addr_t offset,
break;
case 0x08: /* DR */
if (s->tx_fifo_len < 8) {
- DPRINTF("TX %02x\n", value);
+ DPRINTF("TX %02x\n", (unsigned)value);
s->tx_fifo[s->tx_fifo_head] = value & s->bitmask;
s->tx_fifo_head = (s->tx_fifo_head + 1) & 7;
s->tx_fifo_len++;
@@ -227,16 +229,10 @@ static void pl022_reset(pl022_state *s)
s->sr = PL022_SR_TFE | PL022_SR_TNF;
}
-static CPUReadMemoryFunc * const pl022_readfn[] = {
- pl022_read,
- pl022_read,
- pl022_read
-};
-
-static CPUWriteMemoryFunc * const pl022_writefn[] = {
- pl022_write,
- pl022_write,
- pl022_write
+static const MemoryRegionOps pl022_ops = {
+ .read = pl022_read,
+ .write = pl022_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static const VMStateDescription vmstate_pl022 = {
@@ -279,12 +275,9 @@ static void pl022_reset(pl022_state *s)
static int pl022_init(SysBusDevice *dev)
{
pl022_state *s = FROM_SYSBUS(pl022_state, dev);
- int iomemtype;
- iomemtype = cpu_register_io_memory(pl022_readfn,
- pl022_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &pl022_ops, s, "pl022", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
sysbus_init_irq(dev, &s->irq);
s->ssi = ssi_create_bus(&dev->qdev, "ssi");
pl022_reset(s);
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 11/17] pl031: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
` (9 preceding siblings ...)
2011-10-30 14:33 ` [Qemu-devel] [PATCH 10/17] pl022: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 12/17] pl050: " Avi Kivity
` (5 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/pl031.c | 30 ++++++++++--------------------
1 files changed, 10 insertions(+), 20 deletions(-)
diff --git a/hw/pl031.c b/hw/pl031.c
index 017a313..4ff96f9 100644
--- a/hw/pl031.c
+++ b/hw/pl031.c
@@ -32,6 +32,7 @@
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
QEMUTimer *timer;
qemu_irq irq;
@@ -105,7 +106,8 @@ static void pl031_set_alarm(pl031_state *s)
}
}
-static uint32_t pl031_read(void *opaque, target_phys_addr_t offset)
+static uint64_t pl031_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
pl031_state *s = (pl031_state *)opaque;
@@ -141,7 +143,7 @@ static uint32_t pl031_read(void *opaque, target_phys_addr_t offset)
}
static void pl031_write(void * opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
pl031_state *s = (pl031_state *)opaque;
@@ -186,31 +188,19 @@ static void pl031_write(void * opaque, target_phys_addr_t offset,
}
}
-static CPUWriteMemoryFunc * const pl031_writefn[] = {
- pl031_write,
- pl031_write,
- pl031_write
-};
-
-static CPUReadMemoryFunc * const pl031_readfn[] = {
- pl031_read,
- pl031_read,
- pl031_read
+static const MemoryRegionOps pl031_ops = {
+ .read = pl031_read,
+ .write = pl031_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static int pl031_init(SysBusDevice *dev)
{
- int iomemtype;
pl031_state *s = FROM_SYSBUS(pl031_state, dev);
struct tm tm;
- iomemtype = cpu_register_io_memory(pl031_readfn, pl031_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- if (iomemtype == -1) {
- hw_error("pl031_init: Can't register I/O memory\n");
- }
-
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &pl031_ops, s, "pl031", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
sysbus_init_irq(dev, &s->irq);
/* ??? We assume vm_clock is zero at this point. */
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 12/17] pl050: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
` (10 preceding siblings ...)
2011-10-30 14:33 ` [Qemu-devel] [PATCH 11/17] pl031: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 13/17] pl061: " Avi Kivity
` (4 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/pl050.c | 27 ++++++++++-----------------
1 files changed, 10 insertions(+), 17 deletions(-)
diff --git a/hw/pl050.c b/hw/pl050.c
index f7fa2e2..dedd622 100644
--- a/hw/pl050.c
+++ b/hw/pl050.c
@@ -12,6 +12,7 @@
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
void *dev;
uint32_t cr;
uint32_t clk;
@@ -57,7 +58,8 @@ static void pl050_update(void *opaque, int level)
qemu_set_irq(s->irq, raise);
}
-static uint32_t pl050_read(void *opaque, target_phys_addr_t offset)
+static uint64_t pl050_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
pl050_state *s = (pl050_state *)opaque;
if (offset >= 0xfe0 && offset < 0x1000)
@@ -99,7 +101,7 @@ static uint32_t pl050_read(void *opaque, target_phys_addr_t offset)
}
static void pl050_write(void *opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
pl050_state *s = (pl050_state *)opaque;
switch (offset >> 2) {
@@ -124,27 +126,18 @@ static void pl050_write(void *opaque, target_phys_addr_t offset,
hw_error("pl050_write: Bad offset %x\n", (int)offset);
}
}
-static CPUReadMemoryFunc * const pl050_readfn[] = {
- pl050_read,
- pl050_read,
- pl050_read
-};
-
-static CPUWriteMemoryFunc * const pl050_writefn[] = {
- pl050_write,
- pl050_write,
- pl050_write
+static const MemoryRegionOps pl050_ops = {
+ .read = pl050_read,
+ .write = pl050_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static int pl050_init(SysBusDevice *dev, int is_mouse)
{
pl050_state *s = FROM_SYSBUS(pl050_state, dev);
- int iomemtype;
- iomemtype = cpu_register_io_memory(pl050_readfn,
- pl050_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &pl050_ops, s, "pl050", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
sysbus_init_irq(dev, &s->irq);
s->is_mouse = is_mouse;
if (s->is_mouse)
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 13/17] pl061: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
` (11 preceding siblings ...)
2011-10-30 14:33 ` [Qemu-devel] [PATCH 12/17] pl050: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 14/17] pl080: " Avi Kivity
` (3 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/pl061.c | 27 ++++++++++-----------------
1 files changed, 10 insertions(+), 17 deletions(-)
diff --git a/hw/pl061.c b/hw/pl061.c
index d13746c..ce139cd 100644
--- a/hw/pl061.c
+++ b/hw/pl061.c
@@ -30,6 +30,7 @@
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
uint32_t locked;
uint32_t data;
uint32_t old_data;
@@ -112,7 +113,8 @@ static void pl061_update(pl061_state *s)
/* FIXME: Implement input interrupts. */
}
-static uint32_t pl061_read(void *opaque, target_phys_addr_t offset)
+static uint64_t pl061_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
pl061_state *s = (pl061_state *)opaque;
@@ -168,7 +170,7 @@ static uint32_t pl061_read(void *opaque, target_phys_addr_t offset)
}
static void pl061_write(void *opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
pl061_state *s = (pl061_state *)opaque;
uint8_t mask;
@@ -262,27 +264,18 @@ static void pl061_set_irq(void * opaque, int irq, int level)
}
}
-static CPUReadMemoryFunc * const pl061_readfn[] = {
- pl061_read,
- pl061_read,
- pl061_read
-};
-
-static CPUWriteMemoryFunc * const pl061_writefn[] = {
- pl061_write,
- pl061_write,
- pl061_write
+static const MemoryRegionOps pl061_ops = {
+ .read = pl061_read,
+ .write = pl061_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static int pl061_init(SysBusDevice *dev, const unsigned char *id)
{
- int iomemtype;
pl061_state *s = FROM_SYSBUS(pl061_state, dev);
s->id = id;
- iomemtype = cpu_register_io_memory(pl061_readfn,
- pl061_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &pl061_ops, s, "pl061", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
sysbus_init_irq(dev, &s->irq);
qdev_init_gpio_in(&dev->qdev, pl061_set_irq, 8);
qdev_init_gpio_out(&dev->qdev, s->out, 8);
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 14/17] pl080: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
` (12 preceding siblings ...)
2011-10-30 14:33 ` [Qemu-devel] [PATCH 13/17] pl061: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 15/17] pl110: " Avi Kivity
` (2 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/pl080.c | 27 ++++++++++-----------------
1 files changed, 10 insertions(+), 17 deletions(-)
diff --git a/hw/pl080.c b/hw/pl080.c
index 5ba3b08..1efd3bd 100644
--- a/hw/pl080.c
+++ b/hw/pl080.c
@@ -37,6 +37,7 @@
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
uint8_t tc_int;
uint8_t tc_mask;
uint8_t err_int;
@@ -217,7 +218,8 @@ static void pl080_run(pl080_state *s)
}
}
-static uint32_t pl080_read(void *opaque, target_phys_addr_t offset)
+static uint64_t pl080_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
pl080_state *s = (pl080_state *)opaque;
uint32_t i;
@@ -285,7 +287,7 @@ static uint32_t pl080_read(void *opaque, target_phys_addr_t offset)
}
static void pl080_write(void *opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
pl080_state *s = (pl080_state *)opaque;
int i;
@@ -344,27 +346,18 @@ static void pl080_write(void *opaque, target_phys_addr_t offset,
pl080_update(s);
}
-static CPUReadMemoryFunc * const pl080_readfn[] = {
- pl080_read,
- pl080_read,
- pl080_read
-};
-
-static CPUWriteMemoryFunc * const pl080_writefn[] = {
- pl080_write,
- pl080_write,
- pl080_write
+static const MemoryRegionOps pl080_ops = {
+ .read = pl080_read,
+ .write = pl080_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static int pl08x_init(SysBusDevice *dev, int nchannels)
{
- int iomemtype;
pl080_state *s = FROM_SYSBUS(pl080_state, dev);
- iomemtype = cpu_register_io_memory(pl080_readfn,
- pl080_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &pl080_ops, s, "pl080", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
sysbus_init_irq(dev, &s->irq);
s->nchannels = nchannels;
return 0;
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 15/17] pl110: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
` (13 preceding siblings ...)
2011-10-30 14:33 ` [Qemu-devel] [PATCH 14/17] pl080: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 16/17] pl181: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 17/17] pl190: " Avi Kivity
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/pl110.c | 27 ++++++++++-----------------
1 files changed, 10 insertions(+), 17 deletions(-)
diff --git a/hw/pl110.c b/hw/pl110.c
index 4ac710a..fbbcb2e 100644
--- a/hw/pl110.c
+++ b/hw/pl110.c
@@ -40,6 +40,7 @@ enum pl110_version
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
DisplayState *ds;
int version;
@@ -301,7 +302,8 @@ static void pl110_update(pl110_state *s)
/* TODO: Implement interrupts. */
}
-static uint32_t pl110_read(void *opaque, target_phys_addr_t offset)
+static uint64_t pl110_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
pl110_state *s = (pl110_state *)opaque;
@@ -350,7 +352,7 @@ static uint32_t pl110_read(void *opaque, target_phys_addr_t offset)
}
static void pl110_write(void *opaque, target_phys_addr_t offset,
- uint32_t val)
+ uint64_t val, unsigned size)
{
pl110_state *s = (pl110_state *)opaque;
int n;
@@ -416,16 +418,10 @@ static void pl110_write(void *opaque, target_phys_addr_t offset,
}
}
-static CPUReadMemoryFunc * const pl110_readfn[] = {
- pl110_read,
- pl110_read,
- pl110_read
-};
-
-static CPUWriteMemoryFunc * const pl110_writefn[] = {
- pl110_write,
- pl110_write,
- pl110_write
+static const MemoryRegionOps pl110_ops = {
+ .read = pl110_read,
+ .write = pl110_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static void pl110_mux_ctrl_set(void *opaque, int line, int level)
@@ -437,12 +433,9 @@ static void pl110_mux_ctrl_set(void *opaque, int line, int level)
static int pl110_init(SysBusDevice *dev)
{
pl110_state *s = FROM_SYSBUS(pl110_state, dev);
- int iomemtype;
- iomemtype = cpu_register_io_memory(pl110_readfn,
- pl110_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &pl110_ops, s, "pl110", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
sysbus_init_irq(dev, &s->irq);
qdev_init_gpio_in(&s->busdev.qdev, pl110_mux_ctrl_set, 1);
s->ds = graphic_console_init(pl110_update_display,
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 16/17] pl181: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
` (14 preceding siblings ...)
2011-10-30 14:33 ` [Qemu-devel] [PATCH 15/17] pl110: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 17/17] pl190: " Avi Kivity
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/pl181.c | 26 ++++++++++----------------
1 files changed, 10 insertions(+), 16 deletions(-)
diff --git a/hw/pl181.c b/hw/pl181.c
index 0943c09..e13ea8e 100644
--- a/hw/pl181.c
+++ b/hw/pl181.c
@@ -24,6 +24,7 @@
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
SDState *card;
uint32_t clock;
uint32_t power;
@@ -259,7 +260,8 @@ static void pl181_fifo_run(pl181_state *s)
}
}
-static uint32_t pl181_read(void *opaque, target_phys_addr_t offset)
+static uint64_t pl181_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
pl181_state *s = (pl181_state *)opaque;
uint32_t tmp;
@@ -342,7 +344,7 @@ static uint32_t pl181_read(void *opaque, target_phys_addr_t offset)
}
static void pl181_write(void *opaque, target_phys_addr_t offset,
- uint32_t value)
+ uint64_t value, unsigned size)
{
pl181_state *s = (pl181_state *)opaque;
@@ -412,16 +414,10 @@ static void pl181_write(void *opaque, target_phys_addr_t offset,
pl181_update(s);
}
-static CPUReadMemoryFunc * const pl181_readfn[] = {
- pl181_read,
- pl181_read,
- pl181_read
-};
-
-static CPUWriteMemoryFunc * const pl181_writefn[] = {
- pl181_write,
- pl181_write,
- pl181_write
+static const MemoryRegionOps pl181_ops = {
+ .read = pl181_read,
+ .write = pl181_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static void pl181_reset(void *opaque)
@@ -453,13 +449,11 @@ static void pl181_reset(void *opaque)
static int pl181_init(SysBusDevice *dev)
{
- int iomemtype;
pl181_state *s = FROM_SYSBUS(pl181_state, dev);
DriveInfo *dinfo;
- iomemtype = cpu_register_io_memory(pl181_readfn, pl181_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &pl181_ops, s, "pl181", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
sysbus_init_irq(dev, &s->irq[0]);
sysbus_init_irq(dev, &s->irq[1]);
qdev_init_gpio_out(&s->busdev.qdev, s->cardstatus, 2);
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Qemu-devel] [PATCH 17/17] pl190: convert to memory API
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
` (15 preceding siblings ...)
2011-10-30 14:33 ` [Qemu-devel] [PATCH 16/17] pl181: " Avi Kivity
@ 2011-10-30 14:33 ` Avi Kivity
16 siblings, 0 replies; 18+ messages in thread
From: Avi Kivity @ 2011-10-30 14:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Avi Kivity <avi@redhat.com>
---
hw/pl190.c | 28 +++++++++++-----------------
1 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/hw/pl190.c b/hw/pl190.c
index 8dc7e42..a3d008d 100644
--- a/hw/pl190.c
+++ b/hw/pl190.c
@@ -17,6 +17,7 @@
typedef struct {
SysBusDevice busdev;
+ MemoryRegion iomem;
uint32_t level;
uint32_t soft_level;
uint32_t irq_enable;
@@ -84,7 +85,8 @@ static void pl190_update_vectors(pl190_state *s)
pl190_update(s);
}
-static uint32_t pl190_read(void *opaque, target_phys_addr_t offset)
+static uint64_t pl190_read(void *opaque, target_phys_addr_t offset,
+ unsigned size)
{
pl190_state *s = (pl190_state *)opaque;
int i;
@@ -140,7 +142,8 @@ static uint32_t pl190_read(void *opaque, target_phys_addr_t offset)
}
}
-static void pl190_write(void *opaque, target_phys_addr_t offset, uint32_t val)
+static void pl190_write(void *opaque, target_phys_addr_t offset,
+ uint64_t val, unsigned size)
{
pl190_state *s = (pl190_state *)opaque;
@@ -199,16 +202,10 @@ static void pl190_write(void *opaque, target_phys_addr_t offset, uint32_t val)
pl190_update(s);
}
-static CPUReadMemoryFunc * const pl190_readfn[] = {
- pl190_read,
- pl190_read,
- pl190_read
-};
-
-static CPUWriteMemoryFunc * const pl190_writefn[] = {
- pl190_write,
- pl190_write,
- pl190_write
+static const MemoryRegionOps pl190_ops = {
+ .read = pl190_read,
+ .write = pl190_write,
+ .endianness = DEVICE_NATIVE_ENDIAN,
};
static void pl190_reset(DeviceState *d)
@@ -230,12 +227,9 @@ static void pl190_reset(DeviceState *d)
static int pl190_init(SysBusDevice *dev)
{
pl190_state *s = FROM_SYSBUS(pl190_state, dev);
- int iomemtype;
- iomemtype = cpu_register_io_memory(pl190_readfn,
- pl190_writefn, s,
- DEVICE_NATIVE_ENDIAN);
- sysbus_init_mmio(dev, 0x1000, iomemtype);
+ memory_region_init_io(&s->iomem, &pl190_ops, s, "pl190", 0x1000);
+ sysbus_init_mmio_region(dev, &s->iomem);
qdev_init_gpio_in(&dev->qdev, pl190_set_irq, 32);
sysbus_init_irq(dev, &s->irq);
sysbus_init_irq(dev, &s->fiq);
--
1.7.6.3
^ permalink raw reply related [flat|nested] 18+ messages in thread
end of thread, other threads:[~2011-10-30 14:34 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-30 14:33 [Qemu-devel] [PATCH 00/17] Memory API conversions, batch 13 Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 01/17] tosa: convert to memory API Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 02/17] versatilepb: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 03/17] vexpress: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 04/17] virtex_ml507: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 05/17] shix: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 06/17] jazz_led: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 07/17] parallel: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 08/17] zaurus: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 09/17] pl011: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 10/17] pl022: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 11/17] pl031: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 12/17] pl050: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 13/17] pl061: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 14/17] pl080: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 15/17] pl110: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 16/17] pl181: " Avi Kivity
2011-10-30 14:33 ` [Qemu-devel] [PATCH 17/17] pl190: " Avi Kivity
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).