diff options
Diffstat (limited to 'include/asm-generic')
-rw-r--r-- | include/asm-generic/bug.h | 2 | ||||
-rw-r--r-- | include/asm-generic/percpu.h | 71 | ||||
-rw-r--r-- | include/asm-generic/siginfo.h | 2 | ||||
-rw-r--r-- | include/asm-generic/vmlinux.lds.h | 7 |
4 files changed, 23 insertions, 59 deletions
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h index 37b82cb96c89..e727fe0d1451 100644 --- a/include/asm-generic/bug.h +++ b/include/asm-generic/bug.h | |||
@@ -88,7 +88,7 @@ extern void warn_slowpath(const char *file, const int line, | |||
88 | 88 | ||
89 | #else /* !CONFIG_BUG */ | 89 | #else /* !CONFIG_BUG */ |
90 | #ifndef HAVE_ARCH_BUG | 90 | #ifndef HAVE_ARCH_BUG |
91 | #define BUG() | 91 | #define BUG() do {} while(0) |
92 | #endif | 92 | #endif |
93 | 93 | ||
94 | #ifndef HAVE_ARCH_BUG_ON | 94 | #ifndef HAVE_ARCH_BUG_ON |
diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h index 00f45ff081a6..d7d50d7ee51e 100644 --- a/include/asm-generic/percpu.h +++ b/include/asm-generic/percpu.h | |||
@@ -1,13 +1,9 @@ | |||
1 | #ifndef _ASM_GENERIC_PERCPU_H_ | 1 | #ifndef _ASM_GENERIC_PERCPU_H_ |
2 | #define _ASM_GENERIC_PERCPU_H_ | 2 | #define _ASM_GENERIC_PERCPU_H_ |
3 | |||
3 | #include <linux/compiler.h> | 4 | #include <linux/compiler.h> |
4 | #include <linux/threads.h> | 5 | #include <linux/threads.h> |
5 | 6 | #include <linux/percpu-defs.h> | |
6 | /* | ||
7 | * Determine the real variable name from the name visible in the | ||
8 | * kernel sources. | ||
9 | */ | ||
10 | #define per_cpu_var(var) per_cpu__##var | ||
11 | 7 | ||
12 | #ifdef CONFIG_SMP | 8 | #ifdef CONFIG_SMP |
13 | 9 | ||
@@ -73,63 +69,32 @@ extern void setup_per_cpu_areas(void); | |||
73 | 69 | ||
74 | #endif /* SMP */ | 70 | #endif /* SMP */ |
75 | 71 | ||
76 | #ifndef PER_CPU_ATTRIBUTES | 72 | #ifndef PER_CPU_BASE_SECTION |
77 | #define PER_CPU_ATTRIBUTES | 73 | #ifdef CONFIG_SMP |
74 | #define PER_CPU_BASE_SECTION ".data.percpu" | ||
75 | #else | ||
76 | #define PER_CPU_BASE_SECTION ".data" | ||
78 | #endif | 77 | #endif |
79 | |||
80 | #define DECLARE_PER_CPU(type, name) extern PER_CPU_ATTRIBUTES \ | ||
81 | __typeof__(type) per_cpu_var(name) | ||
82 | |||
83 | /* | ||
84 | * Optional methods for optimized non-lvalue per-cpu variable access. | ||
85 | * | ||
86 | * @var can be a percpu variable or a field of it and its size should | ||
87 | * equal char, int or long. percpu_read() evaluates to a lvalue and | ||
88 | * all others to void. | ||
89 | * | ||
90 | * These operations are guaranteed to be atomic w.r.t. preemption. | ||
91 | * The generic versions use plain get/put_cpu_var(). Archs are | ||
92 | * encouraged to implement single-instruction alternatives which don't | ||
93 | * require preemption protection. | ||
94 | */ | ||
95 | #ifndef percpu_read | ||
96 | # define percpu_read(var) \ | ||
97 | ({ \ | ||
98 | typeof(per_cpu_var(var)) __tmp_var__; \ | ||
99 | __tmp_var__ = get_cpu_var(var); \ | ||
100 | put_cpu_var(var); \ | ||
101 | __tmp_var__; \ | ||
102 | }) | ||
103 | #endif | 78 | #endif |
104 | 79 | ||
105 | #define __percpu_generic_to_op(var, val, op) \ | 80 | #ifdef CONFIG_SMP |
106 | do { \ | ||
107 | get_cpu_var(var) op val; \ | ||
108 | put_cpu_var(var); \ | ||
109 | } while (0) | ||
110 | |||
111 | #ifndef percpu_write | ||
112 | # define percpu_write(var, val) __percpu_generic_to_op(var, (val), =) | ||
113 | #endif | ||
114 | 81 | ||
115 | #ifndef percpu_add | 82 | #ifdef MODULE |
116 | # define percpu_add(var, val) __percpu_generic_to_op(var, (val), +=) | 83 | #define PER_CPU_SHARED_ALIGNED_SECTION "" |
84 | #else | ||
85 | #define PER_CPU_SHARED_ALIGNED_SECTION ".shared_aligned" | ||
117 | #endif | 86 | #endif |
87 | #define PER_CPU_FIRST_SECTION ".first" | ||
118 | 88 | ||
119 | #ifndef percpu_sub | 89 | #else |
120 | # define percpu_sub(var, val) __percpu_generic_to_op(var, (val), -=) | ||
121 | #endif | ||
122 | 90 | ||
123 | #ifndef percpu_and | 91 | #define PER_CPU_SHARED_ALIGNED_SECTION "" |
124 | # define percpu_and(var, val) __percpu_generic_to_op(var, (val), &=) | 92 | #define PER_CPU_FIRST_SECTION "" |
125 | #endif | ||
126 | 93 | ||
127 | #ifndef percpu_or | ||
128 | # define percpu_or(var, val) __percpu_generic_to_op(var, (val), |=) | ||
129 | #endif | 94 | #endif |
130 | 95 | ||
131 | #ifndef percpu_xor | 96 | #ifndef PER_CPU_ATTRIBUTES |
132 | # define percpu_xor(var, val) __percpu_generic_to_op(var, (val), ^=) | 97 | #define PER_CPU_ATTRIBUTES |
133 | #endif | 98 | #endif |
134 | 99 | ||
135 | #endif /* _ASM_GENERIC_PERCPU_H_ */ | 100 | #endif /* _ASM_GENERIC_PERCPU_H_ */ |
diff --git a/include/asm-generic/siginfo.h b/include/asm-generic/siginfo.h index 35752dadd6df..c840719a8c59 100644 --- a/include/asm-generic/siginfo.h +++ b/include/asm-generic/siginfo.h | |||
@@ -201,7 +201,7 @@ typedef struct siginfo { | |||
201 | #define TRAP_TRACE (__SI_FAULT|2) /* process trace trap */ | 201 | #define TRAP_TRACE (__SI_FAULT|2) /* process trace trap */ |
202 | #define TRAP_BRANCH (__SI_FAULT|3) /* process taken branch trap */ | 202 | #define TRAP_BRANCH (__SI_FAULT|3) /* process taken branch trap */ |
203 | #define TRAP_HWBKPT (__SI_FAULT|4) /* hardware breakpoint/watchpoint */ | 203 | #define TRAP_HWBKPT (__SI_FAULT|4) /* hardware breakpoint/watchpoint */ |
204 | #define NSIGTRAP 2 | 204 | #define NSIGTRAP 4 |
205 | 205 | ||
206 | /* | 206 | /* |
207 | * SIGCHLD si_codes | 207 | * SIGCHLD si_codes |
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 7fa660fd449c..89853bcd27a6 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
@@ -1,3 +1,5 @@ | |||
1 | #include <linux/section-names.h> | ||
2 | |||
1 | #ifndef LOAD_OFFSET | 3 | #ifndef LOAD_OFFSET |
2 | #define LOAD_OFFSET 0 | 4 | #define LOAD_OFFSET 0 |
3 | #endif | 5 | #endif |
@@ -88,7 +90,6 @@ | |||
88 | /* .data section */ | 90 | /* .data section */ |
89 | #define DATA_DATA \ | 91 | #define DATA_DATA \ |
90 | *(.data) \ | 92 | *(.data) \ |
91 | *(.data.init.refok) \ | ||
92 | *(.ref.data) \ | 93 | *(.ref.data) \ |
93 | DEV_KEEP(init.data) \ | 94 | DEV_KEEP(init.data) \ |
94 | DEV_KEEP(exit.data) \ | 95 | DEV_KEEP(exit.data) \ |
@@ -287,8 +288,6 @@ | |||
287 | *(.text.hot) \ | 288 | *(.text.hot) \ |
288 | *(.text) \ | 289 | *(.text) \ |
289 | *(.ref.text) \ | 290 | *(.ref.text) \ |
290 | *(.text.init.refok) \ | ||
291 | *(.exit.text.refok) \ | ||
292 | DEV_KEEP(init.text) \ | 291 | DEV_KEEP(init.text) \ |
293 | DEV_KEEP(exit.text) \ | 292 | DEV_KEEP(exit.text) \ |
294 | CPU_KEEP(init.text) \ | 293 | CPU_KEEP(init.text) \ |
@@ -331,7 +330,7 @@ | |||
331 | #endif | 330 | #endif |
332 | 331 | ||
333 | /* Section used for early init (in .S files) */ | 332 | /* Section used for early init (in .S files) */ |
334 | #define HEAD_TEXT *(.head.text) | 333 | #define HEAD_TEXT *(HEAD_TEXT_SECTION) |
335 | 334 | ||
336 | /* init and exit section handling */ | 335 | /* init and exit section handling */ |
337 | #define INIT_DATA \ | 336 | #define INIT_DATA \ |