diff options
| author | Thiemo Seufer <ths@networkno.de> | 2007-03-18 20:13:37 -0400 |
|---|---|---|
| committer | Ralf Baechle <ralf@linux-mips.org> | 2007-03-19 16:22:43 -0400 |
| commit | 119537c092638bf8a0672415024639353c773bb1 (patch) | |
| tree | af3fc85f2d5a4bf93fd1cd82b228054ac6b5fe42 /arch/mips/philips | |
| parent | 72ede9b18967e7a8a62a88f164f003193f6d891f (diff) | |
[MIPS] Misc fixes for plat_irq_dispatch functions
o adds missing ST0_IM masks, which caused the logging of valid interrupts
as spurious
o stops pnx8550 to log every interrupt as spurious
o adds cause register masks for ip22/ip32, which caused handling of masked
interrupts
o removes some superfluous parentheses in the SNI interrupt code
Signed-Off-By: Thiemo Seufer <ths@networkno.de>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/philips')
| -rw-r--r-- | arch/mips/philips/pnx8550/common/int.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/mips/philips/pnx8550/common/int.c b/arch/mips/philips/pnx8550/common/int.c index b1c4805a0b92..aad03429a5e3 100644 --- a/arch/mips/philips/pnx8550/common/int.c +++ b/arch/mips/philips/pnx8550/common/int.c | |||
| @@ -83,16 +83,15 @@ static void timer_irqdispatch(int irq) | |||
| 83 | 83 | ||
| 84 | asmlinkage void plat_irq_dispatch(void) | 84 | asmlinkage void plat_irq_dispatch(void) |
| 85 | { | 85 | { |
| 86 | unsigned int pending = read_c0_status() & read_c0_cause(); | 86 | unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; |
| 87 | 87 | ||
| 88 | if (pending & STATUSF_IP2) | 88 | if (pending & STATUSF_IP2) |
| 89 | hw0_irqdispatch(2); | 89 | hw0_irqdispatch(2); |
| 90 | else if (pending & STATUSF_IP7) { | 90 | else if (pending & STATUSF_IP7) { |
| 91 | if (read_c0_config7() & 0x01c0) | 91 | if (read_c0_config7() & 0x01c0) |
| 92 | timer_irqdispatch(7); | 92 | timer_irqdispatch(7); |
| 93 | } | 93 | } else |
| 94 | 94 | spurious_interrupt(); | |
| 95 | spurious_interrupt(); | ||
| 96 | } | 95 | } |
| 97 | 96 | ||
| 98 | static inline void modify_cp0_intmask(unsigned clr_mask, unsigned set_mask) | 97 | static inline void modify_cp0_intmask(unsigned clr_mask, unsigned set_mask) |
