Rev 3480 | Rev 6082 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3480 | Rev 5056 | ||
---|---|---|---|
Line 35... | Line 35... | ||
35 | #define RELOC_HIDE(ptr, off) \ |
35 | #define RELOC_HIDE(ptr, off) \ |
36 | ({ unsigned long __ptr; \ |
36 | ({ unsigned long __ptr; \ |
37 | __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \ |
37 | __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \ |
38 | (typeof(ptr)) (__ptr + (off)); }) |
38 | (typeof(ptr)) (__ptr + (off)); }) |
Line -... | Line 39... | ||
- | 39 | ||
- | 40 | /* Make the optimizer believe the variable can be manipulated arbitrarily. */ |
|
- | 41 | #define OPTIMIZER_HIDE_VAR(var) __asm__ ("" : "=r" (var) : "0" (var)) |
|
39 | 42 | ||
40 | #ifdef __CHECKER__ |
43 | #ifdef __CHECKER__ |
41 | #define __must_be_array(arr) 0 |
44 | #define __must_be_array(arr) 0 |
42 | #else |
45 | #else |
43 | /* &a[0] degrades to a pointer: a different type from an array */ |
46 | /* &a[0] degrades to a pointer: a different type from an array */ |
Line 48... | Line 51... | ||
48 | * Force always-inline if the user requests it so via the .config, |
51 | * Force always-inline if the user requests it so via the .config, |
49 | * or if gcc is too old: |
52 | * or if gcc is too old: |
50 | */ |
53 | */ |
51 | #if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \ |
54 | #if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \ |
52 | !defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4) |
55 | !defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4) |
53 | # define inline inline __attribute__((always_inline)) |
56 | # define inline inline __attribute__((always_inline)) notrace |
54 | # define __inline__ __inline__ __attribute__((always_inline)) |
57 | # define __inline__ __inline__ __attribute__((always_inline)) notrace |
55 | # define __inline __inline __attribute__((always_inline)) |
58 | # define __inline __inline __attribute__((always_inline)) notrace |
- | 59 | #else |
|
- | 60 | /* A lot of inline functions can cause havoc with function tracing */ |
|
- | 61 | # define inline inline notrace |
|
- | 62 | # define __inline__ __inline__ notrace |
|
- | 63 | # define __inline __inline notrace |
|
56 | #endif |
64 | #endif |
Line 57... | Line 65... | ||
57 | 65 | ||
58 | #define __deprecated __attribute__((deprecated)) |
66 | #define __deprecated __attribute__((deprecated)) |
59 | #define __packed __attribute__((packed)) |
67 | #define __packed __attribute__((packed)) |