aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/include
diff options
context:
space:
mode:
authorDaniel Hellstrom <daniel@gaisler.com>2011-05-01 20:08:52 -0400
committerDavid S. Miller <davem@davemloft.net>2011-05-16 16:07:43 -0400
commit1ca0c808c60f171c1949b0e7f3a4c0516855f7a0 (patch)
treef1183b243d2e8ed42006891d80e0d077cabaf5e1 /arch/sparc/include
parentd6d048192b1d22cb8f09da0cc936095ec2cb969c (diff)
sparc32,leon: Implemented SMP IPIs for LEON CPU
This patch implements SMP IPIs on LEON using software generated IRQs to signal between CPUs. The IPI IRQ number is set by using the ipi_num property in the device tree, or defaults to 13. LEON SMP systems should reserve IRQ 13 (and IRQ 15) to Linux in order for the defaults to work. Signed-off-by: Daniel Hellstrom <daniel@gaisler.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/include')
-rw-r--r--arch/sparc/include/asm/leon.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/sparc/include/asm/leon.h b/arch/sparc/include/asm/leon.h
index f1598ca255f0..6bdaf1e43d2a 100644
--- a/arch/sparc/include/asm/leon.h
+++ b/arch/sparc/include/asm/leon.h
@@ -215,7 +215,7 @@ static inline int sparc_leon3_cpuid(void)
215#endif /*!__ASSEMBLY__*/ 215#endif /*!__ASSEMBLY__*/
216 216
217#ifdef CONFIG_SMP 217#ifdef CONFIG_SMP
218# define LEON3_IRQ_RESCHEDULE 13 218# define LEON3_IRQ_IPI_DEFAULT 13
219# define LEON3_IRQ_TICKER (leon3_ticker_irq) 219# define LEON3_IRQ_TICKER (leon3_ticker_irq)
220# define LEON3_IRQ_CROSS_CALL 15 220# define LEON3_IRQ_CROSS_CALL 15
221#endif 221#endif
@@ -351,9 +351,11 @@ void leon_enable_irq_cpu(unsigned int irq_nr, unsigned int cpu);
351extern irqreturn_t leon_percpu_timer_interrupt(int irq, void *unused); 351extern irqreturn_t leon_percpu_timer_interrupt(int irq, void *unused);
352 352
353extern unsigned int real_irq_entry[]; 353extern unsigned int real_irq_entry[];
354extern unsigned int smpleon_ipi[];
354extern unsigned int patchme_maybe_smp_msg[]; 355extern unsigned int patchme_maybe_smp_msg[];
355extern unsigned int t_nmi[], linux_trap_ipi15_leon[]; 356extern unsigned int t_nmi[], linux_trap_ipi15_leon[];
356extern unsigned int linux_trap_ipi15_sun4m[]; 357extern unsigned int linux_trap_ipi15_sun4m[];
358extern int leon_ipi_irq;
357 359
358#endif /* CONFIG_SMP */ 360#endif /* CONFIG_SMP */
359 361