Exemple #1
0
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);
}