| #pragma once | 
 |  | 
 | /* Linux calls it __ASSEMBLY__ */ | 
 | #ifdef __ASSEMBLER__ | 
 | #define __ASSEMBLY__ 1 | 
 | #endif | 
 |  | 
 | /* This is a bit hokey.  It turns off the #define inline to include | 
 |  * always_inline, which breaks our uses of "extern inline". */ | 
 | #define CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING 1 | 
 | #define CONFIG_OPTIMIZE_INLINING 1 | 
 |  | 
 | /* Make sure Linux's compiler.h is only included here. */ | 
 | #define __AKAROS_COMPILER_H 1 | 
 | #include <linux/compiler.h> | 
 | #undef __AKAROS_COMPILER_H | 
 |  | 
 | /* If __VA_ARGS__ is empty, the ## will eat the comma to the left, so we call | 
 |  * __MACRO_NARG with 1 + NR_ARGS arguments, then the 6, 5, 4, etc.  __MACRO_NARG | 
 |  * will strip the 0 (the _0), then the args (if any), and then return the Nth | 
 |  * integer passed in, which will be the number of original args. */ | 
 | #define __MACRO_NARG(_0, _1, _2, _3, _4, _5, _6, x, ...) x | 
 | #define MACRO_NR_ARGS(...) __MACRO_NARG(0, ##__VA_ARGS__, 6, 5, 4, 3, 2, 1, 0) |