From patchwork Wed Mar 26 10:37:02 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hu Tao X-Patchwork-Id: 333842 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 0A671140085 for ; Wed, 26 Mar 2014 23:18:15 +1100 (EST) Received: from localhost ([::1]:46988 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WSlq3-0000OM-NN for incoming@patchwork.ozlabs.org; Wed, 26 Mar 2014 07:17:43 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38244) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WSljx-0002qR-Cj for qemu-devel@nongnu.org; Wed, 26 Mar 2014 07:11:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WSljq-0003Jt-Hd for qemu-devel@nongnu.org; Wed, 26 Mar 2014 07:11:25 -0400 Received: from [59.151.112.132] (port=5031 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WSljn-0003GC-IZ for qemu-devel@nongnu.org; Wed, 26 Mar 2014 07:11:18 -0400 X-IronPort-AV: E=Sophos;i="4.97,734,1389715200"; d="scan'208";a="28487347" Received: from unknown (HELO edo.cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 26 Mar 2014 18:34:36 +0800 Received: from G08CNEXCHPEKD02.g08.fujitsu.local (localhost.localdomain [127.0.0.1]) by edo.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id s2QAap5P003094; Wed, 26 Mar 2014 18:36:57 +0800 Received: from G08CNEXMBPEKD03.g08.fujitsu.local ([10.167.33.86]) by G08CNEXCHPEKD02.g08.fujitsu.local ([10.167.33.83]) with mapi id 14.03.0146.002; Wed, 26 Mar 2014 18:36:59 +0800 From: "hutao@cn.fujitsu.com" To: "qemu-devel@nongnu.org" Thread-Topic: [PATCH v3 28/34] hw: switch all boards to use memory_region_allocate_system_memory Thread-Index: AQHPSN9V2I7AUupBKkifgUT14FR2YQ== Date: Wed, 26 Mar 2014 10:37:02 +0000 Message-ID: <456f614776562b4b448c5b609cd594632349fec2.1395825871.git.hutao@cn.fujitsu.com> References: In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.167.226.102] MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 59.151.112.132 Cc: "ehabkost@redhat.com" , "imammedo@redhat.com" , "mtosatti@redhat.com" , Paolo Bonzini , "a.motakis@virtualopensystems.com" , "gaowanlong@cn.fujitsu.com" Subject: [Qemu-devel] [PATCH v3 28/34] hw: switch all boards to use memory_region_allocate_system_memory 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 Signed-off-by: Hu Tao --- hw/alpha/typhoon.c | 4 ++-- hw/arm/cubieboard.c | 5 +++-- hw/arm/digic_boards.c | 3 +-- hw/arm/exynos4210.c | 18 +++++++++------ hw/arm/highbank.c | 3 ++- hw/arm/integratorcp.c | 4 ++-- hw/arm/kzm.c | 3 +-- hw/arm/musicpal.c | 4 ++-- hw/arm/omap1.c | 5 +++-- hw/arm/omap2.c | 5 +++-- hw/arm/pxa2xx.c | 9 ++++---- hw/arm/realview.c | 11 +++++---- hw/arm/strongarm.c | 5 +++-- hw/arm/versatilepb.c | 4 ++-- hw/arm/vexpress.c | 8 +++---- hw/arm/virt.c | 4 ++-- hw/arm/xilinx_zynq.c | 4 ++-- hw/block/onenand.c | 7 +++--- hw/cris/axis_dev88.c | 4 ++-- hw/lm32/lm32_boards.c | 8 +++---- hw/lm32/milkymist.c | 4 ++-- hw/m68k/an5206.c | 4 ++-- hw/m68k/dummy_m68k.c | 4 ++-- hw/m68k/mcf5208.c | 4 ++-- hw/microblaze/petalogix_ml605_mmu.c | 5 +++-- hw/microblaze/petalogix_s3adsp1800_mmu.c | 5 +++-- hw/mips/mips_fulong2e.c | 4 ++-- hw/mips/mips_jazz.c | 4 ++-- hw/mips/mips_malta.c | 4 ++-- hw/mips/mips_mipssim.c | 4 ++-- hw/mips/mips_r4k.c | 4 ++-- hw/moxie/moxiesim.c | 4 ++-- hw/openrisc/openrisc_sim.c | 3 ++- hw/ppc/e500.c | 4 ++-- hw/ppc/mac_newworld.c | 4 ++-- hw/ppc/mac_oldworld.c | 4 ++-- hw/ppc/ppc405_boards.c | 22 +++++++++--------- hw/ppc/ppc4xx_devs.c | 38 +++++++++++++++++++++++++------- hw/ppc/prep.c | 3 +-- hw/ppc/spapr.c | 4 ++-- hw/ppc/virtex_ml507.c | 3 +-- hw/s390x/s390-virtio-ccw.c | 4 ++-- hw/s390x/s390-virtio.c | 4 ++-- hw/sh4/r2d.c | 4 ++-- hw/sh4/shix.c | 12 ++++++---- hw/sparc/leon3.c | 3 +-- hw/sparc/sun4m.c | 4 ++-- hw/sparc64/sun4u.c | 4 ++-- hw/unicore32/puv3.c | 4 ++-- hw/xtensa/xtensa_lx60.c | 4 ++-- hw/xtensa/xtensa_sim.c | 4 ++-- 51 files changed, 170 insertions(+), 130 deletions(-) diff --git a/hw/alpha/typhoon.c b/hw/alpha/typhoon.c index 67a1070..c1c75f4 100644 --- a/hw/alpha/typhoon.c +++ b/hw/alpha/typhoon.c @@ -843,8 +843,8 @@ PCIBus *typhoon_init(ram_addr_t ram_size, ISABus **isa_bus, /* Main memory region, 0x00.0000.0000. Real hardware supports 32GB, but the address space hole reserved at this point is 8TB. */ - memory_region_init_ram(&s->ram_region, OBJECT(s), "ram", ram_size); - vmstate_register_ram_global(&s->ram_region); + memory_region_allocate_system_memory(&s->ram_region, OBJECT(s), + "ram", ram_size); memory_region_add_subregion(addr_space, 0, &s->ram_region); /* TIGbus, 0x801.0000.0000, 1GB. */ diff --git a/hw/arm/cubieboard.c b/hw/arm/cubieboard.c index d95a7f3..dba0628 100644 --- a/hw/arm/cubieboard.c +++ b/hw/arm/cubieboard.c @@ -50,8 +50,9 @@ static void cubieboard_init(QEMUMachineInitArgs *args) exit(1); } - memory_region_init_ram(&s->sdram, NULL, "cubieboard.ram", args->ram_size); - vmstate_register_ram_global(&s->sdram); + memory_region_allocate_system_memory(&s->sdram, NULL, + "cubieboard.ram", + args->ram_size); memory_region_add_subregion(get_system_memory(), AW_A10_SDRAM_BASE, &s->sdram); diff --git a/hw/arm/digic_boards.c b/hw/arm/digic_boards.c index 32fc30a..7ca0e74 100644 --- a/hw/arm/digic_boards.c +++ b/hw/arm/digic_boards.c @@ -51,9 +51,8 @@ typedef struct DigicBoard { static void digic4_board_setup_ram(DigicBoardState *s, hwaddr ram_size) { - memory_region_init_ram(&s->ram, NULL, "ram", ram_size); + memory_region_allocate_system_memory(&s->ram, NULL, "ram", ram_size); memory_region_add_subregion(get_system_memory(), 0, &s->ram); - vmstate_register_ram_global(&s->ram); } static void digic4_board_init(DigicBoard *board) diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c index 6426d16..101f96c 100644 --- a/hw/arm/exynos4210.c +++ b/hw/arm/exynos4210.c @@ -140,6 +140,7 @@ Exynos4210State *exynos4210_init(MemoryRegion *system_mem, int i, n; Exynos4210State *s = g_new(Exynos4210State, 1); qemu_irq gate_irq[EXYNOS4210_NCPUS][EXYNOS4210_IRQ_GATE_NINPUTS]; + MemoryRegion *ram = g_malloc0(sizeof(*ram)); unsigned long mem_size; DeviceState *dev; SysBusDevice *busdev; @@ -271,18 +272,21 @@ Exynos4210State *exynos4210_init(MemoryRegion *system_mem, /* DRAM */ mem_size = ram_size; + memory_region_allocate_system_memory(ram, NULL, "exynos4210.dram", + ram_size); + if (mem_size > EXYNOS4210_DRAM_MAX_SIZE) { - memory_region_init_ram(&s->dram1_mem, NULL, "exynos4210.dram1", - mem_size - EXYNOS4210_DRAM_MAX_SIZE); - vmstate_register_ram_global(&s->dram1_mem); + mem_size -= EXYNOS4210_DRAM_MAX_SIZE; + memory_region_init_alias(&s->dram1_mem, NULL, "exynos4210.dram1", + ram, EXYNOS4210_DRAM_MAX_SIZE, mem_size); memory_region_add_subregion(system_mem, EXYNOS4210_DRAM1_BASE_ADDR, - &s->dram1_mem); + &s->dram1_mem); mem_size = EXYNOS4210_DRAM_MAX_SIZE; } - memory_region_init_ram(&s->dram0_mem, NULL, "exynos4210.dram0", mem_size); - vmstate_register_ram_global(&s->dram0_mem); + memory_region_init_alias(&s->dram0_mem, NULL, "exynos4210.dram0", + ram, 0, mem_size); memory_region_add_subregion(system_mem, EXYNOS4210_DRAM0_BASE_ADDR, - &s->dram0_mem); + &s->dram0_mem); /* PMU. * The only reason of existence at the moment is that secondary CPU boot diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c index f66d57b..964d40e 100644 --- a/hw/arm/highbank.c +++ b/hw/arm/highbank.c @@ -251,7 +251,8 @@ static void calxeda_init(QEMUMachineInitArgs *args, enum cxmachines machine) sysmem = get_system_memory(); dram = g_new(MemoryRegion, 1); - memory_region_init_ram(dram, NULL, "highbank.dram", ram_size); + memory_region_allocate_system_memory(dram, NULL, "highbank.dram", + args->ram_size); /* SDRAM at address zero. */ memory_region_add_subregion(sysmem, 0, dram); diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index a759689..5196f7b 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -485,8 +485,8 @@ static void integratorcp_init(QEMUMachineInitArgs *args) exit(1); } - memory_region_init_ram(ram, NULL, "integrator.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "integrator.ram", + ram_size); /* ??? On a real system the first 1Mb is mapped as SSRAM or boot flash. */ /* ??? RAM should repeat to fill physical memory space. */ /* SDRAM at address zero*/ diff --git a/hw/arm/kzm.c b/hw/arm/kzm.c index 99d33cb..cd5a67f 100644 --- a/hw/arm/kzm.c +++ b/hw/arm/kzm.c @@ -97,8 +97,7 @@ static void kzm_init(QEMUMachineInitArgs *args) /* On a real system, the first 16k is a `secure boot rom' */ - memory_region_init_ram(ram, NULL, "kzm.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "kzm.ram", args->ram_size); memory_region_add_subregion(address_space_mem, KZM_RAMADDRESS, ram); memory_region_init_alias(ram_alias, NULL, "ram.alias", ram, 0, ram_size); diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index de54201..7f4acef 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -1609,8 +1609,8 @@ static void musicpal_init(QEMUMachineInitArgs *args) } /* For now we use a fixed - the original - RAM size */ - memory_region_init_ram(ram, NULL, "musicpal.ram", MP_RAM_DEFAULT_SIZE); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "musicpal.ram", + MP_RAM_DEFAULT_SIZE); memory_region_add_subregion(address_space_mem, 0, ram); memory_region_init_ram(sram, NULL, "musicpal.sram", MP_SRAM_SIZE); diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index b433748..9a12f1c 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -24,6 +24,7 @@ #include "sysemu/blockdev.h" #include "qemu/range.h" #include "hw/sysbus.h" +#include "hw/boards.h" /* Should signal the TCMI/GPMC */ uint32_t omap_badwidth_read8(void *opaque, hwaddr addr) @@ -3854,8 +3855,8 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegion *system_memory, omap_clk_init(s); /* Memory-mapped stuff */ - memory_region_init_ram(&s->emiff_ram, NULL, "omap1.dram", s->sdram_size); - vmstate_register_ram_global(&s->emiff_ram); + memory_region_allocate_system_memory(&s->emiff_ram, NULL, + "omap1.dram", s->sdram_size); memory_region_add_subregion(system_memory, OMAP_EMIFF_BASE, &s->emiff_ram); memory_region_init_ram(&s->imif_ram, NULL, "omap1.sram", s->sram_size); vmstate_register_ram_global(&s->imif_ram); diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c index 36efde0..2634267 100644 --- a/hw/arm/omap2.c +++ b/hw/arm/omap2.c @@ -29,6 +29,7 @@ #include "hw/arm/soc_dma.h" #include "hw/sysbus.h" #include "audio/audio.h" +#include "hw/boards.h" /* Enhanced Audio Controller (CODEC only) */ struct omap_eac_s { @@ -2266,8 +2267,8 @@ struct omap_mpu_state_s *omap2420_mpu_init(MemoryRegion *sysmem, omap_clk_init(s); /* Memory-mapped stuff */ - memory_region_init_ram(&s->sdram, NULL, "omap2.dram", s->sdram_size); - vmstate_register_ram_global(&s->sdram); + memory_region_allocate_system_memory(&s->sdram, NULL, "omap2.dram", + s->sdram_size); memory_region_add_subregion(sysmem, OMAP2_Q2_BASE, &s->sdram); memory_region_init_ram(&s->sram, NULL, "omap2.sram", s->sram_size); vmstate_register_ram_global(&s->sram); diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c index 0429148..162cb9e 100644 --- a/hw/arm/pxa2xx.c +++ b/hw/arm/pxa2xx.c @@ -13,6 +13,7 @@ #include "hw/char/serial.h" #include "hw/i2c/i2c.h" #include "hw/ssi.h" +#include "hw/boards.h" #include "sysemu/char.h" #include "sysemu/blockdev.h" @@ -2058,8 +2059,8 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space, s->reset = qemu_allocate_irqs(pxa2xx_reset, s, 1)[0]; /* SDRAM & Internal Memory Storage */ - memory_region_init_ram(&s->sdram, NULL, "pxa270.sdram", sdram_size); - vmstate_register_ram_global(&s->sdram); + memory_region_allocate_system_memory(&s->sdram, NULL, "pxa270.sdram", + sdram_size); memory_region_add_subregion(address_space, PXA2XX_SDRAM_BASE, &s->sdram); memory_region_init_ram(&s->internal, NULL, "pxa270.internal", 0x40000); vmstate_register_ram_global(&s->internal); @@ -2189,8 +2190,8 @@ PXA2xxState *pxa255_init(MemoryRegion *address_space, unsigned int sdram_size) s->reset = qemu_allocate_irqs(pxa2xx_reset, s, 1)[0]; /* SDRAM & Internal Memory Storage */ - memory_region_init_ram(&s->sdram, NULL, "pxa255.sdram", sdram_size); - vmstate_register_ram_global(&s->sdram); + memory_region_allocate_system_memory(&s->sdram, NULL, + "pxa255.sdram", sdram_size); memory_region_add_subregion(address_space, PXA2XX_SDRAM_BASE, &s->sdram); memory_region_init_ram(&s->internal, NULL, "pxa255.internal", PXA2XX_INTERNAL_SIZE); diff --git a/hw/arm/realview.c b/hw/arm/realview.c index 7e04e50..0d87d24 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -56,6 +56,7 @@ static void realview_init(QEMUMachineInitArgs *args, MemoryRegion *ram_hi = g_new(MemoryRegion, 1); MemoryRegion *ram_alias = g_new(MemoryRegion, 1); MemoryRegion *ram_hack = g_new(MemoryRegion, 1); + MemoryRegion *ram = g_malloc0(sizeof(*ram)); DeviceState *dev, *sysctl, *gpio2, *pl041; SysBusDevice *busdev; qemu_irq pic[64]; @@ -133,17 +134,19 @@ static void realview_init(QEMUMachineInitArgs *args, proc_id = 0x02000000; } + memory_region_allocate_system_memory(ram, NULL, "realview.mem", ram_size); + if (is_pb && ram_size > 0x20000000) { /* Core tile RAM. */ low_ram_size = ram_size - 0x20000000; ram_size = 0x20000000; - memory_region_init_ram(ram_lo, NULL, "realview.lowmem", low_ram_size); - vmstate_register_ram_global(ram_lo); + memory_region_init_alias(ram_lo, NULL, "realview.lowmem", ram, + 0x20000000, low_ram_size); memory_region_add_subregion(sysmem, 0x20000000, ram_lo); } - memory_region_init_ram(ram_hi, NULL, "realview.highmem", ram_size); - vmstate_register_ram_global(ram_hi); + memory_region_init_alias(ram_hi, NULL, "realview.highmem", ram, 0, + ram_size); low_ram_size = ram_size; if (low_ram_size > 0x10000000) low_ram_size = 0x10000000; diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c index 170d0ce..93f6f9f 100644 --- a/hw/arm/strongarm.c +++ b/hw/arm/strongarm.c @@ -33,6 +33,7 @@ #include "sysemu/char.h" #include "sysemu/sysemu.h" #include "hw/ssi.h" +#include "hw/boards.h" //#define DEBUG @@ -1608,8 +1609,8 @@ StrongARMState *sa1110_init(MemoryRegion *sysmem, exit(1); } - memory_region_init_ram(&s->sdram, NULL, "strongarm.sdram", sdram_size); - vmstate_register_ram_global(&s->sdram); + memory_region_allocate_system_memory(&s->sdram, NULL, + "strongarm.sdram", sdram_size); memory_region_add_subregion(sysmem, SA_SDCS0, &s->sdram); s->pic = sysbus_create_varargs("strongarm_pic", 0x90050000, diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index e5493b4..438b3ea 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -198,8 +198,8 @@ static void versatile_init(QEMUMachineInitArgs *args, int board_id) fprintf(stderr, "Unable to find CPU definition\n"); exit(1); } - memory_region_init_ram(ram, NULL, "versatile.ram", args->ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "versatile.ram", + args->ram_size); /* ??? RAM should repeat to fill physical memory space. */ /* SDRAM at address zero. */ memory_region_add_subregion(sysmem, 0, ram); diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index 67628af..57f85d6 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -252,8 +252,8 @@ static void a9_daughterboard_init(const VEDBoardInfo *daughterboard, exit(1); } - memory_region_init_ram(ram, NULL, "vexpress.highmem", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "vexpress.highmem", + ram_size); low_ram_size = ram_size; if (low_ram_size > 0x4000000) { low_ram_size = 0x4000000; @@ -346,8 +346,8 @@ static void a15_daughterboard_init(const VEDBoardInfo *daughterboard, } } - memory_region_init_ram(ram, NULL, "vexpress.highmem", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "vexpress.highmem", + ram_size); /* RAM is from 0x80000000 upwards; there is no low-memory alias for it. */ memory_region_add_subregion(sysmem, 0x80000000, ram); diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 2bbc931..e6f254c 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -400,8 +400,8 @@ static void machvirt_init(QEMUMachineInitArgs *args) } fdt_add_cpu_nodes(vbi); - memory_region_init_ram(ram, NULL, "mach-virt.ram", args->ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "mach-virt.ram", + args->ram_size); memory_region_add_subregion(sysmem, vbi->memmap[VIRT_MEM].base, ram); dev = qdev_create(NULL, vbi->qdevname); diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index 9ee21e7..fbfadac 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -149,8 +149,8 @@ static void zynq_init(QEMUMachineInitArgs *args) } /* DDR remapped to address zero. */ - memory_region_init_ram(ext_ram, NULL, "zynq.ext_ram", ram_size); - vmstate_register_ram_global(ext_ram); + memory_region_allocate_system_memory(ext_ram, NULL, "zynq.ext_ram", + ram_size); memory_region_add_subregion(address_space_mem, 0, ext_ram); /* 256K of on-chip memory */ diff --git a/hw/block/onenand.c b/hw/block/onenand.c index aae9ee7..0d1b02d 100644 --- a/hw/block/onenand.c +++ b/hw/block/onenand.c @@ -20,6 +20,7 @@ #include "qemu-common.h" #include "hw/hw.h" +#include "hw/boards.h" #include "hw/block/flash.h" #include "hw/irq.h" #include "sysemu/blockdev.h" @@ -791,9 +792,9 @@ static int onenand_initfn(SysBusDevice *sbd) } s->otp = memset(g_malloc((64 + 2) << PAGE_SHIFT), 0xff, (64 + 2) << PAGE_SHIFT); - memory_region_init_ram(&s->ram, OBJECT(s), "onenand.ram", - 0xc000 << s->shift); - vmstate_register_ram_global(&s->ram); + memory_region_allocate_system_memory(&s->ram, OBJECT(s), + "onenand.ram", + 0xc000 << s->shift); ram = memory_region_get_ram_ptr(&s->ram); s->boot[0] = ram + (0x0000 << s->shift); s->boot[1] = ram + (0x8000 << s->shift); diff --git a/hw/cris/axis_dev88.c b/hw/cris/axis_dev88.c index 645e45c..726524a 100644 --- a/hw/cris/axis_dev88.c +++ b/hw/cris/axis_dev88.c @@ -245,7 +245,6 @@ static struct cris_load_info li; static void axisdev88_init(QEMUMachineInitArgs *args) { - ram_addr_t ram_size = args->ram_size; const char *cpu_model = args->cpu_model; const char *kernel_filename = args->kernel_filename; const char *kernel_cmdline = args->kernel_cmdline; @@ -270,7 +269,8 @@ void axisdev88_init(QEMUMachineInitArgs *args) env = &cpu->env; /* allocate RAM */ - memory_region_init_ram(phys_ram, NULL, "axisdev88.ram", ram_size); + memory_region_allocate_system_memory(phys_ram, NULL, "axisdev88.ram", + args->ram_size); vmstate_register_ram_global(phys_ram); memory_region_add_subregion(address_space_mem, 0x40000000, phys_ram); diff --git a/hw/lm32/lm32_boards.c b/hw/lm32/lm32_boards.c index 5e22e9b..425cbab 100644 --- a/hw/lm32/lm32_boards.c +++ b/hw/lm32/lm32_boards.c @@ -111,8 +111,8 @@ static void lm32_evr_init(QEMUMachineInitArgs *args) reset_info->flash_base = flash_base; - memory_region_init_ram(phys_ram, NULL, "lm32_evr.sdram", ram_size); - vmstate_register_ram_global(phys_ram); + memory_region_allocate_system_memory(phys_ram, NULL, "lm32_evr.sdram", + ram_size); memory_region_add_subregion(address_space_mem, ram_base, phys_ram); dinfo = drive_get(IF_PFLASH, 0, 0); @@ -213,8 +213,8 @@ static void lm32_uclinux_init(QEMUMachineInitArgs *args) reset_info->flash_base = flash_base; - memory_region_init_ram(phys_ram, NULL, "lm32_uclinux.sdram", ram_size); - vmstate_register_ram_global(phys_ram); + memory_region_allocate_system_memory(phys_ram, NULL, + "lm32_uclinux.sdram", ram_size); memory_region_add_subregion(address_space_mem, ram_base, phys_ram); dinfo = drive_get(IF_PFLASH, 0, 0); diff --git a/hw/lm32/milkymist.c b/hw/lm32/milkymist.c index baf234c..7d3f95b 100644 --- a/hw/lm32/milkymist.c +++ b/hw/lm32/milkymist.c @@ -118,8 +118,8 @@ milkymist_init(QEMUMachineInitArgs *args) cpu_lm32_set_phys_msb_ignore(env, 1); - memory_region_init_ram(phys_sdram, NULL, "milkymist.sdram", sdram_size); - vmstate_register_ram_global(phys_sdram); + memory_region_allocate_system_memory(phys_sdram, NULL, + "milkymist.sdram", sdram_size); memory_region_add_subregion(address_space_mem, sdram_base, phys_sdram); dinfo = drive_get(IF_PFLASH, 0, 0); diff --git a/hw/m68k/an5206.c b/hw/m68k/an5206.c index 24f2068..ec5a4f8 100644 --- a/hw/m68k/an5206.c +++ b/hw/m68k/an5206.c @@ -50,8 +50,8 @@ static void an5206_init(QEMUMachineInitArgs *args) env->rambar0 = AN5206_RAMBAR_ADDR | 1; /* DRAM at address zero */ - memory_region_init_ram(ram, NULL, "an5206.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "an5206.ram", + ram_size); memory_region_add_subregion(address_space_mem, 0, ram); /* Internal SRAM. */ diff --git a/hw/m68k/dummy_m68k.c b/hw/m68k/dummy_m68k.c index 86e2e6e..b07ffe5 100644 --- a/hw/m68k/dummy_m68k.c +++ b/hw/m68k/dummy_m68k.c @@ -40,8 +40,8 @@ static void dummy_m68k_init(QEMUMachineInitArgs *args) env->vbr = 0; /* RAM at address zero */ - memory_region_init_ram(ram, NULL, "dummy_m68k.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "dummy_m68k.ram", + ram_size); memory_region_add_subregion(address_space_mem, 0, ram); /* Load kernel. */ diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c index 6e30c0b..791337f 100644 --- a/hw/m68k/mcf5208.c +++ b/hw/m68k/mcf5208.c @@ -218,8 +218,8 @@ static void mcf5208evb_init(QEMUMachineInitArgs *args) /* TODO: Configure BARs. */ /* DRAM at 0x40000000 */ - memory_region_init_ram(ram, NULL, "mcf5208.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "mcf5208.ram", + ram_size); memory_region_add_subregion(address_space_mem, 0x40000000, ram); /* Internal SRAM. */ diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_ml605_mmu.c index 40a9f5c..ba27bbc 100644 --- a/hw/microblaze/petalogix_ml605_mmu.c +++ b/hw/microblaze/petalogix_ml605_mmu.c @@ -104,8 +104,9 @@ petalogix_ml605_init(QEMUMachineInitArgs *args) vmstate_register_ram_global(phys_lmb_bram); memory_region_add_subregion(address_space_mem, 0x00000000, phys_lmb_bram); - memory_region_init_ram(phys_ram, NULL, "petalogix_ml605.ram", ram_size); - vmstate_register_ram_global(phys_ram); + memory_region_allocate_system_memory(phys_ram, NULL, + "petalogix_ml605.ram", + ram_size); memory_region_add_subregion(address_space_mem, ddr_base, phys_ram); dinfo = drive_get(IF_PFLASH, 0, 0); diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petalogix_s3adsp1800_mmu.c index 6c45e20..bdd0908 100644 --- a/hw/microblaze/petalogix_s3adsp1800_mmu.c +++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c @@ -85,8 +85,9 @@ petalogix_s3adsp1800_init(QEMUMachineInitArgs *args) vmstate_register_ram_global(phys_lmb_bram); memory_region_add_subregion(sysmem, 0x00000000, phys_lmb_bram); - memory_region_init_ram(phys_ram, NULL, "petalogix_s3adsp1800.ram", ram_size); - vmstate_register_ram_global(phys_ram); + memory_region_allocate_system_memory(phys_ram, NULL, + "petalogix_s3adsp1800.ram", + ram_size); memory_region_add_subregion(sysmem, ddr_base, phys_ram); dinfo = drive_get(IF_PFLASH, 0, 0); diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c index e1551aa..cab3366 100644 --- a/hw/mips/mips_fulong2e.c +++ b/hw/mips/mips_fulong2e.c @@ -302,8 +302,8 @@ static void mips_fulong2e_init(QEMUMachineInitArgs *args) bios_size = 1024 * 1024; /* allocate RAM */ - memory_region_init_ram(ram, NULL, "fulong2e.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, + "fulong2e.ram", ram_size); memory_region_init_ram(bios, NULL, "fulong2e.bios", bios_size); vmstate_register_ram_global(bios); memory_region_set_readonly(bios, true); diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c index 5f6dd9f..7504d6c 100644 --- a/hw/mips/mips_jazz.c +++ b/hw/mips/mips_jazz.c @@ -179,8 +179,8 @@ static void mips_jazz_init(MemoryRegion *address_space, cc->do_unassigned_access = mips_jazz_do_unassigned_access; /* allocate RAM */ - memory_region_init_ram(ram, NULL, "mips_jazz.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "mips_jazz.ram", + ram_size); memory_region_add_subregion(address_space, 0, ram); memory_region_init_ram(bios, NULL, "mips_jazz.bios", MAGNUM_BIOS_SIZE); diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c index ac5ec44..2d477f2 100644 --- a/hw/mips/mips_malta.c +++ b/hw/mips/mips_malta.c @@ -962,8 +962,8 @@ void mips_malta_init(QEMUMachineInitArgs *args) } /* register RAM at high address where it is undisturbed by IO */ - memory_region_init_ram(ram_high, NULL, "mips_malta.ram", ram_size); - vmstate_register_ram_global(ram_high); + memory_region_allocate_system_memory(ram_high, NULL, + "mips_malta.ram", ram_size); memory_region_add_subregion(system_memory, 0x80000000, ram_high); /* alias for pre IO hole access */ diff --git a/hw/mips/mips_mipssim.c b/hw/mips/mips_mipssim.c index 239aa6a..e5672c7 100644 --- a/hw/mips/mips_mipssim.c +++ b/hw/mips/mips_mipssim.c @@ -171,8 +171,8 @@ mips_mipssim_init(QEMUMachineInitArgs *args) qemu_register_reset(main_cpu_reset, reset_info); /* Allocate RAM. */ - memory_region_init_ram(ram, NULL, "mips_mipssim.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, + "mips_mipssim.ram", ram_size); memory_region_init_ram(bios, NULL, "mips_mipssim.bios", BIOS_SIZE); vmstate_register_ram_global(bios); memory_region_set_readonly(bios, true); diff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c index e94b543..429079c 100644 --- a/hw/mips/mips_r4k.c +++ b/hw/mips/mips_r4k.c @@ -204,8 +204,8 @@ void mips_r4k_init(QEMUMachineInitArgs *args) ((unsigned int)ram_size / (1 << 20))); exit(1); } - memory_region_init_ram(ram, NULL, "mips_r4k.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, + "mips_r4k.ram", ram_size); memory_region_add_subregion(address_space_mem, 0, ram); diff --git a/hw/moxie/moxiesim.c b/hw/moxie/moxiesim.c index a87ca6d..e79af2f 100644 --- a/hw/moxie/moxiesim.c +++ b/hw/moxie/moxiesim.c @@ -136,8 +136,8 @@ static void moxiesim_init(QEMUMachineInitArgs *args) qemu_register_reset(main_cpu_reset, cpu); /* Allocate RAM. */ - memory_region_init_ram(ram, NULL, "moxiesim.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "moxiesim.ram", + ram_size); memory_region_add_subregion(address_space_mem, ram_base, ram); memory_region_init_ram(rom, NULL, "moxie.rom", 128*0x1000); diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c index 8e1af8b..f1f34cd 100644 --- a/hw/openrisc/openrisc_sim.c +++ b/hw/openrisc/openrisc_sim.c @@ -114,7 +114,8 @@ static void openrisc_sim_init(QEMUMachineInitArgs *args) } ram = g_malloc(sizeof(*ram)); - memory_region_init_ram(ram, NULL, "openrisc.ram", ram_size); + memory_region_allocate_system_memory(ram, NULL, "openrisc.ram", + args->ram_size); vmstate_register_ram_global(ram); memory_region_add_subregion(get_system_memory(), 0, ram); diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index d7ba25f..c02ca11 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -675,8 +675,8 @@ void ppce500_init(QEMUMachineInitArgs *args, PPCE500Params *params) args->ram_size = ram_size; /* Register Memory */ - memory_region_init_ram(ram, NULL, "mpc8544ds.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "mpc8544ds.ram", + args->ram_size); memory_region_add_subregion(address_space_mem, 0, ram); dev = qdev_create(NULL, "e500-ccsr"); diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index 5e79575..6f631b8 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -198,8 +198,8 @@ static void ppc_core99_init(QEMUMachineInitArgs *args) } /* allocate RAM */ - memory_region_init_ram(ram, NULL, "ppc_core99.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "ppc_core99.ram", + args->ram_size); memory_region_add_subregion(get_system_memory(), 0, ram); /* allocate and load BIOS */ diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index 2f27754..d410f5e 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -128,8 +128,8 @@ static void ppc_heathrow_init(QEMUMachineInitArgs *args) exit(1); } - memory_region_init_ram(ram, NULL, "ppc_heathrow.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "ppc_heathrow.ram", + args->ram_size); memory_region_add_subregion(sysmem, 0, ram); /* allocate and load BIOS */ diff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c index f1a8f67..44a78b8 100644 --- a/hw/ppc/ppc405_boards.c +++ b/hw/ppc/ppc405_boards.c @@ -199,14 +199,14 @@ static void ref405ep_init(QEMUMachineInitArgs *args) MemoryRegion *sysmem = get_system_memory(); /* XXX: fix this */ - memory_region_init_ram(&ram_memories[0], NULL, "ef405ep.ram", 0x08000000); - vmstate_register_ram_global(&ram_memories[0]); + ram_size = 0x08000000; + memory_region_allocate_system_memory(&ram_memories[0], NULL, + "ef405ep.ram", ram_size); ram_bases[0] = 0; ram_sizes[0] = 0x08000000; memory_region_init(&ram_memories[1], NULL, "ef405ep.ram1", 0); ram_bases[1] = 0x00000000; ram_sizes[1] = 0x00000000; - ram_size = 128 * 1024 * 1024; #ifdef DEBUG_BOARD_INIT printf("%s: register cpu\n", __func__); #endif @@ -509,6 +509,7 @@ static void taihu_405ep_init(QEMUMachineInitArgs *args) MemoryRegion *sysmem = get_system_memory(); MemoryRegion *bios; MemoryRegion *ram_memories = g_malloc(2 * sizeof(*ram_memories)); + MemoryRegion *ram = g_malloc0(sizeof(*ram)); hwaddr ram_bases[2], ram_sizes[2]; long bios_size; target_ulong kernel_base, initrd_base; @@ -518,17 +519,18 @@ static void taihu_405ep_init(QEMUMachineInitArgs *args) DriveInfo *dinfo; /* RAM is soldered to the board so the size cannot be changed */ - memory_region_init_ram(&ram_memories[0], NULL, - "taihu_405ep.ram-0", 0x04000000); - vmstate_register_ram_global(&ram_memories[0]); + ram_size = 0x08000000; + memory_region_allocate_system_memory(ram, NULL, "taihu_405ep.ram", + ram_size); + + memory_region_init_alias(&ram_memories[0], NULL, + "taihu_405ep.ram-0", ram, 0, 0x04000000); ram_bases[0] = 0; ram_sizes[0] = 0x04000000; - memory_region_init_ram(&ram_memories[1], NULL, - "taihu_405ep.ram-1", 0x04000000); - vmstate_register_ram_global(&ram_memories[1]); + memory_region_init_alias(&ram_memories[1], NULL, + "taihu_405ep.ram-1", ram, 0, 0x04000000); ram_bases[1] = 0x04000000; ram_sizes[1] = 0x04000000; - ram_size = 0x08000000; #ifdef DEBUG_BOARD_INIT printf("%s: register cpu\n", __func__); #endif diff --git a/hw/ppc/ppc4xx_devs.c b/hw/ppc/ppc4xx_devs.c index 9160ee7..bf90ce7 100644 --- a/hw/ppc/ppc4xx_devs.c +++ b/hw/ppc/ppc4xx_devs.c @@ -22,6 +22,7 @@ * THE SOFTWARE. */ #include "hw/hw.h" +#include "hw/boards.h" #include "hw/ppc/ppc.h" #include "hw/ppc/ppc4xx.h" #include "qemu/log.h" @@ -682,20 +683,46 @@ ram_addr_t ppc4xx_sdram_adjust(ram_addr_t ram_size, int nr_banks, hwaddr ram_sizes[], const unsigned int sdram_bank_sizes[]) { + MemoryRegion *ram = g_malloc0(sizeof(*ram)); ram_addr_t size_left = ram_size; ram_addr_t base = 0; + unsigned int bank_size; int i; int j; for (i = 0; i < nr_banks; i++) { for (j = 0; sdram_bank_sizes[j] != 0; j++) { - unsigned int bank_size = sdram_bank_sizes[j]; + bank_size = sdram_bank_sizes[j]; + if (bank_size <= size_left) { + size_left -= bank_size; + } + } + if (!size_left) { + /* No need to use the remaining banks. */ + break; + } + } + + ram_size -= size_left; + if (size_left) { + printf("Truncating memory to %d MiB to fit SDRAM controller limits.\n", + (int)(ram_size >> 20)); + } + + memory_region_allocate_system_memory(ram, NULL, "ppc4xx.sdram", ram_size); + vmstate_register_ram_global(ram); + + size_left = ram_size; + + for (i = 0; i < nr_banks; i++) { + for (j = 0; sdram_bank_sizes[j] != 0; j++) { + bank_size = sdram_bank_sizes[j]; if (bank_size <= size_left) { char name[32]; snprintf(name, sizeof(name), "ppc4xx.sdram%d", i); - memory_region_init_ram(&ram_memories[i], NULL, name, bank_size); - vmstate_register_ram_global(&ram_memories[i]); + memory_region_init_alias(&ram_memories[i], NULL, name, ram, + base, bank_size); ram_bases[i] = base; ram_sizes[i] = bank_size; base += bank_size; @@ -710,10 +737,5 @@ ram_addr_t ppc4xx_sdram_adjust(ram_addr_t ram_size, int nr_banks, } } - ram_size -= size_left; - if (size_left) - printf("Truncating memory to %d MiB to fit SDRAM controller limits.\n", - (int)(ram_size >> 20)); - return ram_size; } diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index e243651..097bdd5 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -420,8 +420,7 @@ static void ppc_prep_init(QEMUMachineInitArgs *args) } /* allocate RAM */ - memory_region_init_ram(ram, NULL, "ppc_prep.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "ppc_prep.ram", ram_size); memory_region_add_subregion(sysmem, 0, ram); if (linux_boot) { diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 89f71a8..715a2bb 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1264,8 +1264,8 @@ static void ppc_spapr_init(QEMUMachineInitArgs *args) ram_addr_t nonrma_base = rma_alloc_size; ram_addr_t nonrma_size = spapr->ram_limit - rma_alloc_size; - memory_region_init_ram(ram, NULL, "ppc_spapr.ram", nonrma_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "ppc_spapr.ram", + nonrma_size); memory_region_add_subregion(sysmem, nonrma_base, ram); } diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c index ce8ea91..f4a8e6a 100644 --- a/hw/ppc/virtex_ml507.c +++ b/hw/ppc/virtex_ml507.c @@ -222,8 +222,7 @@ static void virtex_init(QEMUMachineInitArgs *args) env = &cpu->env; qemu_register_reset(main_cpu_reset, cpu); - memory_region_init_ram(phys_ram, NULL, "ram", ram_size); - vmstate_register_ram_global(phys_ram); + memory_region_allocate_system_memory(phys_ram, NULL, "ram", ram_size); memory_region_add_subregion(address_space_mem, ram_base, phys_ram); dinfo = drive_get(IF_PFLASH, 0, 0); diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 0d4f6ae..e54055f 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -110,8 +110,8 @@ static void ccw_init(QEMUMachineInitArgs *args) virtio_ccw_register_hcalls(); /* allocate RAM */ - memory_region_init_ram(ram, NULL, "s390.ram", my_ram_size); - vmstate_register_ram_global(ram); + /*XXX*/ + memory_region_allocate_system_memory(ram, NULL, "s390.ram", args->ram_size); memory_region_add_subregion(sysmem, 0, ram); /* allocate storage keys */ diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c index aef2003..0970f6e 100644 --- a/hw/s390x/s390-virtio.c +++ b/hw/s390x/s390-virtio.c @@ -256,8 +256,8 @@ static void s390_init(QEMUMachineInitArgs *args) s390_virtio_register_hcalls(); /* allocate RAM */ - memory_region_init_ram(ram, NULL, "s390.ram", my_ram_size); - vmstate_register_ram_global(ram); + /*XXX*/ + memory_region_allocate_system_memory(ram, NULL, "s390.ram", args->ram_size); memory_region_add_subregion(sysmem, 0, ram); /* clear virtio region */ diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index eaeb7ed..d670f3b 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -255,8 +255,8 @@ static void r2d_init(QEMUMachineInitArgs *args) qemu_register_reset(main_cpu_reset, reset_info); /* Allocate memory space */ - memory_region_init_ram(sdram, NULL, "r2d.sdram", SDRAM_SIZE); - vmstate_register_ram_global(sdram); + memory_region_allocate_system_memory(sdram, NULL, "r2d.sdram", + SDRAM_SIZE); memory_region_add_subregion(address_space_mem, SDRAM_BASE, sdram); /* Register peripherals */ s = sh7750_init(cpu, address_space_mem); diff --git a/hw/sh4/shix.c b/hw/sh4/shix.c index 904a966..bb23b69 100644 --- a/hw/sh4/shix.c +++ b/hw/sh4/shix.c @@ -48,6 +48,7 @@ static void shix_init(QEMUMachineInitArgs *args) MemoryRegion *sysmem = get_system_memory(); MemoryRegion *rom = g_new(MemoryRegion, 1); MemoryRegion *sdram = g_new(MemoryRegion, 2); + MemoryRegion *ram = g_malloc0(sizeof(*ram)); if (!cpu_model) cpu_model = "any"; @@ -63,11 +64,14 @@ static void shix_init(QEMUMachineInitArgs *args) vmstate_register_ram_global(rom); memory_region_set_readonly(rom, true); memory_region_add_subregion(sysmem, 0x00000000, rom); - memory_region_init_ram(&sdram[0], NULL, "shix.sdram1", 0x01000000); - vmstate_register_ram_global(&sdram[0]); + + memory_region_allocate_system_memory(ram, NULL, "shix.sdram", + 0x02000000); + memory_region_init_alias(&sdram[0], NULL, "shix.sdram1", ram, + 0, 0x01000000); memory_region_add_subregion(sysmem, 0x08000000, &sdram[0]); - memory_region_init_ram(&sdram[1], NULL, "shix.sdram2", 0x01000000); - vmstate_register_ram_global(&sdram[1]); + memory_region_init_alias(&sdram[1], NULL, "shix.sdram2", ram, + 0x01000000, 0x01000000); memory_region_add_subregion(sysmem, 0x0c000000, &sdram[1]); /* Load BIOS in 0 (and access it through P2, 0xA0000000) */ diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c index c16e9e4..8c71cd3 100644 --- a/hw/sparc/leon3.c +++ b/hw/sparc/leon3.c @@ -151,8 +151,7 @@ static void leon3_generic_hw_init(QEMUMachineInitArgs *args) exit(1); } - memory_region_init_ram(ram, NULL, "leon3.ram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "leon3.ram", ram_size); memory_region_add_subregion(address_space_mem, 0x40000000, ram); /* Allocate BIOS */ diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 75adb68..3bc5c2f 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -784,8 +784,8 @@ static int ram_init1(SysBusDevice *dev) { RamDevice *d = SUN4M_RAM(dev); - memory_region_init_ram(&d->ram, OBJECT(d), "sun4m.ram", d->size); - vmstate_register_ram_global(&d->ram); + memory_region_allocate_system_memory(&d->ram, OBJECT(d), + "sun4m.ram", d->size); sysbus_init_mmio(dev, &d->ram); return 0; } diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index 6f271d9..fe4c1c8 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -729,8 +729,8 @@ static int ram_init1(SysBusDevice *dev) { RamDevice *d = SUN4U_RAM(dev); - memory_region_init_ram(&d->ram, OBJECT(d), "sun4u.ram", d->size); - vmstate_register_ram_global(&d->ram); + memory_region_allocate_system_memory(&d->ram, OBJECT(d), + "sun4u.ram", d->size); sysbus_init_mmio(dev, &d->ram); return 0; } diff --git a/hw/unicore32/puv3.c b/hw/unicore32/puv3.c index 42913b6..b1f0834 100644 --- a/hw/unicore32/puv3.c +++ b/hw/unicore32/puv3.c @@ -74,8 +74,8 @@ static void puv3_board_init(CPUUniCore32State *env, ram_addr_t ram_size) MemoryRegion *ram_memory = g_new(MemoryRegion, 1); /* SDRAM at address zero. */ - memory_region_init_ram(ram_memory, NULL, "puv3.ram", ram_size); - vmstate_register_ram_global(ram_memory); + memory_region_allocate_system_memory(ram_memory, NULL, "puv3.ram", + ram_size); memory_region_add_subregion(get_system_memory(), 0, ram_memory); } diff --git a/hw/xtensa/xtensa_lx60.c b/hw/xtensa/xtensa_lx60.c index 49c58d1..96b8f85 100644 --- a/hw/xtensa/xtensa_lx60.c +++ b/hw/xtensa/xtensa_lx60.c @@ -198,8 +198,8 @@ static void lx_init(const LxBoardDesc *board, QEMUMachineInitArgs *args) } ram = g_malloc(sizeof(*ram)); - memory_region_init_ram(ram, NULL, "lx60.dram", args->ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, + "lx60.dram", args->ram_size); memory_region_add_subregion(system_memory, 0, ram); system_io = g_malloc(sizeof(*system_io)); diff --git a/hw/xtensa/xtensa_sim.c b/hw/xtensa/xtensa_sim.c index 1192ce7..e2b3834 100644 --- a/hw/xtensa/xtensa_sim.c +++ b/hw/xtensa/xtensa_sim.c @@ -77,8 +77,8 @@ static void xtensa_sim_init(QEMUMachineInitArgs *args) } ram = g_malloc(sizeof(*ram)); - memory_region_init_ram(ram, NULL, "xtensa.sram", ram_size); - vmstate_register_ram_global(ram); + memory_region_allocate_system_memory(ram, NULL, "xtensa.sram", + ram_size); memory_region_add_subregion(get_system_memory(), 0, ram); rom = g_malloc(sizeof(*rom));