if (irq_nr > 15) sun4m_interrupts->clear = mask; else sun4m_interrupts->cpu_intregs[cpu].clear = mask; local_irq_restore(flags); } else { local_irq_save(flags); sun4m_interrupts->clear = SUN4M_INT_FLOPPY; local_irq_restore(flags); } } static unsigned long cpu_pil_to_imask[16] = { /*0*/ 0x00000000, /*1*/ 0x00000000, /*2*/ SUN4M_INT_SBUS(0) | SUN4M_INT_VME(0), /*3*/ SUN4M_INT_SBUS(1) | SUN4M_INT_VME(1), /*4*/ SUN4M_INT_SCSI, /*5*/ SUN4M_INT_SBUS(2) | SUN4M_INT_VME(2), /*6*/ SUN4M_INT_ETHERNET, /*7*/ SUN4M_INT_SBUS(3) | SUN4M_INT_VME(3), /*8*/ SUN4M_INT_VIDEO, /*9*/ SUN4M_INT_SBUS(4) | SUN4M_INT_VME(4) | SUN4M_INT_MODULE_ERR, /*10*/ SUN4M_INT_REALTIME, /*11*/ SUN4M_INT_SBUS(5) | SUN4M_INT_VME(5) | SUN4M_INT_FLOPPY, /*12*/ SUN4M_INT_SERIAL | SUN4M_INT_KBDMS, /*13*/ SUN4M_INT_AUDIO, /*14*/ SUN4M_INT_E14, /*15*/ 0x00000000 };
SUN4M_SOFT_INT(12), SUN4M_SOFT_INT(13), SUN4M_SOFT_INT(14), SUN4M_SOFT_INT(15), /* 0x20 - onboard */ 0, 0, 0, 0, SUN4M_INT_SCSI, 0, SUN4M_INT_ETHERNET, 0, SUN4M_INT_VIDEO, SUN4M_INT_MODULE, SUN4M_INT_REALTIME, SUN4M_INT_FLOPPY, (SUN4M_INT_SERIAL | SUN4M_INT_KBDMS), SUN4M_INT_AUDIO, SUN4M_INT_E14, SUN4M_INT_MODULE_ERR, /* 0x30 - sbus */ 0, 0, SUN4M_INT_SBUS(0), SUN4M_INT_SBUS(1), 0, SUN4M_INT_SBUS(2), 0, SUN4M_INT_SBUS(3), 0, SUN4M_INT_SBUS(4), 0, SUN4M_INT_SBUS(5), 0, SUN4M_INT_SBUS(6), 0, 0, /* 0x40 - vme */ 0, 0, SUN4M_INT_VME(0), SUN4M_INT_VME(1), 0, SUN4M_INT_VME(2), 0, SUN4M_INT_VME(3), 0, SUN4M_INT_VME(4), 0, SUN4M_INT_VME(5), 0, SUN4M_INT_VME(6), 0, 0 }; static void sun4m_mask_irq(struct irq_data *data) { struct sun4m_handler_data *handler_data = data->handler_data; int cpu = smp_processor_id(); if (handler_data->mask) { unsigned long flags; local_irq_save(flags); if (handler_data->percpu) {
SUN4M_SOFT_INT(12), SUN4M_SOFT_INT(13), SUN4M_SOFT_INT(14), SUN4M_SOFT_INT(15), /* onboard */ 0, 0, 0, 0, SUN4M_INT_SCSI, 0, SUN4M_INT_ETHERNET, 0, SUN4M_INT_VIDEO, SUN4M_INT_MODULE, SUN4M_INT_REALTIME, SUN4M_INT_FLOPPY, (SUN4M_INT_SERIAL | SUN4M_INT_KBDMS), SUN4M_INT_AUDIO, 0, SUN4M_INT_MODULE_ERR, /* sbus */ 0, 0, SUN4M_INT_SBUS(0), SUN4M_INT_SBUS(1), 0, SUN4M_INT_SBUS(2), 0, SUN4M_INT_SBUS(3), 0, SUN4M_INT_SBUS(4), 0, SUN4M_INT_SBUS(5), 0, SUN4M_INT_SBUS(6), 0, 0, /* vme */ 0, 0, SUN4M_INT_VME(0), SUN4M_INT_VME(1), 0, SUN4M_INT_VME(2), 0, SUN4M_INT_VME(3), 0, SUN4M_INT_VME(4), 0, SUN4M_INT_VME(5), 0, SUN4M_INT_VME(6), 0, 0 }; static unsigned long sun4m_get_irqmask(unsigned int irq) { unsigned long mask; if (irq < 0x50) mask = irq_mask[irq]; else mask = 0; if (!mask)