diff options
Diffstat (limited to 'include/asm-generic')
| -rw-r--r-- | include/asm-generic/atomic.h | 4 | ||||
| -rw-r--r-- | include/asm-generic/bug.h | 9 | ||||
| -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 |
5 files changed, 29 insertions, 64 deletions
diff --git a/include/asm-generic/atomic.h b/include/asm-generic/atomic.h index 7abdaa91ccd3..3673a13b6703 100644 --- a/include/asm-generic/atomic.h +++ b/include/asm-generic/atomic.h | |||
| @@ -132,9 +132,9 @@ static inline long atomic_long_add_unless(atomic_long_t *l, long a, long u) | |||
| 132 | #define atomic_long_inc_not_zero(l) atomic64_inc_not_zero((atomic64_t *)(l)) | 132 | #define atomic_long_inc_not_zero(l) atomic64_inc_not_zero((atomic64_t *)(l)) |
| 133 | 133 | ||
| 134 | #define atomic_long_cmpxchg(l, old, new) \ | 134 | #define atomic_long_cmpxchg(l, old, new) \ |
| 135 | (atomic_cmpxchg((atomic64_t *)(l), (old), (new))) | 135 | (atomic64_cmpxchg((atomic64_t *)(l), (old), (new))) |
| 136 | #define atomic_long_xchg(v, new) \ | 136 | #define atomic_long_xchg(v, new) \ |
| 137 | (atomic_xchg((atomic64_t *)(l), (new))) | 137 | (atomic64_xchg((atomic64_t *)(l), (new))) |
| 138 | 138 | ||
| 139 | #else /* BITS_PER_LONG == 64 */ | 139 | #else /* BITS_PER_LONG == 64 */ |
| 140 | 140 | ||
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h index 37b82cb96c89..4b6755984d24 100644 --- a/include/asm-generic/bug.h +++ b/include/asm-generic/bug.h | |||
| @@ -58,12 +58,13 @@ struct bug_entry { | |||
| 58 | */ | 58 | */ |
| 59 | #ifndef __WARN | 59 | #ifndef __WARN |
| 60 | #ifndef __ASSEMBLY__ | 60 | #ifndef __ASSEMBLY__ |
| 61 | extern void warn_slowpath(const char *file, const int line, | 61 | extern void warn_slowpath_fmt(const char *file, const int line, |
| 62 | const char *fmt, ...) __attribute__((format(printf, 3, 4))); | 62 | const char *fmt, ...) __attribute__((format(printf, 3, 4))); |
| 63 | extern void warn_slowpath_null(const char *file, const int line); | ||
| 63 | #define WANT_WARN_ON_SLOWPATH | 64 | #define WANT_WARN_ON_SLOWPATH |
| 64 | #endif | 65 | #endif |
| 65 | #define __WARN() warn_slowpath(__FILE__, __LINE__, NULL) | 66 | #define __WARN() warn_slowpath_null(__FILE__, __LINE__) |
| 66 | #define __WARN_printf(arg...) warn_slowpath(__FILE__, __LINE__, arg) | 67 | #define __WARN_printf(arg...) warn_slowpath_fmt(__FILE__, __LINE__, arg) |
| 67 | #else | 68 | #else |
| 68 | #define __WARN_printf(arg...) do { printk(arg); __WARN(); } while (0) | 69 | #define __WARN_printf(arg...) do { printk(arg); __WARN(); } while (0) |
| 69 | #endif | 70 | #endif |
| @@ -88,7 +89,7 @@ extern void warn_slowpath(const char *file, const int line, | |||
| 88 | 89 | ||
| 89 | #else /* !CONFIG_BUG */ | 90 | #else /* !CONFIG_BUG */ |
| 90 | #ifndef HAVE_ARCH_BUG | 91 | #ifndef HAVE_ARCH_BUG |
| 91 | #define BUG() | 92 | #define BUG() do {} while(0) |
| 92 | #endif | 93 | #endif |
| 93 | 94 | ||
| 94 | #ifndef HAVE_ARCH_BUG_ON | 95 | #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 \ |
