summaryrefslogtreecommitdiffstats
path: root/hw/arm/stellaris.c
diff options
context:
space:
mode:
authorAlistair Francis2015-02-05 14:37:21 +0100
committerPeter Maydell2015-02-05 14:37:21 +0100
commitfe6ac447add80978c1bf988c3ef4a7ce8aab2fa0 (patch)
treee6fc125a5890099157226aefbd41a89fe8314fc5 /hw/arm/stellaris.c
parentMerge remote-tracking branch 'remotes/armbru/tags/pull-error-2015-02-05' into... (diff)
downloadqemu-fe6ac447add80978c1bf988c3ef4a7ce8aab2fa0.tar.gz
qemu-fe6ac447add80978c1bf988c3ef4a7ce8aab2fa0.tar.xz
qemu-fe6ac447add80978c1bf988c3ef4a7ce8aab2fa0.zip
target_arm: Remove memory region init from armv7m_init
This patch moves the memory region init code from the armv7m_init function to the stellaris_init function Signed-off-by: Alistair Francis <alistair23@gmail.com> Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Message-id: 4836be7e1d708554d6eb0bc639dc2fbf7dac0458.1422077994.git.alistair23@gmail.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/arm/stellaris.c')
-rw-r--r--hw/arm/stellaris.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index ccc3b189c3..8e9c30b786 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -1220,10 +1220,26 @@ static void stellaris_init(const char *kernel_filename, const char *cpu_model,
int i;
int j;
- flash_size = ((board->dc0 & 0xffff) + 1) << 1;
- sram_size = (board->dc0 >> 18) + 1;
- pic = armv7m_init(get_system_memory(),
- flash_size, sram_size, kernel_filename, cpu_model);
+ MemoryRegion *sram = g_new(MemoryRegion, 1);
+ MemoryRegion *flash = g_new(MemoryRegion, 1);
+ MemoryRegion *system_memory = get_system_memory();
+
+ flash_size = (((board->dc0 & 0xffff) + 1) << 1) * 1024;
+ sram_size = ((board->dc0 >> 18) + 1) * 1024;
+
+ /* Flash programming is done via the SCU, so pretend it is ROM. */
+ memory_region_init_ram(flash, NULL, "stellaris.flash", flash_size,
+ &error_abort);
+ vmstate_register_ram_global(flash);
+ memory_region_set_readonly(flash, true);
+ memory_region_add_subregion(system_memory, 0, flash);
+
+ memory_region_init_ram(sram, NULL, "stellaris.sram", sram_size,
+ &error_abort);
+ vmstate_register_ram_global(sram);
+ memory_region_add_subregion(system_memory, 0x20000000, sram);
+
+ pic = armv7m_init(system_memory, flash_size, kernel_filename, cpu_model);
if (board->dc1 & (1 << 16)) {
dev = sysbus_create_varargs(TYPE_STELLARIS_ADC, 0x40038000,