aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/smp.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/kernel/smp.c')
-rw-r--r--arch/sh/kernel/smp.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c
index ebfdd364544f..9cb3734dbd49 100644
--- a/arch/sh/kernel/smp.c
+++ b/arch/sh/kernel/smp.c
@@ -184,6 +184,21 @@ 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_timer_broadcast(cpumask_t mask)
188{
189 int cpu;
190
191 for_each_cpu_mask(cpu, mask)
192 plat_send_ipi(cpu, SMP_MSG_TIMER);
193}
194
195static void ipi_timer(void)
196{
197 irq_enter();
198 /* XXX ... */
199 irq_exit();
200}
201
187void smp_message_recv(unsigned int msg) 202void smp_message_recv(unsigned int msg)
188{ 203{
189 switch (msg) { 204 switch (msg) {
@@ -195,6 +210,9 @@ void smp_message_recv(unsigned int msg)
195 case SMP_MSG_FUNCTION_SINGLE: 210 case SMP_MSG_FUNCTION_SINGLE:
196 generic_smp_call_function_single_interrupt(); 211 generic_smp_call_function_single_interrupt();
197 break; 212 break;
213 case SMP_MSG_TIMER:
214 ipi_timer();
215 break;
198 default: 216 default:
199 printk(KERN_WARNING "SMP %d: %s(): unknown IPI %d\n", 217 printk(KERN_WARNING "SMP %d: %s(): unknown IPI %d\n",
200 smp_processor_id(), __func__, msg); 218 smp_processor_id(), __func__, msg);