xref: /openbmc/linux/arch/arm/mach-shmobile/platsmp.c (revision 3eb66e91a25497065c5322b1268cbc3953642227)
1  // SPDX-License-Identifier: GPL-2.0
2  /*
3   * SMP support for R-Mobile / SH-Mobile
4   *
5   * Copyright (C) 2010  Magnus Damm
6   * Copyright (C) 2011  Paul Mundt
7   *
8   * Based on vexpress, Copyright (C) 2002 ARM Ltd, All Rights Reserved
9   */
10  #include <linux/init.h>
11  #include <asm/cacheflush.h>
12  #include <asm/smp_plat.h>
13  #include "common.h"
14  
15  extern unsigned long shmobile_smp_fn[];
16  extern unsigned long shmobile_smp_arg[];
17  extern unsigned long shmobile_smp_mpidr[];
18  
shmobile_smp_hook(unsigned int cpu,unsigned long fn,unsigned long arg)19  void shmobile_smp_hook(unsigned int cpu, unsigned long fn, unsigned long arg)
20  {
21  	shmobile_smp_fn[cpu] = 0;
22  	flush_cache_all();
23  
24  	shmobile_smp_mpidr[cpu] = cpu_logical_map(cpu);
25  	shmobile_smp_fn[cpu] = fn;
26  	shmobile_smp_arg[cpu] = arg;
27  	flush_cache_all();
28  }
29  
30  #ifdef CONFIG_HOTPLUG_CPU
shmobile_smp_cpu_can_disable(unsigned int cpu)31  bool shmobile_smp_cpu_can_disable(unsigned int cpu)
32  {
33  	return true; /* Hotplug of any CPU is supported */
34  }
35  #endif
36