diff options
author | Thiemo Seufer <ths@networkno.de> | 2006-07-05 09:26:38 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2006-07-13 16:26:05 -0400 |
commit | 6e61e85b0980f7b88cd5c4b822386ed00dd7e295 (patch) | |
tree | 8541546073f5ea9131f881196519f28fc047ecb8 /arch/mips/sibyte/bcm1480 | |
parent | fc5d2d279ff820172a698706d33e733d4578bd6c (diff) |
[MIPS] Sibyte: Improve interrupt latency again for sb1250/bcm1480
this patch restores the behaviour of the old (assembly-written)
interrupt handler, the handler is left as soon as a single interrupt
cause is handled.
Signed-off-by: Thiemo Seufer <ths@networkno.de>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/sibyte/bcm1480')
-rw-r--r-- | arch/mips/sibyte/bcm1480/irq.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/mips/sibyte/bcm1480/irq.c b/arch/mips/sibyte/bcm1480/irq.c index 2c5afb4c2ef3..cab78fb5a9ac 100644 --- a/arch/mips/sibyte/bcm1480/irq.c +++ b/arch/mips/sibyte/bcm1480/irq.c | |||
@@ -502,22 +502,23 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
502 | #ifdef CONFIG_SIBYTE_BCM1480_PROF | 502 | #ifdef CONFIG_SIBYTE_BCM1480_PROF |
503 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ | 503 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ |
504 | sbprof_cpu_intr(exception_epc(regs)); | 504 | sbprof_cpu_intr(exception_epc(regs)); |
505 | else | ||
505 | #endif | 506 | #endif |
506 | 507 | ||
507 | if (pending & CAUSEF_IP4) | 508 | if (pending & CAUSEF_IP4) |
508 | bcm1480_timer_interrupt(regs); | 509 | bcm1480_timer_interrupt(regs); |
509 | 510 | ||
510 | #ifdef CONFIG_SMP | 511 | #ifdef CONFIG_SMP |
511 | if (pending & CAUSEF_IP3) | 512 | else if (pending & CAUSEF_IP3) |
512 | bcm1480_mailbox_interrupt(regs); | 513 | bcm1480_mailbox_interrupt(regs); |
513 | #endif | 514 | #endif |
514 | 515 | ||
515 | #ifdef CONFIG_KGDB | 516 | #ifdef CONFIG_KGDB |
516 | if (pending & CAUSEF_IP6) | 517 | else if (pending & CAUSEF_IP6) |
517 | bcm1480_kgdb_interrupt(regs); /* KGDB (uart 1) */ | 518 | bcm1480_kgdb_interrupt(regs); /* KGDB (uart 1) */ |
518 | #endif | 519 | #endif |
519 | 520 | ||
520 | if (pending & CAUSEF_IP2) { | 521 | else if (pending & CAUSEF_IP2) { |
521 | unsigned long long mask_h, mask_l; | 522 | unsigned long long mask_h, mask_l; |
522 | unsigned long base; | 523 | unsigned long base; |
523 | 524 | ||