| Greg Ungerer | 2502b66 | 2007-07-19 01:49:12 -0700 | [diff] [blame] | 1 | /* | 
|  | 2 | * irq.c | 
|  | 3 | * | 
|  | 4 | * (C) Copyright 2007, Greg Ungerer <gerg@snapgear.com> | 
|  | 5 | * | 
|  | 6 | * This file is subject to the terms and conditions of the GNU General Public | 
|  | 7 | * License.  See the file COPYING in the main directory of this archive | 
|  | 8 | * for more details. | 
|  | 9 | */ | 
|  | 10 |  | 
|  | 11 | #include <linux/types.h> | 
|  | 12 | #include <linux/init.h> | 
|  | 13 | #include <linux/kernel.h> | 
|  | 14 | #include <linux/kernel_stat.h> | 
|  | 15 | #include <linux/interrupt.h> | 
|  | 16 | #include <linux/irq.h> | 
|  | 17 | #include <linux/seq_file.h> | 
|  | 18 | #include <asm/system.h> | 
|  | 19 | #include <asm/traps.h> | 
|  | 20 |  | 
|  | 21 | asmlinkage void do_IRQ(int irq, struct pt_regs *regs) | 
|  | 22 | { | 
|  | 23 | struct pt_regs *oldregs = set_irq_regs(regs); | 
|  | 24 |  | 
|  | 25 | irq_enter(); | 
| Greg Ungerer | 454dc5f | 2009-03-20 09:53:59 +1000 | [diff] [blame] | 26 | generic_handle_irq(irq); | 
| Greg Ungerer | 2502b66 | 2007-07-19 01:49:12 -0700 | [diff] [blame] | 27 | irq_exit(); | 
|  | 28 |  | 
|  | 29 | set_irq_regs(oldregs); | 
|  | 30 | } | 
| Geert Uytterhoeven | 8c9f08f | 2011-07-13 20:29:24 +0200 | [diff] [blame] | 31 |  | 
|  | 32 |  | 
|  | 33 | /* The number of spurious interrupts */ | 
|  | 34 | atomic_t irq_err_count; | 
|  | 35 |  | 
|  | 36 | int arch_show_interrupts(struct seq_file *p, int prec) | 
|  | 37 | { | 
|  | 38 | seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count)); | 
|  | 39 | return 0; | 
|  | 40 | } |