diff options
Diffstat (limited to 'include/linux/compiler.h')
| -rw-r--r-- | include/linux/compiler.h | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/include/linux/compiler.h b/include/linux/compiler.h index 04fb5135b4e1..a5a472b10746 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | 5 | ||
| 6 | #ifdef __CHECKER__ | 6 | #ifdef __CHECKER__ |
| 7 | # define __user __attribute__((noderef, address_space(1))) | 7 | # define __user __attribute__((noderef, address_space(1))) |
| 8 | # define __kernel /* default address space */ | 8 | # define __kernel __attribute__((address_space(0))) |
| 9 | # define __safe __attribute__((safe)) | 9 | # define __safe __attribute__((safe)) |
| 10 | # define __force __attribute__((force)) | 10 | # define __force __attribute__((force)) |
| 11 | # define __nocast __attribute__((nocast)) | 11 | # define __nocast __attribute__((nocast)) |
| @@ -15,6 +15,7 @@ | |||
| 15 | # define __acquire(x) __context__(x,1) | 15 | # define __acquire(x) __context__(x,1) |
| 16 | # define __release(x) __context__(x,-1) | 16 | # define __release(x) __context__(x,-1) |
| 17 | # define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0) | 17 | # define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0) |
| 18 | # define __percpu __attribute__((noderef, address_space(3))) | ||
| 18 | extern void __chk_user_ptr(const volatile void __user *); | 19 | extern void __chk_user_ptr(const volatile void __user *); |
| 19 | extern void __chk_io_ptr(const volatile void __iomem *); | 20 | extern void __chk_io_ptr(const volatile void __iomem *); |
| 20 | #else | 21 | #else |
| @@ -32,6 +33,7 @@ extern void __chk_io_ptr(const volatile void __iomem *); | |||
| 32 | # define __acquire(x) (void)0 | 33 | # define __acquire(x) (void)0 |
| 33 | # define __release(x) (void)0 | 34 | # define __release(x) (void)0 |
| 34 | # define __cond_lock(x,c) (c) | 35 | # define __cond_lock(x,c) (c) |
| 36 | # define __percpu | ||
| 35 | #endif | 37 | #endif |
| 36 | 38 | ||
| 37 | #ifdef __KERNEL__ | 39 | #ifdef __KERNEL__ |
| @@ -144,6 +146,11 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); | |||
| 144 | # define barrier() __memory_barrier() | 146 | # define barrier() __memory_barrier() |
| 145 | #endif | 147 | #endif |
| 146 | 148 | ||
| 149 | /* Unreachable code */ | ||
| 150 | #ifndef unreachable | ||
| 151 | # define unreachable() do { } while (1) | ||
| 152 | #endif | ||
| 153 | |||
| 147 | #ifndef RELOC_HIDE | 154 | #ifndef RELOC_HIDE |
| 148 | # define RELOC_HIDE(ptr, off) \ | 155 | # define RELOC_HIDE(ptr, off) \ |
| 149 | ({ unsigned long __ptr; \ | 156 | ({ unsigned long __ptr; \ |
| @@ -213,6 +220,10 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); | |||
| 213 | # define __maybe_unused /* unimplemented */ | 220 | # define __maybe_unused /* unimplemented */ |
| 214 | #endif | 221 | #endif |
| 215 | 222 | ||
| 223 | #ifndef __always_unused | ||
| 224 | # define __always_unused /* unimplemented */ | ||
| 225 | #endif | ||
| 226 | |||
| 216 | #ifndef noinline | 227 | #ifndef noinline |
| 217 | #define noinline | 228 | #define noinline |
| 218 | #endif | 229 | #endif |
| @@ -266,6 +277,17 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); | |||
| 266 | # define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) | 277 | # define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) |
| 267 | #endif | 278 | #endif |
| 268 | 279 | ||
| 280 | /* Compile time object size, -1 for unknown */ | ||
| 281 | #ifndef __compiletime_object_size | ||
| 282 | # define __compiletime_object_size(obj) -1 | ||
| 283 | #endif | ||
| 284 | #ifndef __compiletime_warning | ||
| 285 | # define __compiletime_warning(message) | ||
| 286 | #endif | ||
| 287 | #ifndef __compiletime_error | ||
| 288 | # define __compiletime_error(message) | ||
| 289 | #endif | ||
| 290 | |||
| 269 | /* | 291 | /* |
| 270 | * Prevent the compiler from merging or refetching accesses. The compiler | 292 | * Prevent the compiler from merging or refetching accesses. The compiler |
| 271 | * is also forbidden from reordering successive instances of ACCESS_ONCE(), | 293 | * is also forbidden from reordering successive instances of ACCESS_ONCE(), |
