1 #ifndef __LINUX_COMPILER_H 2 #define __LINUX_COMPILER_H 3 4 #ifndef __ASSEMBLY__ 5 6 #ifdef __CHECKER__ 7 # define __user __attribute__((noderef, address_space(1))) 8 # define __kernel __attribute__((address_space(0))) 9 # define __safe __attribute__((safe)) 10 # define __force __attribute__((force)) 11 # define __nocast __attribute__((nocast)) 12 # define __iomem __attribute__((noderef, address_space(2))) 13 # define __acquires(x) __attribute__((context(x,0,1))) 14 # define __releases(x) __attribute__((context(x,1,0))) 15 # define __acquire(x) __context__(x,1) 16 # define __release(x) __context__(x,-1) 17 # define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0) 18 # define __percpu __attribute__((noderef, address_space(3))) 19 # define __rcu 20 extern void __chk_user_ptr(const volatile void __user *); 21 extern void __chk_io_ptr(const volatile void __iomem *); 22 #else 23 # define __user 24 # define __kernel 25 # define __safe 26 # define __force 27 # define __nocast 28 # define __iomem 29 # define __chk_user_ptr(x) (void)0 30 # define __chk_io_ptr(x) (void)0 31 # define __builtin_warning(x, y...) (1) 32 # define __acquires(x) 33 # define __releases(x) 34 # define __acquire(x) (void)0 35 # define __release(x) (void)0 36 # define __cond_lock(x,c) (c) 37 # define __percpu 38 # define __rcu 39 #endif 40 41 #ifdef __KERNEL__ 42 43 #ifdef __GNUC__ 44 #include <linux/compiler-gcc.h> 45 #endif 46 47 #define notrace __attribute__((no_instrument_function)) 48 49 /* Intel compiler defines __GNUC__. So we will overwrite implementations 50 * coming from above header files here 51 */ 52 #ifdef __INTEL_COMPILER 53 # include <linux/compiler-intel.h> 54 #endif 55 56 /* 57 * Generic compiler-dependent macros required for kernel 58 * build go below this comment. Actual compiler/compiler version 59 * specific implementations come from the above header files 60 */ 61 62 struct ftrace_branch_data { 63 const char *func; 64 const char *file; 65 unsigned line; 66 union { 67 struct { 68 unsigned long correct; 69 unsigned long incorrect; 70 }; 71 struct { 72 unsigned long miss; 73 unsigned long hit; 74 }; 75 unsigned long miss_hit[2]; 76 }; 77 }; 78 79 /* 80 * Note: DISABLE_BRANCH_PROFILING can be used by special lowlevel code 81 * to disable branch tracing on a per file basis. 82 */ 83 #if defined(CONFIG_TRACE_BRANCH_PROFILING) \ 84 && !defined(DISABLE_BRANCH_PROFILING) && !defined(__CHECKER__) 85 void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); 86 87 #define likely_notrace(x) __builtin_expect(!!(x), 1) 88 #define unlikely_notrace(x) __builtin_expect(!!(x), 0) 89 90 #define __branch_check__(x, expect) ({ \ 91 int ______r; \ 92 static struct ftrace_branch_data \ 93 __attribute__((__aligned__(4))) \ 94 __attribute__((section("_ftrace_annotated_branch"))) \ 95 ______f = { \ 96 .func = __func__, \ 97 .file = __FILE__, \ 98 .line = __LINE__, \ 99 }; \ 100 ______r = likely_notrace(x); \ 101 ftrace_likely_update(&______f, ______r, expect); \ 102 ______r; \ 103 }) 104 105 /* 106 * Using __builtin_constant_p(x) to ignore cases where the return 107 * value is always the same. This idea is taken from a similar patch 108 * written by Daniel Walker. 109 */ 110 # ifndef likely 111 # define likely(x) (__builtin_constant_p(x) ? !!(x) : __branch_check__(x, 1)) 112 # endif 113 # ifndef unlikely 114 # define unlikely(x) (__builtin_constant_p(x) ? !!(x) : __branch_check__(x, 0)) 115 # endif 116 117 #ifdef CONFIG_PROFILE_ALL_BRANCHES 118 /* 119 * "Define 'is'", Bill Clinton 120 * "Define 'if'", Steven Rostedt 121 */ 122 #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) 123 #define __trace_if(cond) \ 124 if (__builtin_constant_p((cond)) ? !!(cond) : \ 125 ({ \ 126 int ______r; \ 127 static struct ftrace_branch_data \ 128 __attribute__((__aligned__(4))) \ 129 __attribute__((section("_ftrace_branch"))) \ 130 ______f = { \ 131 .func = __func__, \ 132 .file = __FILE__, \ 133 .line = __LINE__, \ 134 }; \ 135 ______r = !!(cond); \ 136 ______f.miss_hit[______r]++; \ 137 ______r; \ 138 })) 139 #endif /* CONFIG_PROFILE_ALL_BRANCHES */ 140 141 #else 142 # define likely(x) __builtin_expect(!!(x), 1) 143 # define unlikely(x) __builtin_expect(!!(x), 0) 144 #endif 145 146 /* Optimization barrier */ 147 #ifndef barrier 148 # define barrier() __memory_barrier() 149 #endif 150 151 /* Unreachable code */ 152 #ifndef unreachable 153 # define unreachable() do { } while (1) 154 #endif 155 156 #ifndef RELOC_HIDE 157 # define RELOC_HIDE(ptr, off) \ 158 ({ unsigned long __ptr; \ 159 __ptr = (unsigned long) (ptr); \ 160 (typeof(ptr)) (__ptr + (off)); }) 161 #endif 162 163 #endif /* __KERNEL__ */ 164 165 #endif /* __ASSEMBLY__ */ 166 167 #ifdef __KERNEL__ 168 /* 169 * Allow us to mark functions as 'deprecated' and have gcc emit a nice 170 * warning for each use, in hopes of speeding the functions removal. 171 * Usage is: 172 * int __deprecated foo(void) 173 */ 174 #ifndef __deprecated 175 # define __deprecated /* unimplemented */ 176 #endif 177 178 #ifdef MODULE 179 #define __deprecated_for_modules __deprecated 180 #else 181 #define __deprecated_for_modules 182 #endif 183 184 #ifndef __must_check 185 #define __must_check 186 #endif 187 188 #ifndef CONFIG_ENABLE_MUST_CHECK 189 #undef __must_check 190 #define __must_check 191 #endif 192 #ifndef CONFIG_ENABLE_WARN_DEPRECATED 193 #undef __deprecated 194 #undef __deprecated_for_modules 195 #define __deprecated 196 #define __deprecated_for_modules 197 #endif 198 199 /* 200 * Allow us to avoid 'defined but not used' warnings on functions and data, 201 * as well as force them to be emitted to the assembly file. 202 * 203 * As of gcc 3.4, static functions that are not marked with attribute((used)) 204 * may be elided from the assembly file. As of gcc 3.4, static data not so 205 * marked will not be elided, but this may change in a future gcc version. 206 * 207 * NOTE: Because distributions shipped with a backported unit-at-a-time 208 * compiler in gcc 3.3, we must define __used to be __attribute__((used)) 209 * for gcc >=3.3 instead of 3.4. 210 * 211 * In prior versions of gcc, such functions and data would be emitted, but 212 * would be warned about except with attribute((unused)). 213 * 214 * Mark functions that are referenced only in inline assembly as __used so 215 * the code is emitted even though it appears to be unreferenced. 216 */ 217 #ifndef __used 218 # define __used /* unimplemented */ 219 #endif 220 221 #ifndef __maybe_unused 222 # define __maybe_unused /* unimplemented */ 223 #endif 224 225 #ifndef __always_unused 226 # define __always_unused /* unimplemented */ 227 #endif 228 229 #ifndef noinline 230 #define noinline 231 #endif 232 233 /* 234 * Rather then using noinline to prevent stack consumption, use 235 * noinline_for_stack instead. For documentaiton reasons. 236 */ 237 #define noinline_for_stack noinline 238 239 #ifndef __always_inline 240 #define __always_inline inline 241 #endif 242 243 #endif /* __KERNEL__ */ 244 245 /* 246 * From the GCC manual: 247 * 248 * Many functions do not examine any values except their arguments, 249 * and have no effects except the return value. Basically this is 250 * just slightly more strict class than the `pure' attribute above, 251 * since function is not allowed to read global memory. 252 * 253 * Note that a function that has pointer arguments and examines the 254 * data pointed to must _not_ be declared `const'. Likewise, a 255 * function that calls a non-`const' function usually must not be 256 * `const'. It does not make sense for a `const' function to return 257 * `void'. 258 */ 259 #ifndef __attribute_const__ 260 # define __attribute_const__ /* unimplemented */ 261 #endif 262 263 /* 264 * Tell gcc if a function is cold. The compiler will assume any path 265 * directly leading to the call is unlikely. 266 */ 267 268 #ifndef __cold 269 #define __cold 270 #endif 271 272 /* Simple shorthand for a section definition */ 273 #ifndef __section 274 # define __section(S) __attribute__ ((__section__(#S))) 275 #endif 276 277 /* Are two types/vars the same type (ignoring qualifiers)? */ 278 #ifndef __same_type 279 # define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) 280 #endif 281 282 /* Compile time object size, -1 for unknown */ 283 #ifndef __compiletime_object_size 284 # define __compiletime_object_size(obj) -1 285 #endif 286 #ifndef __compiletime_warning 287 # define __compiletime_warning(message) 288 #endif 289 #ifndef __compiletime_error 290 # define __compiletime_error(message) 291 #endif 292 293 /* 294 * Prevent the compiler from merging or refetching accesses. The compiler 295 * is also forbidden from reordering successive instances of ACCESS_ONCE(), 296 * but only when the compiler is aware of some particular ordering. One way 297 * to make the compiler aware of ordering is to put the two invocations of 298 * ACCESS_ONCE() in different C statements. 299 * 300 * This macro does absolutely -nothing- to prevent the CPU from reordering, 301 * merging, or refetching absolutely anything at any time. Its main intended 302 * use is to mediate communication between process-level code and irq/NMI 303 * handlers, all running on the same CPU. 304 */ 305 #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x)) 306 307 #endif /* __LINUX_COMPILER_H */ 308