X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fmips%2Fpmc-sierra%2Fyosemite%2Firq-handler.S;h=33b9c40d4f5cd5c2143272cdf6d9e5f237015db3;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=ebe2e64e275bfb7f6d8d9dc0dd2dcc0444d1cfe0;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/arch/mips/pmc-sierra/yosemite/irq-handler.S b/arch/mips/pmc-sierra/yosemite/irq-handler.S index ebe2e64e2..33b9c40d4 100644 --- a/arch/mips/pmc-sierra/yosemite/irq-handler.S +++ b/arch/mips/pmc-sierra/yosemite/irq-handler.S @@ -1,6 +1,7 @@ /* - * Copyright 2003 PMC-Sierra Inc. + * Copyright 2003, 04 PMC-Sierra Inc. * Author: Manish Lachwani (lachwani@pmc-sierra.com + * Copyright 2004 Ralf Baechle (ralf@linux-mips.org) * * First-level interrupt router for the PMC-Sierra Titan board * @@ -27,84 +28,66 @@ CLI .set at .set noreorder + la ra, ret_from_irq mfc0 t0, CP0_CAUSE mfc0 t2, CP0_STATUS and t0, t2 + andi t2, t0, STATUSF_IP7 /* INTB5 hardware line */ + bnez t2, ll_timer_irq /* Timer */ andi t1, t0, STATUSF_IP2 /* INTB0 hardware line */ bnez t1, ll_pcia_irq /* 64-bit PCI */ - andi t1, t0, STATUSF_IP3 /* INTB1 hardware line */ - bnez t1, ll_pcib_irq /* second 64-bit PCI slot */ + andi t2, t0, STATUSF_IP3 /* INTB1 hardware line */ + bnez t2, ll_pcib_irq /* second 64-bit PCI slot */ andi t1, t0, STATUSF_IP4 /* INTB2 hardware line */ bnez t1, ll_duart_irq /* UART */ - andi t1, t0, STATUSF_IP5 /* SMP inter-core interrupts */ - bnez t1, ll_smp_irq + andi t2, t0, STATUSF_IP5 /* SMP inter-core interrupts */ + bnez t2, ll_smp_irq andi t1, t0, STATUSF_IP6 bnez t1, ll_ht_irq /* Hypertransport */ - andi t1, t0, STATUSF_IP7 /* INTB5 hardware line */ - bnez t1, ll_timer_irq /* Timer */ - nop - nop - - /* Extended interrupts */ - mfc0 t0, CP0_CAUSE - cfc0 t1, CP0_S1_INTCONTROL - - sll t2, t1, 8 - - and t0, t2 - srl t0, t0, 16 - - .set reorder - - j spurious_interrupt - nop + move a0, sp + j do_extended_irq END(titan_handle_int) + .set reorder .align 5 ll_pcia_irq: li a0, 2 move a1, sp #ifdef CONFIG_HYPERTRANSPORT - jal ll_ht_smp_irq_handler + j ll_ht_smp_irq_handler #else - jal do_IRQ + j do_IRQ #endif - j ret_from_irq ll_pcib_irq: li a0, 3 move a1, sp - jal do_IRQ - j ret_from_irq + j do_IRQ ll_duart_irq: li a0, 4 move a1, sp - jal do_IRQ - j ret_from_irq + j do_IRQ ll_smp_irq: li a0, 5 move a1, sp #ifdef CONFIG_SMP - jal jaguar_mailbox_irq + j titan_mailbox_irq #else - jal do_IRQ + j do_IRQ #endif - j ret_from_irq ll_ht_irq: li a0, 6 move a1, sp - jal ll_ht_smp_irq_handler - j ret_from_irq + j ll_ht_smp_irq_handler ll_timer_irq: li a0, 7 move a1, sp - jal do_IRQ - j ret_from_irq + j do_IRQ