call_ppc_irq_dispatch_handler(regs, irq, irqtp); 
call___do_IRQ(irq, regs, irqtp); 
void do_IRQ(struct pt_regs *regs){	int irq;#ifdef CONFIG_IRQSTACKS	struct thread_info *curtp, *irqtp;#endif	irq_enter();#ifdef CONFIG_DEBUG_STACKOVERFLOW	/* Debugging check for stack overflow: is there less than 2KB free? */	{		long sp;		sp = __get_SP() & (THREAD_SIZE-1);		if (unlikely(sp < (sizeof(struct thread_info) + 2048))) {			printk("do_IRQ: stack overflow: %ld\n",				sp - sizeof(struct thread_info));			dump_stack();		}	}#endif	irq = ppc_md.get_irq(regs);	if (irq >= 0) {#ifdef CONFIG_IRQSTACKS		/* Switch to the irq stack to handle this */		curtp = current_thread_info();		irqtp = hardirq_ctx[smp_processor_id()];		if (curtp != irqtp) {			irqtp->task = curtp->task;			irqtp->flags = 0;			call_ppc_irq_dispatch_handler(regs, irq, irqtp);			irqtp->task = NULL;			if (irqtp->flags)				set_bits(irqtp->flags, &curtp->flags);		} else#endif			ppc_irq_dispatch_handler(regs, irq);	} else		/* That's not SMP safe ... but who cares ? */		ppc_spurious_interrupts++;	irq_exit();}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/d4be4f37d9d2a5afc8e79a95beafbac4b83f20c5/irq.c/buggy/arch/ppc64/kernel/irq.c