19a8fd558SChris Zankel /* 29a8fd558SChris Zankel * This file is subject to the terms and conditions of the GNU General Public 39a8fd558SChris Zankel * License. See the file "COPYING" in the main directory of this archive 49a8fd558SChris Zankel * for more details. 59a8fd558SChris Zankel * 6f615136cSMax Filippov * Copyright (C) 2001 - 2013 Tensilica Inc. 79a8fd558SChris Zankel */ 89a8fd558SChris Zankel 99a8fd558SChris Zankel #ifndef _XTENSA_SMP_H 109a8fd558SChris Zankel #define _XTENSA_SMP_H 119a8fd558SChris Zankel 12f615136cSMax Filippov #ifdef CONFIG_SMP 139a8fd558SChris Zankel 14f615136cSMax Filippov #define raw_smp_processor_id() (current_thread_info()->cpu) 159a8fd558SChris Zankel #define cpu_logical_map(cpu) (cpu) 169a8fd558SChris 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 449a8fd558SChris Zankel #endif /* _XTENSA_SMP_H */ 45