aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/sibyte
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/sibyte')
-rw-r--r--arch/mips/sibyte/bcm1480/irq.c27
-rw-r--r--arch/mips/sibyte/bcm1480/smp.c2
-rw-r--r--arch/mips/sibyte/bcm1480/time.c8
-rw-r--r--arch/mips/sibyte/sb1250/irq.c28
-rw-r--r--arch/mips/sibyte/sb1250/smp.c2
-rw-r--r--arch/mips/sibyte/sb1250/time.c6
6 files changed, 35 insertions, 38 deletions
diff --git a/arch/mips/sibyte/bcm1480/irq.c b/arch/mips/sibyte/bcm1480/irq.c
index a46b75b23ecb..0c00f676b8b3 100644
--- a/arch/mips/sibyte/bcm1480/irq.c
+++ b/arch/mips/sibyte/bcm1480/irq.c
@@ -25,6 +25,7 @@
25#include <linux/kernel_stat.h> 25#include <linux/kernel_stat.h>
26 26
27#include <asm/errno.h> 27#include <asm/errno.h>
28#include <asm/irq_regs.h>
28#include <asm/signal.h> 29#include <asm/signal.h>
29#include <asm/system.h> 30#include <asm/system.h>
30#include <asm/ptrace.h> 31#include <asm/ptrace.h>
@@ -284,8 +285,7 @@ void __init init_bcm1480_irqs(void)
284} 285}
285 286
286 287
287static irqreturn_t bcm1480_dummy_handler(int irq, void *dev_id, 288static irqreturn_t bcm1480_dummy_handler(int irq, void *dev_id)
288 struct pt_regs *regs)
289{ 289{
290 return IRQ_NONE; 290 return IRQ_NONE;
291} 291}
@@ -453,7 +453,7 @@ void __init arch_init_irq(void)
453#define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg))) 453#define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg)))
454#define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg))) 454#define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg)))
455 455
456void bcm1480_kgdb_interrupt(struct pt_regs *regs) 456static void bcm1480_kgdb_interrupt(void)
457{ 457{
458 /* 458 /*
459 * Clear break-change status (allow some time for the remote 459 * Clear break-change status (allow some time for the remote
@@ -464,16 +464,15 @@ void bcm1480_kgdb_interrupt(struct pt_regs *regs)
464 mdelay(500); 464 mdelay(500);
465 duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT | 465 duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT |
466 M_DUART_RX_EN | M_DUART_TX_EN); 466 M_DUART_RX_EN | M_DUART_TX_EN);
467 set_async_breakpoint(&regs->cp0_epc); 467 set_async_breakpoint(&get_irq_regs()->cp0_epc);
468} 468}
469 469
470#endif /* CONFIG_KGDB */ 470#endif /* CONFIG_KGDB */
471 471
472extern void bcm1480_timer_interrupt(struct pt_regs *regs); 472extern void bcm1480_timer_interrupt(void);
473extern void bcm1480_mailbox_interrupt(struct pt_regs *regs); 473extern void bcm1480_mailbox_interrupt(void);
474extern void bcm1480_kgdb_interrupt(struct pt_regs *regs);
475 474
476asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 475asmlinkage void plat_irq_dispatch(void)
477{ 476{
478 unsigned int pending; 477 unsigned int pending;
479 478
@@ -486,21 +485,21 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
486 485
487#ifdef CONFIG_SIBYTE_BCM1480_PROF 486#ifdef CONFIG_SIBYTE_BCM1480_PROF
488 if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ 487 if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */
489 sbprof_cpu_intr(exception_epc(regs)); 488 sbprof_cpu_intr();
490 else 489 else
491#endif 490#endif
492 491
493 if (pending & CAUSEF_IP4) 492 if (pending & CAUSEF_IP4)
494 bcm1480_timer_interrupt(regs); 493 bcm1480_timer_interrupt();
495 494
496#ifdef CONFIG_SMP 495#ifdef CONFIG_SMP
497 else if (pending & CAUSEF_IP3) 496 else if (pending & CAUSEF_IP3)
498 bcm1480_mailbox_interrupt(regs); 497 bcm1480_mailbox_interrupt();
499#endif 498#endif
500 499
501#ifdef CONFIG_KGDB 500#ifdef CONFIG_KGDB
502 else if (pending & CAUSEF_IP6) 501 else if (pending & CAUSEF_IP6)
503 bcm1480_kgdb_interrupt(regs); /* KGDB (uart 1) */ 502 bcm1480_kgdb_interrupt(); /* KGDB (uart 1) */
504#endif 503#endif
505 504
506 else if (pending & CAUSEF_IP2) { 505 else if (pending & CAUSEF_IP2) {
@@ -521,9 +520,9 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
521 520
522 if (mask_h) { 521 if (mask_h) {
523 if (mask_h ^ 1) 522 if (mask_h ^ 1)
524 do_IRQ(fls64(mask_h) - 1, regs); 523 do_IRQ(fls64(mask_h) - 1);
525 else 524 else
526 do_IRQ(63 + fls64(mask_l), regs); 525 do_IRQ(63 + fls64(mask_l));
527 } 526 }
528 } 527 }
529} 528}
diff --git a/arch/mips/sibyte/bcm1480/smp.c b/arch/mips/sibyte/bcm1480/smp.c
index 584a4b33faac..6eac36d1b8c8 100644
--- a/arch/mips/sibyte/bcm1480/smp.c
+++ b/arch/mips/sibyte/bcm1480/smp.c
@@ -88,7 +88,7 @@ void core_send_ipi(int cpu, unsigned int action)
88 __raw_writeq((((u64)action)<< 48), mailbox_0_set_regs[cpu]); 88 __raw_writeq((((u64)action)<< 48), mailbox_0_set_regs[cpu]);
89} 89}
90 90
91void bcm1480_mailbox_interrupt(struct pt_regs *regs) 91void bcm1480_mailbox_interrupt(void)
92{ 92{
93 int cpu = smp_processor_id(); 93 int cpu = smp_processor_id();
94 unsigned int action; 94 unsigned int action;
diff --git a/arch/mips/sibyte/bcm1480/time.c b/arch/mips/sibyte/bcm1480/time.c
index 7e088f6c4a86..f228f711dc34 100644
--- a/arch/mips/sibyte/bcm1480/time.c
+++ b/arch/mips/sibyte/bcm1480/time.c
@@ -100,10 +100,10 @@ void bcm1480_time_init(void)
100 100
101#include <asm/sibyte/sb1250.h> 101#include <asm/sibyte/sb1250.h>
102 102
103void bcm1480_timer_interrupt(struct pt_regs *regs) 103void bcm1480_timer_interrupt(void)
104{ 104{
105 int cpu = smp_processor_id(); 105 int cpu = smp_processor_id();
106 int irq = K_BCM1480_INT_TIMER_0+cpu; 106 int irq = K_BCM1480_INT_TIMER_0 + cpu;
107 107
108 /* Reset the timer */ 108 /* Reset the timer */
109 __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS, 109 __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS,
@@ -113,13 +113,13 @@ void bcm1480_timer_interrupt(struct pt_regs *regs)
113 /* 113 /*
114 * CPU 0 handles the global timer interrupt job 114 * CPU 0 handles the global timer interrupt job
115 */ 115 */
116 ll_timer_interrupt(irq, regs); 116 ll_timer_interrupt(irq);
117 } 117 }
118 else { 118 else {
119 /* 119 /*
120 * other CPUs should just do profiling and process accounting 120 * other CPUs should just do profiling and process accounting
121 */ 121 */
122 ll_local_timer_interrupt(irq, regs); 122 ll_local_timer_interrupt(irq);
123 } 123 }
124} 124}
125 125
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
257static irqreturn_t sb1250_dummy_handler(int irq, void *dev_id, 257static 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
406static void sb1250_kgdb_interrupt(struct pt_regs *regs) 405static 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(&regs->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
422extern void sb1250_timer_interrupt(struct pt_regs *regs); 421extern void sb1250_timer_interrupt(void);
423extern void sb1250_mailbox_interrupt(struct pt_regs *regs); 422extern void sb1250_mailbox_interrupt(void);
424extern void sb1250_kgdb_interrupt(struct pt_regs *regs);
425 423
426asmlinkage void plat_irq_dispatch(struct pt_regs *regs) 424asmlinkage 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}
diff --git a/arch/mips/sibyte/sb1250/smp.c b/arch/mips/sibyte/sb1250/smp.c
index f859db02d3c9..c38e1f34460d 100644
--- a/arch/mips/sibyte/sb1250/smp.c
+++ b/arch/mips/sibyte/sb1250/smp.c
@@ -76,7 +76,7 @@ void core_send_ipi(int cpu, unsigned int action)
76 __raw_writeq((((u64)action) << 48), mailbox_set_regs[cpu]); 76 __raw_writeq((((u64)action) << 48), mailbox_set_regs[cpu]);
77} 77}
78 78
79void sb1250_mailbox_interrupt(struct pt_regs *regs) 79void sb1250_mailbox_interrupt(void)
80{ 80{
81 int cpu = smp_processor_id(); 81 int cpu = smp_processor_id();
82 unsigned int action; 82 unsigned int action;
diff --git a/arch/mips/sibyte/sb1250/time.c b/arch/mips/sibyte/sb1250/time.c
index 4b669dc86ef4..0d17aec03dd7 100644
--- a/arch/mips/sibyte/sb1250/time.c
+++ b/arch/mips/sibyte/sb1250/time.c
@@ -125,7 +125,7 @@ void sb1250_time_init(void)
125 */ 125 */
126} 126}
127 127
128void sb1250_timer_interrupt(struct pt_regs *regs) 128void sb1250_timer_interrupt(void)
129{ 129{
130 int cpu = smp_processor_id(); 130 int cpu = smp_processor_id();
131 int irq = K_INT_TIMER_0 + cpu; 131 int irq = K_INT_TIMER_0 + cpu;
@@ -138,13 +138,13 @@ void sb1250_timer_interrupt(struct pt_regs *regs)
138 /* 138 /*
139 * CPU 0 handles the global timer interrupt job 139 * CPU 0 handles the global timer interrupt job
140 */ 140 */
141 ll_timer_interrupt(irq, regs); 141 ll_timer_interrupt(irq);
142 } 142 }
143 else { 143 else {
144 /* 144 /*
145 * other CPUs should just do profiling and process accounting 145 * other CPUs should just do profiling and process accounting
146 */ 146 */
147 ll_local_timer_interrupt(irq, regs); 147 ll_local_timer_interrupt(irq);
148 } 148 }
149} 149}
150 150