X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/34f6af4f61e0eec9c96113e07f140b609b4113c8..refs/heads/isa/arm64:/lunaix-os/includes/lunaix/compiler.h diff --git a/lunaix-os/includes/lunaix/compiler.h b/lunaix-os/includes/lunaix/compiler.h index 178c0fe..b03b8e8 100644 --- a/lunaix-os/includes/lunaix/compiler.h +++ b/lunaix-os/includes/lunaix/compiler.h @@ -7,24 +7,31 @@ #define __section(name) __attribute__((section(name))) #define weak_alias(name) __attribute__((weak, alias(name))) #define optimize(opt) __attribute__((optimize(opt))) -#define weak __attribute__((weak)) +#define _weak __attribute__((weak)) #define noret __attribute__((noreturn)) #define must_inline __attribute__((always_inline)) #define must_emit __attribute__((used)) #define unreachable __builtin_unreachable() #define no_inline __attribute__((noinline)) +#define asmlinkage -#define _default weak +#define _be __attribute__((scalar_storage_order ("big-endian"))) +#define _le __attribute__((scalar_storage_order ("little-endian"))) + +#define _default _weak #define msbiti (sizeof(int) * 8 - 1) #define clz(bits) __builtin_clz(bits) +#define ctz(bits) __builtin_ctz(bits) #ifdef CONFIG_ARCH_BITS_64 #define msbitl (sizeof(long) * 8 - 1) #define clzl(bits) __builtin_clzl(bits) +#define ctzl(bits) __builtin_ctzl(bits) #else #define msbitl msbiti #define clzl(bits) clz(bits) +#define ctzl(bits) ctz(bits) #endif #define sadd_of(a, b, of) __builtin_sadd_overflow(a, b, of) @@ -32,6 +39,8 @@ #define umul_of(a, b, of) __builtin_umul_overflow(a, b, of) #define umull_of(a, b, of) __builtin_umull_overflow(a, b, of) #define offsetof(f, m) __builtin_offsetof(f, m) +#define select(cond, y, n) __builtin_choose_expr(cond, y, n) +#define is_const(v) __builtin_constant_p(v) #define prefetch_rd(ptr, ll) __builtin_prefetch((ptr), 0, ll) #define prefetch_wr(ptr, ll) __builtin_prefetch((ptr), 1, ll) @@ -58,4 +67,9 @@ spin() unreachable; } +#ifdef CONFIG_ARCH_X86_32 +#undef asmlinkage +#define asmlinkage __attribute__((regparm(0))) +#endif + #endif /* __LUNAIX_COMPILER_H */