aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2008-08-06 05:02:48 -0400
committerPaul Mundt <lethal@linux-sh.org>2008-09-07 21:35:02 -0400
commit173a44dd1f406e9aa6fcf46c83b7c972d10ec930 (patch)
tree61784c58c8e566f3717914761aeff5d8cc7c75be /arch/sh/kernel
parent04ec080dcaad7d3c6d0b40b599c8e63da618f784 (diff)
sh: smp: Provide a generic IPI handler.
This provides a generic smp_message_recv() routine (based on the PPC one), that IPI IRQs can wrap in to. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel')
-rw-r--r--arch/sh/kernel/smp.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c
index 60c50841143e..ebfdd364544f 100644
--- a/arch/sh/kernel/smp.c
+++ b/arch/sh/kernel/smp.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * SMP support for the SuperH processors. 4 * SMP support for the SuperH processors.
5 * 5 *
6 * Copyright (C) 2002 - 2007 Paul Mundt 6 * Copyright (C) 2002 - 2008 Paul Mundt
7 * Copyright (C) 2006 - 2007 Akio Idehara 7 * Copyright (C) 2006 - 2007 Akio Idehara
8 * 8 *
9 * This file is subject to the terms and conditions of the GNU General Public 9 * This file is subject to the terms and conditions of the GNU General Public
@@ -184,6 +184,24 @@ void arch_send_call_function_single_ipi(int cpu)
184 plat_send_ipi(cpu, SMP_MSG_FUNCTION_SINGLE); 184 plat_send_ipi(cpu, SMP_MSG_FUNCTION_SINGLE);
185} 185}
186 186
187void smp_message_recv(unsigned int msg)
188{
189 switch (msg) {
190 case SMP_MSG_FUNCTION:
191 generic_smp_call_function_interrupt();
192 break;
193 case SMP_MSG_RESCHEDULE:
194 break;
195 case SMP_MSG_FUNCTION_SINGLE:
196 generic_smp_call_function_single_interrupt();
197 break;
198 default:
199 printk(KERN_WARNING "SMP %d: %s(): unknown IPI %d\n",
200 smp_processor_id(), __func__, msg);
201 break;
202 }
203}
204
187/* Not really SMP stuff ... */ 205/* Not really SMP stuff ... */
188int setup_profiling_timer(unsigned int multiplier) 206int setup_profiling_timer(unsigned int multiplier)
189{ 207{