static void xics_initfn(Object *obj) { XICSState *xics = XICS(obj); xics->ics = ICS(object_new(TYPE_ICS)); object_property_add_child(obj, "ics", OBJECT(xics->ics), NULL); xics->ics->icp = xics; }
static void ics_realize(DeviceState *dev, Error **errp) { ICSState *ics = ICS(dev); if (!ics->nr_irqs) { error_setg(errp, "Number of interrupts needs to be greater 0"); return; } ics->irqs = g_malloc0(ics->nr_irqs * sizeof(ICSIRQState)); ics->qirqs = qemu_allocate_irqs(ics_set_irq, ics, ics->nr_irqs); }
static void ics_reset(DeviceState *dev) { ICSState *ics = ICS(dev); int i; memset(ics->irqs, 0, sizeof(ICSIRQState) * ics->nr_irqs); for (i = 0; i < ics->nr_irqs; i++) { ics->irqs[i].priority = 0xff; ics->irqs[i].saved_priority = 0xff; } }
static void ics_initfn(Object *obj) { ICSState *ics = ICS(obj); ics->offset = XICS_IRQ_BASE; }