1a439fe51SSam Ravnborg /* smp.h: Sparc64 specific SMP stuff. 2a439fe51SSam Ravnborg * 3a439fe51SSam Ravnborg * Copyright (C) 1996, 2008 David S. Miller (davem@davemloft.net) 4a439fe51SSam Ravnborg */ 5a439fe51SSam Ravnborg 6a439fe51SSam Ravnborg #ifndef _SPARC64_SMP_H 7a439fe51SSam Ravnborg #define _SPARC64_SMP_H 8a439fe51SSam Ravnborg 9a439fe51SSam Ravnborg #include <linux/threads.h> 10a439fe51SSam Ravnborg #include <asm/asi.h> 11a439fe51SSam Ravnborg #include <asm/starfire.h> 12a439fe51SSam Ravnborg #include <asm/spitfire.h> 13a439fe51SSam Ravnborg 14a439fe51SSam Ravnborg #ifndef __ASSEMBLY__ 15a439fe51SSam Ravnborg 16a439fe51SSam Ravnborg #include <linux/cpumask.h> 17a439fe51SSam Ravnborg #include <linux/cache.h> 18a439fe51SSam Ravnborg 19a439fe51SSam Ravnborg #endif /* !(__ASSEMBLY__) */ 20a439fe51SSam Ravnborg 21a439fe51SSam Ravnborg #ifdef CONFIG_SMP 22a439fe51SSam Ravnborg 23a439fe51SSam Ravnborg #ifndef __ASSEMBLY__ 24a439fe51SSam Ravnborg 25a439fe51SSam Ravnborg /* 26a439fe51SSam Ravnborg * Private routines/data 27a439fe51SSam Ravnborg */ 28a439fe51SSam Ravnborg 29a439fe51SSam Ravnborg #include <linux/bitops.h> 30*60063497SArun Sharma #include <linux/atomic.h> 31a439fe51SSam Ravnborg #include <asm/percpu.h> 32a439fe51SSam Ravnborg 33a439fe51SSam Ravnborg DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); 34a439fe51SSam Ravnborg extern cpumask_t cpu_core_map[NR_CPUS]; 35a439fe51SSam Ravnborg extern int sparc64_multi_core; 36a439fe51SSam Ravnborg 37a439fe51SSam Ravnborg extern void arch_send_call_function_single_ipi(int cpu); 38f46df02aSRusty Russell extern void arch_send_call_function_ipi_mask(const struct cpumask *mask); 39a439fe51SSam Ravnborg 40a439fe51SSam Ravnborg /* 41a439fe51SSam Ravnborg * General functions that each host system must provide. 42a439fe51SSam Ravnborg */ 43a439fe51SSam Ravnborg 44a439fe51SSam Ravnborg extern int hard_smp_processor_id(void); 45a439fe51SSam Ravnborg #define raw_smp_processor_id() (current_thread_info()->cpu) 46a439fe51SSam Ravnborg 47a439fe51SSam Ravnborg extern void smp_fill_in_sib_core_maps(void); 48a439fe51SSam Ravnborg extern void cpu_play_dead(void); 49a439fe51SSam Ravnborg 50a439fe51SSam Ravnborg extern void smp_fetch_global_regs(void); 51a439fe51SSam Ravnborg 52cb1b8209SSam Ravnborg struct seq_file; 53cb1b8209SSam Ravnborg void smp_bogo(struct seq_file *); 54cb1b8209SSam Ravnborg void smp_info(struct seq_file *); 55cb1b8209SSam Ravnborg 56a439fe51SSam Ravnborg #ifdef CONFIG_HOTPLUG_CPU 57a439fe51SSam Ravnborg extern int __cpu_disable(void); 58a439fe51SSam Ravnborg extern void __cpu_die(unsigned int cpu); 59a439fe51SSam Ravnborg #endif 60a439fe51SSam Ravnborg 61a439fe51SSam Ravnborg #endif /* !(__ASSEMBLY__) */ 62a439fe51SSam Ravnborg 63a439fe51SSam Ravnborg #else 64a439fe51SSam Ravnborg 65a439fe51SSam Ravnborg #define hard_smp_processor_id() 0 66a439fe51SSam Ravnborg #define smp_fill_in_sib_core_maps() do { } while (0) 67a439fe51SSam Ravnborg #define smp_fetch_global_regs() do { } while (0) 68a439fe51SSam Ravnborg 69a439fe51SSam Ravnborg #endif /* !(CONFIG_SMP) */ 70a439fe51SSam Ravnborg 71a439fe51SSam Ravnborg #endif /* !(_SPARC64_SMP_H) */ 72