struct irqaction *action; int do_random, cpu; int ret, retval = 0;  cpu = smp_processor_id(); irq_enter(); kstat_cpu(cpu).irqs[irq - FIRST_IRQ]++; action = irq_action[irq - FIRST_IRQ];  if (action) { if (!(action->flags & SA_INTERRUPT)) local_irq_enable(); do_random = 0; do { ret = action->handler(irq, action->dev_id, regs); if (ret == IRQ_HANDLED) do_random |= action->flags; retval |= ret; action = action->next; } while (action);  if (retval != 1) { if (retval) { printk("irq event %d: bogus retval mask %x\n", irq, retval); } else { printk("irq %d: nobody cared\n", irq); } }  if (do_random & SA_SAMPLE_RANDOM) add_interrupt_randomness(irq); local_irq_disable(); } 
unsigned long sp; irq_enter(); sp = rdsp(); if (unlikely((sp & (PAGE_SIZE - 1)) < (PAGE_SIZE/8))) { printk("do_IRQ: stack overflow: %lX\n", sp); show_stack(NULL, (unsigned long *)sp); } __do_IRQ(irq, regs); 
asmlinkage void do_IRQ(int irq, struct pt_regs * regs){	struct irqaction *action;	int do_random, cpu;        int ret, retval = 0;        cpu = smp_processor_id();        irq_enter();	kstat_cpu(cpu).irqs[irq - FIRST_IRQ]++;	action = irq_action[irq - FIRST_IRQ];        if (action) {                if (!(action->flags & SA_INTERRUPT))                        local_irq_enable();                do_random = 0;                do {			ret = action->handler(irq, action->dev_id, regs);			if (ret == IRQ_HANDLED)				do_random |= action->flags;                        retval |= ret;                        action = action->next;                } while (action);                if (retval != 1) {			if (retval) {				printk("irq event %d: bogus retval mask %x\n",					irq, retval);			} else {				printk("irq %d: nobody cared\n", irq);			}		}                if (do_random & SA_SAMPLE_RANDOM)                        add_interrupt_randomness(irq);		local_irq_disable();        }        irq_exit();}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/2e0cea1decf7f21df0496571c218df3b3b8cce99/irq.c/clean/arch/cris/kernel/irq.c