xref: /openbmc/u-boot/include/linux/compiler-intel.h (revision fb8ffd7cfc68b3dc44e182356a207d784cb30b34)
1*fb8ffd7cSMasahiro Yamada #ifndef __LINUX_COMPILER_H
2*fb8ffd7cSMasahiro Yamada #error "Please don't include <linux/compiler-intel.h> directly, include <linux/compiler.h> instead."
3*fb8ffd7cSMasahiro Yamada #endif
4*fb8ffd7cSMasahiro Yamada 
5*fb8ffd7cSMasahiro Yamada #ifdef __ECC
6*fb8ffd7cSMasahiro Yamada 
7*fb8ffd7cSMasahiro Yamada /* Some compiler specific definitions are overwritten here
8*fb8ffd7cSMasahiro Yamada  * for Intel ECC compiler
9*fb8ffd7cSMasahiro Yamada  */
10*fb8ffd7cSMasahiro Yamada 
11*fb8ffd7cSMasahiro Yamada #include <asm/intrinsics.h>
12*fb8ffd7cSMasahiro Yamada 
13*fb8ffd7cSMasahiro Yamada /* Intel ECC compiler doesn't support gcc specific asm stmts.
14*fb8ffd7cSMasahiro Yamada  * It uses intrinsics to do the equivalent things.
15*fb8ffd7cSMasahiro Yamada  */
16*fb8ffd7cSMasahiro Yamada #undef RELOC_HIDE
17*fb8ffd7cSMasahiro Yamada #undef OPTIMIZER_HIDE_VAR
18*fb8ffd7cSMasahiro Yamada 
19*fb8ffd7cSMasahiro Yamada #define RELOC_HIDE(ptr, off)					\
20*fb8ffd7cSMasahiro Yamada   ({ unsigned long __ptr;					\
21*fb8ffd7cSMasahiro Yamada      __ptr = (unsigned long) (ptr);				\
22*fb8ffd7cSMasahiro Yamada     (typeof(ptr)) (__ptr + (off)); })
23*fb8ffd7cSMasahiro Yamada 
24*fb8ffd7cSMasahiro Yamada /* This should act as an optimization barrier on var.
25*fb8ffd7cSMasahiro Yamada  * Given that this compiler does not have inline assembly, a compiler barrier
26*fb8ffd7cSMasahiro Yamada  * is the best we can do.
27*fb8ffd7cSMasahiro Yamada  */
28*fb8ffd7cSMasahiro Yamada #define OPTIMIZER_HIDE_VAR(var) barrier()
29*fb8ffd7cSMasahiro Yamada 
30*fb8ffd7cSMasahiro Yamada /* Intel ECC compiler doesn't support __builtin_types_compatible_p() */
31*fb8ffd7cSMasahiro Yamada #define __must_be_array(a) 0
32*fb8ffd7cSMasahiro Yamada 
33*fb8ffd7cSMasahiro Yamada #endif
34*fb8ffd7cSMasahiro Yamada 
35*fb8ffd7cSMasahiro Yamada #ifndef __HAVE_BUILTIN_BSWAP16__
36*fb8ffd7cSMasahiro Yamada /* icc has this, but it's called _bswap16 */
37*fb8ffd7cSMasahiro Yamada #define __HAVE_BUILTIN_BSWAP16__
38*fb8ffd7cSMasahiro Yamada #define __builtin_bswap16 _bswap16
39*fb8ffd7cSMasahiro Yamada #endif
40*fb8ffd7cSMasahiro Yamada 
41