18c2ecf20Sopenharmony_ci/*
28c2ecf20Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public
38c2ecf20Sopenharmony_ci * License.  See the file "COPYING" in the main directory of this archive
48c2ecf20Sopenharmony_ci * for more details.
58c2ecf20Sopenharmony_ci *
68c2ecf20Sopenharmony_ci * Copyright (C) 2001 - 2013 Tensilica Inc.
78c2ecf20Sopenharmony_ci */
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci#ifndef _XTENSA_SMP_H
108c2ecf20Sopenharmony_ci#define _XTENSA_SMP_H
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#ifdef CONFIG_SMP
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci#define raw_smp_processor_id()	(current_thread_info()->cpu)
158c2ecf20Sopenharmony_ci#define cpu_logical_map(cpu)	(cpu)
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_cistruct start_info {
188c2ecf20Sopenharmony_ci	unsigned long stack;
198c2ecf20Sopenharmony_ci};
208c2ecf20Sopenharmony_ciextern struct start_info start_info;
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_cistruct cpumask;
238c2ecf20Sopenharmony_civoid arch_send_call_function_ipi_mask(const struct cpumask *mask);
248c2ecf20Sopenharmony_civoid arch_send_call_function_single_ipi(int cpu);
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_civoid smp_init_cpus(void);
278c2ecf20Sopenharmony_civoid secondary_init_irq(void);
288c2ecf20Sopenharmony_civoid ipi_init(void);
298c2ecf20Sopenharmony_cistruct seq_file;
308c2ecf20Sopenharmony_civoid show_ipi_list(struct seq_file *p, int prec);
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci#ifdef CONFIG_HOTPLUG_CPU
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_civoid __cpu_die(unsigned int cpu);
358c2ecf20Sopenharmony_ciint __cpu_disable(void);
368c2ecf20Sopenharmony_civoid cpu_die(void);
378c2ecf20Sopenharmony_civoid cpu_restart(void);
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci#endif /* CONFIG_HOTPLUG_CPU */
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci#endif /* CONFIG_SMP */
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci#endif	/* _XTENSA_SMP_H */
44