diff options
Diffstat (limited to 'arch/mips/kernel/irq.c')
| -rw-r--r-- | arch/mips/kernel/irq.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c index 3dd76b3d2967..3dce742e716f 100644 --- a/arch/mips/kernel/irq.c +++ b/arch/mips/kernel/irq.c | |||
| @@ -38,6 +38,15 @@ void ack_bad_irq(unsigned int irq) | |||
| 38 | 38 | ||
| 39 | atomic_t irq_err_count; | 39 | atomic_t irq_err_count; |
| 40 | 40 | ||
| 41 | #ifdef CONFIG_MIPS_MT_SMTC | ||
| 42 | /* | ||
| 43 | * SMTC Kernel needs to manipulate low-level CPU interrupt mask | ||
| 44 | * in do_IRQ. These are passed in setup_irq_smtc() and stored | ||
| 45 | * in this table. | ||
| 46 | */ | ||
| 47 | unsigned long irq_hwmask[NR_IRQS]; | ||
| 48 | #endif /* CONFIG_MIPS_MT_SMTC */ | ||
| 49 | |||
| 41 | #undef do_IRQ | 50 | #undef do_IRQ |
| 42 | 51 | ||
| 43 | /* | 52 | /* |
| @@ -49,6 +58,7 @@ asmlinkage unsigned int do_IRQ(unsigned int irq, struct pt_regs *regs) | |||
| 49 | { | 58 | { |
| 50 | irq_enter(); | 59 | irq_enter(); |
| 51 | 60 | ||
| 61 | __DO_IRQ_SMTC_HOOK(); | ||
| 52 | __do_IRQ(irq, regs); | 62 | __do_IRQ(irq, regs); |
| 53 | 63 | ||
| 54 | irq_exit(); | 64 | irq_exit(); |
| @@ -101,6 +111,11 @@ skip: | |||
| 101 | return 0; | 111 | return 0; |
| 102 | } | 112 | } |
| 103 | 113 | ||
| 114 | asmlinkage void spurious_interrupt(struct pt_regs *regs) | ||
| 115 | { | ||
| 116 | atomic_inc(&irq_err_count); | ||
| 117 | } | ||
| 118 | |||
| 104 | #ifdef CONFIG_KGDB | 119 | #ifdef CONFIG_KGDB |
| 105 | extern void breakpoint(void); | 120 | extern void breakpoint(void); |
| 106 | extern void set_debug_traps(void); | 121 | extern void set_debug_traps(void); |
| @@ -124,6 +139,9 @@ void __init init_IRQ(void) | |||
| 124 | irq_desc[i].depth = 1; | 139 | irq_desc[i].depth = 1; |
| 125 | irq_desc[i].handler = &no_irq_type; | 140 | irq_desc[i].handler = &no_irq_type; |
| 126 | spin_lock_init(&irq_desc[i].lock); | 141 | spin_lock_init(&irq_desc[i].lock); |
| 142 | #ifdef CONFIG_MIPS_MT_SMTC | ||
| 143 | irq_hwmask[i] = 0; | ||
| 144 | #endif /* CONFIG_MIPS_MT_SMTC */ | ||
| 127 | } | 145 | } |
| 128 | 146 | ||
| 129 | arch_init_irq(); | 147 | arch_init_irq(); |
