| 1 | Index: linux-2.6.30.5/arch/mips/kernel/traps.c |
| 2 | =================================================================== |
| 3 | --- linux-2.6.30.5.orig/arch/mips/kernel/traps.c 2009-08-16 23:19:38.000000000 +0200 |
| 4 | +++ linux-2.6.30.5/arch/mips/kernel/traps.c 2009-09-02 18:23:37.000000000 +0200 |
| 5 | @@ -1542,7 +1542,16 @@ |
| 6 | */ |
| 7 | if (cpu_has_mips_r2) { |
| 8 | cp0_compare_irq = (read_c0_intctl() >> 29) & 7; |
| 9 | + if (!cp0_compare_irq) |
| 10 | + cp0_compare_irq = CP0_LEGACY_COMPARE_IRQ; |
| 11 | + |
| 12 | cp0_perfcount_irq = (read_c0_intctl() >> 26) & 7; |
| 13 | + if (!cp0_perfcount_irq) |
| 14 | + cp0_perfcount_irq = CP0_LEGACY_PERFCNT_IRQ; |
| 15 | + |
| 16 | + if (arch_fixup_c0_irqs) |
| 17 | + arch_fixup_c0_irqs(); |
| 18 | + |
| 19 | if (cp0_perfcount_irq == cp0_compare_irq) |
| 20 | cp0_perfcount_irq = -1; |
| 21 | } else { |
| 22 | Index: linux-2.6.30.5/arch/mips/include/asm/irq.h |
| 23 | =================================================================== |
| 24 | --- linux-2.6.30.5.orig/arch/mips/include/asm/irq.h 2009-09-02 18:24:49.000000000 +0200 |
| 25 | +++ linux-2.6.30.5/arch/mips/include/asm/irq.h 2009-09-02 18:26:05.000000000 +0200 |
| 26 | @@ -157,8 +157,10 @@ |
| 27 | * IE7. Since R2 their number has to be read from the c0_intctl register. |
| 28 | */ |
| 29 | #define CP0_LEGACY_COMPARE_IRQ 7 |
| 30 | +#define CP0_LEGACY_PERFCNT_IRQ 7 |
| 31 | |
| 32 | extern int cp0_compare_irq; |
| 33 | extern int cp0_perfcount_irq; |
| 34 | +extern void __weak arch_fixup_c0_irqs(void); |
| 35 | |
| 36 | #endif /* _ASM_IRQ_H */ |
| 37 | |