diff options
author | Daniel Hellstrom <daniel@gaisler.com> | 2011-05-01 20:08:52 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-05-16 16:07:43 -0400 |
commit | 1ca0c808c60f171c1949b0e7f3a4c0516855f7a0 (patch) | |
tree | f1183b243d2e8ed42006891d80e0d077cabaf5e1 /arch/sparc/include | |
parent | d6d048192b1d22cb8f09da0cc936095ec2cb969c (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.h | 4 |
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); | |||
351 | extern irqreturn_t leon_percpu_timer_interrupt(int irq, void *unused); | 351 | extern irqreturn_t leon_percpu_timer_interrupt(int irq, void *unused); |
352 | 352 | ||
353 | extern unsigned int real_irq_entry[]; | 353 | extern unsigned int real_irq_entry[]; |
354 | extern unsigned int smpleon_ipi[]; | ||
354 | extern unsigned int patchme_maybe_smp_msg[]; | 355 | extern unsigned int patchme_maybe_smp_msg[]; |
355 | extern unsigned int t_nmi[], linux_trap_ipi15_leon[]; | 356 | extern unsigned int t_nmi[], linux_trap_ipi15_leon[]; |
356 | extern unsigned int linux_trap_ipi15_sun4m[]; | 357 | extern unsigned int linux_trap_ipi15_sun4m[]; |
358 | extern int leon_ipi_irq; | ||
357 | 359 | ||
358 | #endif /* CONFIG_SMP */ | 360 | #endif /* CONFIG_SMP */ |
359 | 361 | ||