static int pl022_init(SysBusDevice *dev) { pl022_state *s = FROM_SYSBUS(pl022_state, dev); memory_region_init_io(&s->iomem, &pl022_ops, s, "pl022", 0x1000); sysbus_init_mmio(dev, &s->iomem); sysbus_init_irq(dev, &s->irq); s->ssi = ssi_create_bus(&dev->qdev, "ssi"); pl022_reset(s); vmstate_register(&dev->qdev, -1, &vmstate_pl022, s); return 0; }
static int pl022_init(SysBusDevice *sbd) { DeviceState *dev = DEVICE(sbd); PL022State *s = PL022(dev); memory_region_init_io(&s->iomem, OBJECT(s), &pl022_ops, s, "pl022", 0x1000); sysbus_init_mmio(sbd, &s->iomem); sysbus_init_irq(sbd, &s->irq); s->ssi = ssi_create_bus(dev, "ssi"); pl022_reset(s); vmstate_register(dev, -1, &vmstate_pl022, s); return 0; }
static int pl022_init(SysBusDevice *dev) { pl022_state *s = FROM_SYSBUS(pl022_state, dev); int iomemtype; iomemtype = cpu_register_io_memory(pl022_readfn, pl022_writefn, s, DEVICE_NATIVE_ENDIAN); sysbus_init_mmio(dev, 0x1000, iomemtype); sysbus_init_irq(dev, &s->irq); s->ssi = ssi_create_bus(&dev->qdev, "ssi"); pl022_reset(s); vmstate_register(&dev->qdev, -1, &vmstate_pl022, s); return 0; }
void pl022_init(uint32_t base, qemu_irq irq, int (*xfer_cb)(void *, int), void * opaque) { int iomemtype; pl022_state *s; s = (pl022_state *)qemu_mallocz(sizeof(pl022_state)); iomemtype = cpu_register_io_memory(0, pl022_readfn, pl022_writefn, s); cpu_register_physical_memory(base, 0x00001000, iomemtype); s->base = base; s->irq = irq; s->xfer_cb = xfer_cb; s->opaque = opaque; pl022_reset(s); /* ??? Save/restore. */ }