1367b8112SChris Zankel /* 2367b8112SChris Zankel * This file is subject to the terms and conditions of the GNU General Public 3367b8112SChris Zankel * License. See the file "COPYING" in the main directory of this archive 4367b8112SChris Zankel * for more details. 5367b8112SChris Zankel * 6f615136cSMax Filippov * Copyright (C) 2001 - 2013 Tensilica Inc. 7367b8112SChris Zankel */ 8367b8112SChris Zankel 9367b8112SChris Zankel #ifndef _XTENSA_SMP_H 10367b8112SChris Zankel #define _XTENSA_SMP_H 11367b8112SChris Zankel 12f615136cSMax Filippov #ifdef CONFIG_SMP 13367b8112SChris Zankel 14f615136cSMax Filippov #define raw_smp_processor_id() (current_thread_info()->cpu) 15367b8112SChris Zankel #define cpu_logical_map(cpu) (cpu) 16367b8112SChris Zankel 17f615136cSMax Filippov struct start_info { 18f615136cSMax Filippov unsigned long stack; 19f615136cSMax Filippov }; 20f615136cSMax Filippov extern struct start_info start_info; 21f615136cSMax Filippov 22f615136cSMax Filippov struct cpumask; 23f615136cSMax Filippov void arch_send_call_function_ipi_mask(const struct cpumask *mask); 24f615136cSMax Filippov void arch_send_call_function_single_ipi(int cpu); 25f615136cSMax Filippov 26*0f95df62SRandy Dunlap void secondary_start_kernel(void); 27f615136cSMax Filippov void smp_init_cpus(void); 28f615136cSMax Filippov void secondary_init_irq(void); 29f615136cSMax Filippov void ipi_init(void); 30f615136cSMax Filippov struct seq_file; 31f615136cSMax Filippov void show_ipi_list(struct seq_file *p, int prec); 32f615136cSMax Filippov 3349b424feSMax Filippov #ifdef CONFIG_HOTPLUG_CPU 3449b424feSMax Filippov 3549b424feSMax Filippov void __cpu_die(unsigned int cpu); 3649b424feSMax Filippov int __cpu_disable(void); 3769dee6f0SJosh Poimboeuf void __noreturn cpu_die(void); 3849b424feSMax Filippov void cpu_restart(void); 3949b424feSMax Filippov 4049b424feSMax Filippov #endif /* CONFIG_HOTPLUG_CPU */ 4149b424feSMax Filippov 42f615136cSMax Filippov #endif /* CONFIG_SMP */ 43f615136cSMax Filippov 44367b8112SChris Zankel #endif /* _XTENSA_SMP_H */ 45