コード例 #1
0
ファイル: sun4m_irq.c プロジェクト: FatSunHYS/OSCourseDesign
		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
};
コード例 #2
0
    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) {
コード例 #3
0
ファイル: sun4m_irq.c プロジェクト: 325116067/semc-qsd8x50
	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)