aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/mti-malta
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/mti-malta')
-rw-r--r--arch/mips/mti-malta/malta-int.c6
-rw-r--r--arch/mips/mti-malta/malta-time.c13
2 files changed, 6 insertions, 13 deletions
diff --git a/arch/mips/mti-malta/malta-int.c b/arch/mips/mti-malta/malta-int.c
index 3b3bc1d9ebf9..c6b35482505d 100644
--- a/arch/mips/mti-malta/malta-int.c
+++ b/arch/mips/mti-malta/malta-int.c
@@ -273,11 +273,7 @@ asmlinkage void plat_irq_dispatch(void)
273 273
274 irq = irq_ffs(pending); 274 irq = irq_ffs(pending);
275 275
276 /* HACK: GIC doesn't properly dispatch local interrupts yet */ 276 do_IRQ(MIPS_CPU_IRQ_BASE + irq);
277 if (gic_present && irq == MIPSCPU_INT_GIC && gic_compare_int())
278 do_IRQ(MIPS_GIC_IRQ_BASE);
279 else
280 do_IRQ(MIPS_CPU_IRQ_BASE + irq);
281} 277}
282 278
283#ifdef CONFIG_MIPS_MT_SMP 279#ifdef CONFIG_MIPS_MT_SMP
diff --git a/arch/mips/mti-malta/malta-time.c b/arch/mips/mti-malta/malta-time.c
index 17cfc8a379a6..f6ca8ea4d992 100644
--- a/arch/mips/mti-malta/malta-time.c
+++ b/arch/mips/mti-malta/malta-time.c
@@ -126,9 +126,9 @@ int get_c0_perfcount_int(void)
126 if (cpu_has_veic) { 126 if (cpu_has_veic) {
127 set_vi_handler(MSC01E_INT_PERFCTR, mips_perf_dispatch); 127 set_vi_handler(MSC01E_INT_PERFCTR, mips_perf_dispatch);
128 mips_cpu_perf_irq = MSC01E_INT_BASE + MSC01E_INT_PERFCTR; 128 mips_cpu_perf_irq = MSC01E_INT_BASE + MSC01E_INT_PERFCTR;
129 } else if (gic_present) {
130 mips_cpu_perf_irq = gic_get_c0_perfcount_int();
129 } else if (cp0_perfcount_irq >= 0) { 131 } else if (cp0_perfcount_irq >= 0) {
130 if (cpu_has_vint)
131 set_vi_handler(cp0_perfcount_irq, mips_perf_dispatch);
132 mips_cpu_perf_irq = MIPS_CPU_IRQ_BASE + cp0_perfcount_irq; 132 mips_cpu_perf_irq = MIPS_CPU_IRQ_BASE + cp0_perfcount_irq;
133 } else { 133 } else {
134 mips_cpu_perf_irq = -1; 134 mips_cpu_perf_irq = -1;
@@ -139,15 +139,12 @@ int get_c0_perfcount_int(void)
139 139
140unsigned int get_c0_compare_int(void) 140unsigned int get_c0_compare_int(void)
141{ 141{
142#ifdef MSC01E_INT_BASE
143 if (cpu_has_veic) { 142 if (cpu_has_veic) {
144 set_vi_handler(MSC01E_INT_CPUCTR, mips_timer_dispatch); 143 set_vi_handler(MSC01E_INT_CPUCTR, mips_timer_dispatch);
145 mips_cpu_timer_irq = MSC01E_INT_BASE + MSC01E_INT_CPUCTR; 144 mips_cpu_timer_irq = MSC01E_INT_BASE + MSC01E_INT_CPUCTR;
146 } else 145 } else if (gic_present) {
147#endif 146 mips_cpu_timer_irq = gic_get_c0_compare_int();
148 { 147 } else {
149 if (cpu_has_vint)
150 set_vi_handler(cp0_compare_irq, mips_timer_dispatch);
151 mips_cpu_timer_irq = MIPS_CPU_IRQ_BASE + cp0_compare_irq; 148 mips_cpu_timer_irq = MIPS_CPU_IRQ_BASE + cp0_compare_irq;
152 } 149 }
153 150