xref: /openbmc/linux/arch/m68k/kernel/irq.c (revision 8c9f08f9)
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/system.h>
1966d857b0SGreg Ungerer #include <asm/traps.h>
2066d857b0SGreg Ungerer 
2166d857b0SGreg Ungerer asmlinkage void do_IRQ(int irq, struct pt_regs *regs)
2266d857b0SGreg Ungerer {
2366d857b0SGreg Ungerer 	struct pt_regs *oldregs = set_irq_regs(regs);
2466d857b0SGreg Ungerer 
2566d857b0SGreg Ungerer 	irq_enter();
2666d857b0SGreg Ungerer 	generic_handle_irq(irq);
2766d857b0SGreg Ungerer 	irq_exit();
2866d857b0SGreg Ungerer 
2966d857b0SGreg Ungerer 	set_irq_regs(oldregs);
3066d857b0SGreg Ungerer }
318c9f08f9SGeert Uytterhoeven 
328c9f08f9SGeert Uytterhoeven 
338c9f08f9SGeert Uytterhoeven /* The number of spurious interrupts */
348c9f08f9SGeert Uytterhoeven atomic_t irq_err_count;
358c9f08f9SGeert Uytterhoeven 
368c9f08f9SGeert Uytterhoeven int arch_show_interrupts(struct seq_file *p, int prec)
378c9f08f9SGeert Uytterhoeven {
388c9f08f9SGeert Uytterhoeven 	seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count));
398c9f08f9SGeert Uytterhoeven 	return 0;
408c9f08f9SGeert Uytterhoeven }
41