@@ -31,10 +31,14 @@ struct TTAtlantisState {
MemoryRegion *memory;
MemoryRegion *dram;
+ MemoryRegion ram_hi;
+ MemoryRegion ram_lo;
+
RISCVHartArrayState cpus;
DeviceState *irqchip;
DesignWareI2CState i2c[TT_ATL_NUM_I2C];
UnimplementedDeviceState uart1;
+ MemoryRegion bootrom;
};
enum {
@@ -484,9 +484,6 @@ static void tt_atlantis_machine_init(MachineState *machine)
{
TTAtlantisState *s = TT_ATLANTIS_MACHINE(machine);
- MemoryRegion *ram_hi = g_new(MemoryRegion, 1);
- MemoryRegion *ram_lo = g_new(MemoryRegion, 1);
- MemoryRegion *bootrom = g_new(MemoryRegion, 1);
ram_addr_t lo_ram_size, ram_size;
int hart_count = machine->smp.cpus;
@@ -544,22 +541,22 @@ static void tt_atlantis_machine_init(MachineState *machine)
exit(EXIT_FAILURE);
}
- memory_region_init_alias(ram_hi, OBJECT(machine), "ram.high", s->dram,
+ memory_region_init_alias(&s->ram_hi, OBJECT(machine), "ram.high", s->dram,
0, ram_size);
memory_region_add_subregion(s->memory,
- s->memmap[TT_ATL_DDR_HI].base, ram_hi);
+ s->memmap[TT_ATL_DDR_HI].base, &s->ram_hi);
lo_ram_size = MIN(ram_size, s->memmap[TT_ATL_DDR_LO].size);
- memory_region_init_alias(ram_lo, OBJECT(machine), "ram.low", s->dram,
+ memory_region_init_alias(&s->ram_lo, OBJECT(machine), "ram.low", s->dram,
0, lo_ram_size);
memory_region_add_subregion(s->memory,
- s->memmap[TT_ATL_DDR_LO].base, ram_lo);
+ s->memmap[TT_ATL_DDR_LO].base, &s->ram_lo);
/* Boot ROM */
- memory_region_init_rom(bootrom, NULL, "tt-atlantis.bootrom",
+ memory_region_init_rom(&s->bootrom, NULL, "tt-atlantis.bootrom",
s->memmap[TT_ATL_BOOTROM].size, &error_fatal);
memory_region_add_subregion(s->memory, s->memmap[TT_ATL_BOOTROM].base,
- bootrom);
+ &s->bootrom);
/* UART1, the soc console (UART0 is for the boot microcontroller) */
serial_mm_init(s->memory, s->memmap[TT_ATL_UART1].base, 2,