Merge branch 's3c24xx-updates' of git://git.fluff.org/bjdooks/linux
[sfrench/cifs-2.6.git] / arch / sparc / kernel / entry.S
index f41ecc5ac0b41f1d72375fe8e9efb1105412f89c..ec9c7bc67d2134706b3fa098a8ecbe1ccd5346b9 100644 (file)
@@ -400,6 +400,39 @@ linux_trap_ipi15_sun4d:
        /* FIXME */
 1:     b,a     1b
 
+#ifdef CONFIG_SPARC_LEON
+
+       .globl  smpleon_ticker
+       /* SMP per-cpu ticker interrupts are handled specially. */
+smpleon_ticker:
+        SAVE_ALL
+       or      %l0, PSR_PIL, %g2
+       wr      %g2, 0x0, %psr
+       WRITE_PAUSE
+       wr      %g2, PSR_ET, %psr
+       WRITE_PAUSE
+       call    leon_percpu_timer_interrupt
+        add    %sp, STACKFRAME_SZ, %o0
+       wr      %l0, PSR_ET, %psr
+       WRITE_PAUSE
+       RESTORE_ALL
+
+       .align  4
+       .globl  linux_trap_ipi15_leon
+linux_trap_ipi15_leon:
+       SAVE_ALL
+       or      %l0, PSR_PIL, %l4
+       wr      %l4, 0x0, %psr
+       WRITE_PAUSE
+       wr      %l4, PSR_ET, %psr
+       WRITE_PAUSE
+       call    leon_cross_call_irq
+        nop
+       b       ret_trap_lockless_ipi
+        clr    %l6
+
+#endif /* CONFIG_SPARC_LEON */
+
 #endif /* CONFIG_SMP */
 
        /* This routine handles illegal instructions and privileged