aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/entry.S
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/kernel/entry.S
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/kernel/entry.S')
-rw-r--r--arch/sparc/kernel/entry.S16
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/sparc/kernel/entry.S b/arch/sparc/kernel/entry.S
index 1879739c9588..d759cf31c8ee 100644
--- a/arch/sparc/kernel/entry.S
+++ b/arch/sparc/kernel/entry.S
@@ -401,6 +401,22 @@ linux_trap_ipi15_sun4d:
4011: b,a 1b 4011: b,a 1b
402 402
403#ifdef CONFIG_SPARC_LEON 403#ifdef CONFIG_SPARC_LEON
404 .globl smpleon_ipi
405 .extern leon_ipi_interrupt
406 /* SMP per-cpu IPI interrupts are handled specially. */
407smpleon_ipi:
408 SAVE_ALL
409 or %l0, PSR_PIL, %g2
410 wr %g2, 0x0, %psr
411 WRITE_PAUSE
412 wr %g2, PSR_ET, %psr
413 WRITE_PAUSE
414 call leonsmp_ipi_interrupt
415 add %sp, STACKFRAME_SZ, %o1 ! pt_regs
416 wr %l0, PSR_ET, %psr
417 WRITE_PAUSE
418 RESTORE_ALL
419
404 .align 4 420 .align 4
405 .globl linux_trap_ipi15_leon 421 .globl linux_trap_ipi15_leon
406linux_trap_ipi15_leon: 422linux_trap_ipi15_leon: