diff options
Diffstat (limited to 'arch/mips/sibyte/sb1250/irq.c')
-rw-r--r-- | arch/mips/sibyte/sb1250/irq.c | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c index f9bd9f074517..f6d2e19592ea 100644 --- a/arch/mips/sibyte/sb1250/irq.c +++ b/arch/mips/sibyte/sb1250/irq.c | |||
@@ -254,8 +254,7 @@ void __init init_sb1250_irqs(void) | |||
254 | } | 254 | } |
255 | 255 | ||
256 | 256 | ||
257 | static irqreturn_t sb1250_dummy_handler(int irq, void *dev_id, | 257 | static irqreturn_t sb1250_dummy_handler(int irq, void *dev_id) |
258 | struct pt_regs *regs) | ||
259 | { | 258 | { |
260 | return IRQ_NONE; | 259 | return IRQ_NONE; |
261 | } | 260 | } |
@@ -403,7 +402,7 @@ void __init arch_init_irq(void) | |||
403 | #define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg))) | 402 | #define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg))) |
404 | #define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg))) | 403 | #define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg))) |
405 | 404 | ||
406 | static void sb1250_kgdb_interrupt(struct pt_regs *regs) | 405 | static void sb1250_kgdb_interrupt(void) |
407 | { | 406 | { |
408 | /* | 407 | /* |
409 | * Clear break-change status (allow some time for the remote | 408 | * Clear break-change status (allow some time for the remote |
@@ -414,16 +413,15 @@ static void sb1250_kgdb_interrupt(struct pt_regs *regs) | |||
414 | mdelay(500); | 413 | mdelay(500); |
415 | duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT | | 414 | duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT | |
416 | M_DUART_RX_EN | M_DUART_TX_EN); | 415 | M_DUART_RX_EN | M_DUART_TX_EN); |
417 | set_async_breakpoint(®s->cp0_epc); | 416 | set_async_breakpoint(&get_irq_regs()->cp0_epc); |
418 | } | 417 | } |
419 | 418 | ||
420 | #endif /* CONFIG_KGDB */ | 419 | #endif /* CONFIG_KGDB */ |
421 | 420 | ||
422 | extern void sb1250_timer_interrupt(struct pt_regs *regs); | 421 | extern void sb1250_timer_interrupt(void); |
423 | extern void sb1250_mailbox_interrupt(struct pt_regs *regs); | 422 | extern void sb1250_mailbox_interrupt(void); |
424 | extern void sb1250_kgdb_interrupt(struct pt_regs *regs); | ||
425 | 423 | ||
426 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 424 | asmlinkage void plat_irq_dispatch(void) |
427 | { | 425 | { |
428 | unsigned int pending; | 426 | unsigned int pending; |
429 | 427 | ||
@@ -446,21 +444,21 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
446 | 444 | ||
447 | #ifdef CONFIG_SIBYTE_SB1250_PROF | 445 | #ifdef CONFIG_SIBYTE_SB1250_PROF |
448 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ | 446 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ |
449 | sbprof_cpu_intr(exception_epc(regs)); | 447 | sbprof_cpu_intr(); |
450 | else | 448 | else |
451 | #endif | 449 | #endif |
452 | 450 | ||
453 | if (pending & CAUSEF_IP4) | 451 | if (pending & CAUSEF_IP4) |
454 | sb1250_timer_interrupt(regs); | 452 | sb1250_timer_interrupt(); |
455 | 453 | ||
456 | #ifdef CONFIG_SMP | 454 | #ifdef CONFIG_SMP |
457 | else if (pending & CAUSEF_IP3) | 455 | else if (pending & CAUSEF_IP3) |
458 | sb1250_mailbox_interrupt(regs); | 456 | sb1250_mailbox_interrupt(); |
459 | #endif | 457 | #endif |
460 | 458 | ||
461 | #ifdef CONFIG_KGDB | 459 | #ifdef CONFIG_KGDB |
462 | else if (pending & CAUSEF_IP6) /* KGDB (uart 1) */ | 460 | else if (pending & CAUSEF_IP6) /* KGDB (uart 1) */ |
463 | sb1250_kgdb_interrupt(regs); | 461 | sb1250_kgdb_interrupt(); |
464 | #endif | 462 | #endif |
465 | 463 | ||
466 | else if (pending & CAUSEF_IP2) { | 464 | else if (pending & CAUSEF_IP2) { |
@@ -475,9 +473,9 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
475 | mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(), | 473 | mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(), |
476 | R_IMR_INTERRUPT_STATUS_BASE))); | 474 | R_IMR_INTERRUPT_STATUS_BASE))); |
477 | if (mask) | 475 | if (mask) |
478 | do_IRQ(fls64(mask) - 1, regs); | 476 | do_IRQ(fls64(mask) - 1); |
479 | else | 477 | else |
480 | spurious_interrupt(regs); | 478 | spurious_interrupt(); |
481 | } else | 479 | } else |
482 | spurious_interrupt(regs); | 480 | spurious_interrupt(); |
483 | } | 481 | } |