static void __init gic_basic_init(void) { unsigned int i, cpu; /* Setup defaults */ for (i = 0; i < GIC_NUM_INTRS; i++) { GIC_SET_POLARITY(i, GIC_POL_POS); GIC_SET_TRIGGER(i, GIC_TRIG_LEVEL); GIC_SET_INTR_MASK(i, 0); } /* Setup specifics */ for (i = 0; i < _mapsize; i++) { cpu = _intrmap[i].cpunum; if (cpu == X) continue; setup_intr(_intrmap[i].intrnum, _intrmap[i].cpunum, _intrmap[i].pin, _intrmap[i].polarity, _intrmap[i].trigtype); /* Initialise per-cpu Interrupt software masks */ if (_intrmap[i].ipiflag) set_bit(_intrmap[i].intrnum, pcpu_masks[cpu].pcpu_mask); } vpe_local_setup(numvpes); for (i = _irqbase; i < (_irqbase + numintrs); i++) set_irq_chip(i, &gic_irq_controller); }
static void __init gic_basic_init(int numintrs, int numvpes, struct gic_intr_map *intrmap, int mapsize) { unsigned int i, cpu; /* Setup defaults */ for (i = 0; i < numintrs; i++) { GIC_SET_POLARITY(i, GIC_POL_POS); GIC_SET_TRIGGER(i, GIC_TRIG_LEVEL); GIC_CLR_INTR_MASK(i); if (i < GIC_NUM_INTRS) gic_irq_flags[i] = 0; } /* Setup specifics */ for (i = 0; i < mapsize; i++) { cpu = intrmap[i].cpunum; if (cpu == GIC_UNUSED) continue; if (cpu == 0 && i != 0 && intrmap[i].flags == 0) continue; gic_setup_intr(i, intrmap[i].cpunum, intrmap[i].pin, intrmap[i].polarity, intrmap[i].trigtype, intrmap[i].flags); } vpe_local_setup(numvpes); for (i = _irqbase; i < (_irqbase + numintrs); i++) irq_set_chip(i, &gic_irq_controller); }