Ejemplo n.º 1
0
static void
ps3pic_unmask(device_t dev, u_int irq)
{
	struct ps3pic_softc *sc;
	uint64_t ppe;

	sc = device_get_softc(dev);
	atomic_set_64(&sc->mask_thread0[0], 1UL << (63 - irq));
	atomic_set_64(&sc->mask_thread1[0], 1UL << (63 - irq));

	lv1_get_logical_ppe_id(&ppe);
	lv1_did_update_interrupt_mask(ppe, 0);
	lv1_did_update_interrupt_mask(ppe, 1);
}
Ejemplo n.º 2
0
static void
ps3pic_mask(device_t dev, u_int irq)
{
	struct ps3pic_softc *sc;
	uint64_t ppe;

	sc = device_get_softc(dev);

	/* Do not mask IPIs! */
	if (irq == sc->sc_ipi_outlet[0])
		return;

	atomic_clear_64(&sc->mask_thread0[0], 1UL << (63 - irq));
	atomic_clear_64(&sc->mask_thread1[0], 1UL << (63 - irq));

	lv1_get_logical_ppe_id(&ppe);
	lv1_did_update_interrupt_mask(ppe, 0);
	lv1_did_update_interrupt_mask(ppe, 1);
}
Ejemplo n.º 3
0
static void ps3_chip_unmask(struct irq_data *d)
{
	struct ps3_private *pd = irq_data_get_irq_chip_data(d);
	unsigned long flags;

	pr_debug("%s:%d: thread_id %llu, virq %d\n", __func__, __LINE__,
		pd->thread_id, d->irq);

	local_irq_save(flags);
	set_bit(63 - d->irq, &pd->bmp.mask);
	lv1_did_update_interrupt_mask(pd->ppe_id, pd->thread_id);
	local_irq_restore(flags);
}
Ejemplo n.º 4
0
static void ps3_chip_mask(unsigned int virq)
{
	struct ps3_private *pd = get_irq_chip_data(virq);
	unsigned long flags;

	pr_debug("%s:%d: thread_id %lu, virq %d\n", __func__, __LINE__,
		pd->thread_id, virq);

	local_irq_save(flags);
	clear_bit(63 - virq, &pd->bmp.mask);
	lv1_did_update_interrupt_mask(pd->ppe_id, pd->thread_id);
	local_irq_restore(flags);
}