Revision d2c33733 hw/ppce500_pci.c
b/hw/ppce500_pci.c | ||
---|---|---|
79 | 79 |
uint32_t gasket_time; |
80 | 80 |
qemu_irq irq[4]; |
81 | 81 |
/* mmio maps */ |
82 |
int cfgaddr; |
|
83 |
int cfgdata; |
|
84 | 82 |
int reg; |
85 | 83 |
}; |
86 | 84 |
|
... | ... | |
268 | 266 |
PCIHostState *h = FROM_SYSBUS(PCIHostState, sysbus_from_qdev(dev)); |
269 | 267 |
PPCE500PCIState *s = DO_UPCAST(PPCE500PCIState, pci_state, h); |
270 | 268 |
|
271 |
cpu_register_physical_memory(base + PCIE500_CFGADDR, 4, s->cfgaddr);
|
|
272 |
cpu_register_physical_memory(base + PCIE500_CFGDATA, 4, s->cfgdata);
|
|
269 |
sysbus_add_memory(dev, base + PCIE500_CFGADDR, &h->conf_mem);
|
|
270 |
sysbus_add_memory(dev, base + PCIE500_CFGDATA, &h->data_mem);
|
|
273 | 271 |
cpu_register_physical_memory(base + PCIE500_REG_BASE, PCIE500_REG_SIZE, |
274 | 272 |
s->reg); |
275 | 273 |
} |
276 | 274 |
|
277 | 275 |
static void e500_pci_unmap(SysBusDevice *dev, target_phys_addr_t base) |
278 | 276 |
{ |
279 |
cpu_register_physical_memory(base + PCIE500_CFGADDR, 4,
|
|
280 |
IO_MEM_UNASSIGNED); |
|
281 |
cpu_register_physical_memory(base + PCIE500_CFGDATA, 4,
|
|
282 |
IO_MEM_UNASSIGNED);
|
|
277 |
PCIHostState *h = FROM_SYSBUS(PCIHostState, sysbus_from_qdev(dev));
|
|
278 |
|
|
279 |
sysbus_del_memory(dev, &h->conf_mem);
|
|
280 |
sysbus_del_memory(dev, &h->data_mem);
|
|
283 | 281 |
cpu_register_physical_memory(base + PCIE500_REG_BASE, PCIE500_REG_SIZE, |
284 | 282 |
IO_MEM_UNASSIGNED); |
285 | 283 |
} |
... | ... | |
309 | 307 |
|
310 | 308 |
pci_create_simple(b, 0, "e500-host-bridge"); |
311 | 309 |
|
312 |
s->cfgaddr = pci_host_conf_register_mmio(&s->pci_state, DEVICE_BIG_ENDIAN); |
|
313 |
s->cfgdata = pci_host_data_register_mmio(&s->pci_state, |
|
314 |
DEVICE_LITTLE_ENDIAN); |
|
310 |
memory_region_init_io(&h->conf_mem, &pci_host_conf_be_ops, h, |
|
311 |
"pci-conf-idx", 4); |
|
312 |
memory_region_init_io(&h->data_mem, &pci_host_data_le_ops, h, |
|
313 |
"pci-conf-data", 4); |
|
315 | 314 |
s->reg = cpu_register_io_memory(e500_pci_reg_read, e500_pci_reg_write, s, |
316 | 315 |
DEVICE_BIG_ENDIAN); |
317 | 316 |
sysbus_init_mmio_cb2(dev, e500_pci_map, e500_pci_unmap); |
Also available in: Unified diff