166d857b0SGreg Ungerer /* 266d857b0SGreg Ungerer * irq.c 366d857b0SGreg Ungerer * 466d857b0SGreg Ungerer * (C) Copyright 2007, Greg Ungerer <gerg@snapgear.com> 566d857b0SGreg Ungerer * 666d857b0SGreg Ungerer * This file is subject to the terms and conditions of the GNU General Public 766d857b0SGreg Ungerer * License. See the file COPYING in the main directory of this archive 866d857b0SGreg Ungerer * for more details. 966d857b0SGreg Ungerer */ 1066d857b0SGreg Ungerer 1166d857b0SGreg Ungerer #include <linux/types.h> 1266d857b0SGreg Ungerer #include <linux/init.h> 1366d857b0SGreg Ungerer #include <linux/kernel.h> 1466d857b0SGreg Ungerer #include <linux/kernel_stat.h> 1566d857b0SGreg Ungerer #include <linux/interrupt.h> 1666d857b0SGreg Ungerer #include <linux/irq.h> 1766d857b0SGreg Ungerer #include <linux/seq_file.h> 1866d857b0SGreg Ungerer #include <asm/traps.h> 1966d857b0SGreg Ungerer do_IRQ(int irq,struct pt_regs * regs)2066d857b0SGreg Ungererasmlinkage void do_IRQ(int irq, struct pt_regs *regs) 2166d857b0SGreg Ungerer { 2266d857b0SGreg Ungerer struct pt_regs *oldregs = set_irq_regs(regs); 2366d857b0SGreg Ungerer 2466d857b0SGreg Ungerer irq_enter(); 2566d857b0SGreg Ungerer generic_handle_irq(irq); 2666d857b0SGreg Ungerer irq_exit(); 2766d857b0SGreg Ungerer 2866d857b0SGreg Ungerer set_irq_regs(oldregs); 2966d857b0SGreg Ungerer } 30*8c9f08f9SGeert Uytterhoeven 31*8c9f08f9SGeert Uytterhoeven 32*8c9f08f9SGeert Uytterhoeven /* The number of spurious interrupts */ 33*8c9f08f9SGeert Uytterhoeven atomic_t irq_err_count; 34*8c9f08f9SGeert Uytterhoeven arch_show_interrupts(struct seq_file * p,int prec)35*8c9f08f9SGeert Uytterhoevenint arch_show_interrupts(struct seq_file *p, int prec) 36*8c9f08f9SGeert Uytterhoeven { 37*8c9f08f9SGeert Uytterhoeven seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count)); 38*8c9f08f9SGeert Uytterhoeven return 0; 39*8c9f08f9SGeert Uytterhoeven } 40