xref: /openbmc/linux/arch/sparc/include/asm/smp_64.h (revision cb1b8209815594613650772eeb889c170107dad4)
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>
30a439fe51SSam Ravnborg #include <asm/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 
52*cb1b8209SSam Ravnborg struct seq_file;
53*cb1b8209SSam Ravnborg void smp_bogo(struct seq_file *);
54*cb1b8209SSam Ravnborg void smp_info(struct seq_file *);
55*cb1b8209SSam 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