@@ -49,6 +49,7 @@ static const int spi_irq[STM_NUM_SPIS] = {35, 36, 51};
static void stm32f205_soc_initfn(Object *obj)
{
STM32F205State *s = STM32F205_SOC(obj);
+ MemoryRegion *system_memory = get_system_memory();
int i;
sysbus_init_child_obj(obj, "armv7m", &s->armv7m, sizeof(s->armv7m),
@@ -78,6 +79,14 @@ static void stm32f205_soc_initfn(Object *obj)
sysbus_init_child_obj(obj, "spi[*]", &s->spi[i], sizeof(s->spi[i]),
TYPE_STM32F2XX_SPI);
}
+
+ memory_region_init_ram(&s->sram, NULL, "STM32F205.sram", SRAM_SIZE,
+ &error_fatal);
+ memory_region_add_subregion(system_memory, SRAM_BASE_ADDRESS, &s->sram);
+
+ memory_region_init_rom(&s->flash, obj, "STM32F205.flash",
+ FLASH_SIZE, &error_fatal);
+ memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, &s->flash);
}
static void stm32f205_soc_realize(DeviceState *dev_soc, Error **errp)
@@ -87,19 +96,10 @@ static void stm32f205_soc_realize(DeviceState *dev_soc, Error **errp)
SysBusDevice *busdev;
Error *err = NULL;
int i;
- MemoryRegion *system_memory = get_system_memory();
- memory_region_init_rom(&s->flash, OBJECT(dev_soc), "STM32F205.flash",
- FLASH_SIZE, &error_fatal);
memory_region_init_alias(&s->flash_alias, OBJECT(dev_soc),
"STM32F205.flash.alias", &s->flash, 0, FLASH_SIZE);
-
- memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, &s->flash);
- memory_region_add_subregion(system_memory, 0, &s->flash_alias);
-
- memory_region_init_ram(&s->sram, NULL, "STM32F205.sram", SRAM_SIZE,
- &error_fatal);
- memory_region_add_subregion(system_memory, SRAM_BASE_ADDRESS, &s->sram);
+ memory_region_add_subregion(get_system_memory(), 0, &s->flash_alias);
armv7m = DEVICE(&s->armv7m);
qdev_prop_set_uint32(armv7m, "num-irq", 96);