17f4dd379Sjsg /* Public domain. */ 27f4dd379Sjsg 37f4dd379Sjsg #ifndef _LINUX_COMPILER_H 47f4dd379Sjsg #define _LINUX_COMPILER_H 57f4dd379Sjsg 67f4dd379Sjsg #include <linux/kconfig.h> 7c349dbc7Sjsg #include <sys/atomic.h> /* for READ_ONCE() WRITE_ONCE() */ 87f4dd379Sjsg 97f4dd379Sjsg #define unlikely(x) __builtin_expect(!!(x), 0) 107f4dd379Sjsg #define likely(x) __builtin_expect(!!(x), 1) 117f4dd379Sjsg 127f4dd379Sjsg #define __force 13c349dbc7Sjsg #define __acquires(x) 14c349dbc7Sjsg #define __releases(x) 157f4dd379Sjsg #define __read_mostly 167f4dd379Sjsg #define __iomem 177f4dd379Sjsg #define __must_check 187f4dd379Sjsg #define __init 197f4dd379Sjsg #define __exit 207f4dd379Sjsg #define __deprecated 21114e2335Sjsg #define __always_unused __attribute__((__unused__)) 22114e2335Sjsg #define __maybe_unused __attribute__((__unused__)) 23397008dfSjsg #define __always_inline inline __attribute__((__always_inline__)) 24114e2335Sjsg #define noinline __attribute__((__noinline__)) 25e47b56beSjsg #define noinline_for_stack __attribute__((__noinline__)) 26c349dbc7Sjsg #define fallthrough do {} while (0) 27*9ad46d05Sjsg #define __counted_by(x) 287f4dd379Sjsg 29f005ef32Sjsg #define __PASTE(x,y) __CONCAT(x,y) 30f005ef32Sjsg 317f4dd379Sjsg #ifndef __user 327f4dd379Sjsg #define __user 337f4dd379Sjsg #endif 347f4dd379Sjsg 35733a71f2Sjsg #define barrier() __asm volatile("" : : : "memory") 367f4dd379Sjsg 37ad8b1aafSjsg #define __printf(x, y) __attribute__((__format__(__kprintf__,x,y))) 387f4dd379Sjsg 39c349dbc7Sjsg /* The Linux code doesn't meet our usual standards! */ 40c349dbc7Sjsg #ifdef __clang__ 41c349dbc7Sjsg #pragma clang diagnostic ignored "-Winitializer-overrides" 42c349dbc7Sjsg #pragma clang diagnostic ignored "-Wunused-function" 43c349dbc7Sjsg #pragma clang diagnostic ignored "-Wunused-variable" 445ca02815Sjsg #pragma clang diagnostic ignored "-Wgnu-variable-sized-type-not-at-end" 45c349dbc7Sjsg #else 46c349dbc7Sjsg #pragma GCC diagnostic ignored "-Wformat-zero-length" 47c349dbc7Sjsg #endif 48c349dbc7Sjsg 497f4dd379Sjsg #endif 50