On Thu, Dec 19, 2013 at 5:10 PM, Edgar E. Iglesias <edgar.igles...@gmail.com> wrote: > On Thu, Dec 19, 2013 at 04:37:22PM +1000, Peter Crosthwaite wrote: >> On Thu, Dec 19, 2013 at 3:51 PM, <edgar.igles...@gmail.com> wrote: >> > From: "Edgar E. Iglesias" <edgar.igles...@xilinx.com> >> > >> > Signed-off-by: Edgar E. Iglesias <edgar.igles...@xilinx.com> >> > --- >> > hw/microblaze/petalogix_ml605_mmu.c | 17 ++++++++++++++++- >> > 1 file changed, 16 insertions(+), 1 deletion(-) >> > >> > diff --git a/hw/microblaze/petalogix_ml605_mmu.c >> > b/hw/microblaze/petalogix_ml605_mmu.c >> > index 4009ff5..0a13b0e 100644 >> > --- a/hw/microblaze/petalogix_ml605_mmu.c >> > +++ b/hw/microblaze/petalogix_ml605_mmu.c >> > @@ -88,10 +88,18 @@ petalogix_ml605_init(QEMUMachineInitArgs *args) >> > hwaddr ddr_base = MEMORY_BASEADDR; >> > MemoryRegion *phys_lmb_bram = g_new(MemoryRegion, 1); >> > MemoryRegion *phys_ram = g_new(MemoryRegion, 1); >> > + MemoryRegion *sysmem_alias = g_new(MemoryRegion, 1); >> > + MemoryRegion *mr_cpu_root = g_new(MemoryRegion, 1); >> > + AddressSpace *as_cpu = g_malloc0(sizeof(*as_cpu)); >> > qemu_irq irq[32], *cpu_irq; >> > >> > + /* Setup the CPU specific address-space. */ >> > + memory_region_init(mr_cpu_root, NULL, "as-cpu-root", INT64_MAX); >> > + address_space_init(as_cpu, mr_cpu_root, "as/cpu"); >> > + >> > /* init CPUs */ >> > cpu = MICROBLAZE_CPU(object_new(TYPE_MICROBLAZE_CPU)); >> > + qdev_prop_set_address_space(DEVICE(cpu), "address-space", as_cpu); >> > object_property_set_bool(OBJECT(cpu), true, "realized", &err); >> > if (err) { >> > error_report("%s", error_get_pretty(err)); >> > @@ -100,11 +108,18 @@ petalogix_ml605_init(QEMUMachineInitArgs *args) >> > >> > env = &cpu->env; >> > >> > + /* Populate the CPU AS with the LMB only visible to the CPU. */ >> > + memory_region_init_alias(sysmem_alias, NULL, "sysmem_alias", >> > + address_space_mem, 0, >> > + memory_region_size(address_space_mem)); >> >> Can we patch sysbus MMIO APIs to accept an AS to remove the machine's >> reliance on the global address_space_mem completely? > > Yes good point, thats part of the future work that needs to be done. I've > split > the stuff into multiple rounds as the patch series will be easily become > unmanageable with stuff that touches big parts of the tree. >
Playing with this too see where it goes. Patches tmrw hopefully. Regards, Peter > Thanks, > Edgar > > >> >> Regards, >> Peter >> >> > + memory_region_add_subregion(mr_cpu_root, 0x00000000, sysmem_alias); >> > + >> > /* Attach emulated BRAM through the LMB. */ >> > memory_region_init_ram(phys_lmb_bram, NULL, >> > "petalogix_ml605.lmb_bram", >> > LMB_BRAM_SIZE); >> > vmstate_register_ram_global(phys_lmb_bram); >> > - memory_region_add_subregion(address_space_mem, 0x00000000, >> > phys_lmb_bram); >> > + memory_region_add_subregion_overlap(mr_cpu_root, 0x00000000, >> > + phys_lmb_bram, 2); >> > >> > memory_region_init_ram(phys_ram, NULL, "petalogix_ml605.ram", >> > ram_size); >> > vmstate_register_ram_global(phys_ram); >> > -- >> > 1.7.10.4 >> > >> > >