diff options
Diffstat (limited to 'include/asm-generic')
-rw-r--r-- | include/asm-generic/percpu.h | 8 | ||||
-rw-r--r-- | include/asm-generic/vmlinux.lds.h | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h index d984a9041436..d85172e9ed45 100644 --- a/include/asm-generic/percpu.h +++ b/include/asm-generic/percpu.h | |||
@@ -14,6 +14,11 @@ extern unsigned long __per_cpu_offset[NR_CPUS]; | |||
14 | #define DEFINE_PER_CPU(type, name) \ | 14 | #define DEFINE_PER_CPU(type, name) \ |
15 | __attribute__((__section__(".data.percpu"))) __typeof__(type) per_cpu__##name | 15 | __attribute__((__section__(".data.percpu"))) __typeof__(type) per_cpu__##name |
16 | 16 | ||
17 | #define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \ | ||
18 | __attribute__((__section__(".data.percpu.shared_aligned"))) \ | ||
19 | __typeof__(type) per_cpu__##name \ | ||
20 | ____cacheline_aligned_in_smp | ||
21 | |||
17 | /* var is in discarded region: offset to particular copy we want */ | 22 | /* var is in discarded region: offset to particular copy we want */ |
18 | #define per_cpu(var, cpu) (*({ \ | 23 | #define per_cpu(var, cpu) (*({ \ |
19 | extern int simple_identifier_##var(void); \ | 24 | extern int simple_identifier_##var(void); \ |
@@ -34,6 +39,9 @@ do { \ | |||
34 | #define DEFINE_PER_CPU(type, name) \ | 39 | #define DEFINE_PER_CPU(type, name) \ |
35 | __typeof__(type) per_cpu__##name | 40 | __typeof__(type) per_cpu__##name |
36 | 41 | ||
42 | #define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \ | ||
43 | DEFINE_PER_CPU(type, name) | ||
44 | |||
37 | #define per_cpu(var, cpu) (*((void)(cpu), &per_cpu__##var)) | 45 | #define per_cpu(var, cpu) (*((void)(cpu), &per_cpu__##var)) |
38 | #define __get_cpu_var(var) per_cpu__##var | 46 | #define __get_cpu_var(var) per_cpu__##var |
39 | #define __raw_get_cpu_var(var) per_cpu__##var | 47 | #define __raw_get_cpu_var(var) per_cpu__##var |
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 84155eb67f1d..a2b09ed852ad 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
@@ -245,3 +245,11 @@ | |||
245 | *(.initcall7.init) \ | 245 | *(.initcall7.init) \ |
246 | *(.initcall7s.init) | 246 | *(.initcall7s.init) |
247 | 247 | ||
248 | #define PERCPU(align) \ | ||
249 | . = ALIGN(align); \ | ||
250 | __per_cpu_start = .; \ | ||
251 | .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { \ | ||
252 | *(.data.percpu) \ | ||
253 | *(.data.percpu.shared_aligned) \ | ||
254 | } \ | ||
255 | __per_cpu_end = .; | ||