381
381
PCIHostState *h = PCI_HOST_BRIDGE(obj);
382
382
PCIVPBState *s = PCI_VPB(obj);
384
memory_region_init(&s->pci_io_space, "pci_io", 1ULL << 32);
385
memory_region_init(&s->pci_mem_space, "pci_mem", 1ULL << 32);
384
memory_region_init(&s->pci_io_space, OBJECT(s), "pci_io", 1ULL << 32);
385
memory_region_init(&s->pci_mem_space, OBJECT(s), "pci_mem", 1ULL << 32);
387
387
pci_bus_new_inplace(&s->pci_bus, DEVICE(obj), "pci",
388
388
&s->pci_mem_space, &s->pci_io_space,
424
424
* 3 : PCI IO window
425
425
* 4..6 : PCI memory windows
427
memory_region_init_io(&s->controlregs, &pci_vpb_reg_ops, s, "pci-vpb-regs",
427
memory_region_init_io(&s->controlregs, OBJECT(s), &pci_vpb_reg_ops, s,
428
"pci-vpb-regs", 0x1000);
429
429
sysbus_init_mmio(sbd, &s->controlregs);
430
memory_region_init_io(&s->mem_config, &pci_vpb_config_ops, s,
430
memory_region_init_io(&s->mem_config, OBJECT(s), &pci_vpb_config_ops, s,
431
431
"pci-vpb-selfconfig", 0x1000000);
432
432
sysbus_init_mmio(sbd, &s->mem_config);
433
memory_region_init_io(&s->mem_config2, &pci_vpb_config_ops, s,
433
memory_region_init_io(&s->mem_config2, OBJECT(s), &pci_vpb_config_ops, s,
434
434
"pci-vpb-config", 0x1000000);
435
435
sysbus_init_mmio(sbd, &s->mem_config2);
437
437
/* The window into I/O space is always into a fixed base address;
438
438
* its size is the same for both realview and versatile.
440
memory_region_init_alias(&s->pci_io_window, "pci-vbp-io-window",
440
memory_region_init_alias(&s->pci_io_window, OBJECT(s), "pci-vbp-io-window",
441
441
&s->pci_io_space, 0, 0x100000);
443
443
sysbus_init_mmio(sbd, &s->pci_io_space);
447
447
* offsets are guest controllable via the IMAP registers.
449
449
for (i = 0; i < 3; i++) {
450
memory_region_init_alias(&s->pci_mem_window[i], "pci-vbp-window",
450
memory_region_init_alias(&s->pci_mem_window[i], OBJECT(s), "pci-vbp-window",
451
451
&s->pci_mem_space, 0, s->mem_win_size[i]);
452
452
sysbus_init_mmio(sbd, &s->pci_mem_window[i]);