diff options
Diffstat (limited to 'hw/armv7m.c')
-rw-r--r-- | hw/armv7m.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/hw/armv7m.c b/hw/armv7m.c index 71bbd95775..20e58f50f1 100644 --- a/hw/armv7m.c +++ b/hw/armv7m.c @@ -170,16 +170,17 @@ qemu_irq *armv7m_init(int flash_size, int sram_size, #endif /* Flash programming is done via the SCU, so pretend it is ROM. */ - cpu_register_physical_memory(0, flash_size, IO_MEM_ROM); + cpu_register_physical_memory(0, flash_size, + qemu_ram_alloc(flash_size) | IO_MEM_ROM); cpu_register_physical_memory(0x20000000, sram_size, - flash_size + IO_MEM_RAM); + qemu_ram_alloc(sram_size) | IO_MEM_RAM); armv7m_bitband_init(); pic = armv7m_nvic_init(env); image_size = load_elf(kernel_filename, 0, &entry, &lowaddr, NULL); if (image_size < 0) { - image_size = load_image(kernel_filename, phys_ram_base); + image_size = load_image_targphys(kernel_filename, 0, flash_size); lowaddr = 0; } if (image_size < 0) { @@ -203,7 +204,8 @@ qemu_irq *armv7m_init(int flash_size, int sram_size, /* Hack to map an additional page of ram at the top of the address space. This stops qemu complaining about executing code outside RAM when returning from an exception. */ - cpu_register_physical_memory(0xfffff000, 0x1000, IO_MEM_RAM + ram_size); + cpu_register_physical_memory(0xfffff000, 0x1000, + qemu_ram_alloc(0x1000) | IO_MEM_RAM); return pic; } |