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