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 736fc3bb8e1..912a3a17b9d 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_ */ |
