diff options
Diffstat (limited to 'include/asm-x86/percpu.h')
-rw-r--r-- | include/asm-x86/percpu.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/include/asm-x86/percpu.h b/include/asm-x86/percpu.h index 736fc3bb8e1e..912a3a17b9db 100644 --- a/include/asm-x86/percpu.h +++ b/include/asm-x86/percpu.h | |||
@@ -143,4 +143,50 @@ do { \ | |||
143 | #define x86_or_percpu(var, val) percpu_to_op("or", per_cpu__##var, val) | 143 | #define x86_or_percpu(var, val) percpu_to_op("or", per_cpu__##var, val) |
144 | #endif /* !__ASSEMBLY__ */ | 144 | #endif /* !__ASSEMBLY__ */ |
145 | #endif /* !CONFIG_X86_64 */ | 145 | #endif /* !CONFIG_X86_64 */ |
146 | |||
147 | #ifdef CONFIG_SMP | ||
148 | |||
149 | /* | ||
150 | * Define the "EARLY_PER_CPU" macros. These are used for some per_cpu | ||
151 | * variables that are initialized and accessed before there are per_cpu | ||
152 | * areas allocated. | ||
153 | */ | ||
154 | |||
155 | #define DEFINE_EARLY_PER_CPU(_type, _name, _initvalue) \ | ||
156 | DEFINE_PER_CPU(_type, _name) = _initvalue; \ | ||
157 | __typeof__(_type) _name##_early_map[NR_CPUS] __initdata = \ | ||
158 | { [0 ... NR_CPUS-1] = _initvalue }; \ | ||
159 | __typeof__(_type) *_name##_early_ptr = _name##_early_map | ||
160 | |||
161 | #define EXPORT_EARLY_PER_CPU_SYMBOL(_name) \ | ||
162 | EXPORT_PER_CPU_SYMBOL(_name) | ||
163 | |||
164 | #define DECLARE_EARLY_PER_CPU(_type, _name) \ | ||
165 | DECLARE_PER_CPU(_type, _name); \ | ||
166 | extern __typeof__(_type) *_name##_early_ptr; \ | ||
167 | extern __typeof__(_type) _name##_early_map[] | ||
168 | |||
169 | #define early_per_cpu_ptr(_name) (_name##_early_ptr) | ||
170 | #define early_per_cpu_map(_name, _idx) (_name##_early_map[_idx]) | ||
171 | #define early_per_cpu(_name, _cpu) \ | ||
172 | (early_per_cpu_ptr(_name) ? \ | ||
173 | early_per_cpu_ptr(_name)[_cpu] : \ | ||
174 | per_cpu(_name, _cpu)) | ||
175 | |||
176 | #else /* !CONFIG_SMP */ | ||
177 | #define DEFINE_EARLY_PER_CPU(_type, _name, _initvalue) \ | ||
178 | DEFINE_PER_CPU(_type, _name) = _initvalue | ||
179 | |||
180 | #define EXPORT_EARLY_PER_CPU_SYMBOL(_name) \ | ||
181 | EXPORT_PER_CPU_SYMBOL(_name) | ||
182 | |||
183 | #define DECLARE_EARLY_PER_CPU(_type, _name) \ | ||
184 | DECLARE_PER_CPU(_type, _name) | ||
185 | |||
186 | #define early_per_cpu(_name, _cpu) per_cpu(_name, _cpu) | ||
187 | #define early_per_cpu_ptr(_name) NULL | ||
188 | /* no early_per_cpu_map() */ | ||
189 | |||
190 | #endif /* !CONFIG_SMP */ | ||
191 | |||
146 | #endif /* _ASM_X86_PERCPU_H_ */ | 192 | #endif /* _ASM_X86_PERCPU_H_ */ |