diff options
author | Glauber Costa <gcosta@redhat.com> | 2008-03-27 13:06:02 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-04-17 11:41:32 -0400 |
commit | a9c057c1d1b1080a01004ecac54308365e167b83 (patch) | |
tree | a14daf277587a231e6c4c08304abb29b1b365d49 /include/asm-x86/smp.h | |
parent | 24e8ecffa84dd560e0d4d6fcaeca6950805854e7 (diff) |
x86: merge SMP definitions of smp.h
we merge everything that is inside CONFIG_SMP
to smp.h. They differ a little bit, so we use
CONFIG_X86_32_SMP and CONFIG_X86_64_SMP as markers.
Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/asm-x86/smp.h')
-rw-r--r-- | include/asm-x86/smp.h | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/include/asm-x86/smp.h b/include/asm-x86/smp.h index 21472cea3d6c..57b3d86dd9ed 100644 --- a/include/asm-x86/smp.h +++ b/include/asm-x86/smp.h | |||
@@ -126,8 +126,39 @@ extern unsigned long setup_trampoline(void); | |||
126 | 126 | ||
127 | void smp_store_cpu_info(int id); | 127 | void smp_store_cpu_info(int id); |
128 | #define cpu_physical_id(cpu) per_cpu(x86_cpu_to_apicid, cpu) | 128 | #define cpu_physical_id(cpu) per_cpu(x86_cpu_to_apicid, cpu) |
129 | #else | 129 | |
130 | /* We don't mark CPUs online until __cpu_up(), so we need another measure */ | ||
131 | static inline int num_booting_cpus(void) | ||
132 | { | ||
133 | return cpus_weight(cpu_callout_map); | ||
134 | } | ||
135 | #endif /* CONFIG_SMP */ | ||
136 | |||
137 | #ifdef CONFIG_X86_32_SMP | ||
138 | /* | ||
139 | * This function is needed by all SMP systems. It must _always_ be valid | ||
140 | * from the initial startup. We map APIC_BASE very early in page_setup(), | ||
141 | * so this is correct in the x86 case. | ||
142 | */ | ||
143 | DECLARE_PER_CPU(int, cpu_number); | ||
144 | #define raw_smp_processor_id() (x86_read_percpu(cpu_number)) | ||
145 | extern int safe_smp_processor_id(void); | ||
146 | |||
147 | #elif defined(CONFIG_X86_64_SMP) | ||
148 | #define raw_smp_processor_id() read_pda(cpunumber) | ||
149 | |||
150 | #define stack_smp_processor_id() \ | ||
151 | ({ \ | ||
152 | struct thread_info *ti; \ | ||
153 | __asm__("andq %%rsp,%0; ":"=r" (ti) : "0" (CURRENT_MASK)); \ | ||
154 | ti->cpu; \ | ||
155 | }) | ||
156 | #define safe_smp_processor_id() smp_processor_id() | ||
157 | |||
158 | #else /* !CONFIG_X86_32_SMP && !CONFIG_X86_64_SMP */ | ||
130 | #define cpu_physical_id(cpu) boot_cpu_physical_apicid | 159 | #define cpu_physical_id(cpu) boot_cpu_physical_apicid |
160 | #define safe_smp_processor_id() 0 | ||
161 | #define stack_smp_processor_id() 0 | ||
131 | #endif | 162 | #endif |
132 | 163 | ||
133 | #ifdef CONFIG_X86_32 | 164 | #ifdef CONFIG_X86_32 |