xref: /openbmc/linux/arch/m68k/kernel/irq.c (revision 803f6914)
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 Ungerer asmlinkage 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 }
308c9f08f9SGeert Uytterhoeven 
318c9f08f9SGeert Uytterhoeven 
328c9f08f9SGeert Uytterhoeven /* The number of spurious interrupts */
338c9f08f9SGeert Uytterhoeven atomic_t irq_err_count;
348c9f08f9SGeert Uytterhoeven 
arch_show_interrupts(struct seq_file * p,int prec)358c9f08f9SGeert Uytterhoeven int arch_show_interrupts(struct seq_file *p, int prec)
368c9f08f9SGeert Uytterhoeven {
378c9f08f9SGeert Uytterhoeven 	seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count));
388c9f08f9SGeert Uytterhoeven 	return 0;
398c9f08f9SGeert Uytterhoeven }
40