137d288c5619029b86f66e5fae7b6828ba926ffe
[lunaix-os.git] / lunaix-os / includes / lunaix / compiler.h
1 #ifndef __LUNAIX_COMPILER_H
2 #define __LUNAIX_COMPILER_H
3
4 #define likely(x) __builtin_expect((x), 1)
5 #define unlikely(x) __builtin_expect((x), 0)
6
7 #define weak_alias(name) __attribute__((weak, alias(name)))
8 #define weak __attribute__((weak))
9 #define noret __attribute__((noreturn))
10 #define optimize(opt) __attribute__((optimize(opt)))
11
12 #define prefetch_rd(ptr, ll) __builtin_prefetch((ptr), 0, ll)
13 #define prefetch_wr(ptr, ll) __builtin_prefetch((ptr), 1, ll)
14
15 #define stringify(v) #v
16 #define stringify__(v) stringify(v)
17
18 inline static void noret
19 spin()
20 {
21     volatile int __infloop = 1;
22     while (__infloop)
23         ;
24     __builtin_unreachable();
25 }
26
27 #endif /* __LUNAIX_COMPILER_H */