xref: /rk3399_rockchip-uboot/arch/mips/include/asm/const.h (revision 86f21c96f46736825d8a9269dfbe31ef7991a7e6)
1*898582bdSDaniel Schwierzeck /*
2*898582bdSDaniel Schwierzeck  * const.h: Macros for dealing with constants.
3*898582bdSDaniel Schwierzeck  *
4*898582bdSDaniel Schwierzeck  * SPDX-License-Identifier:	GPL-2.0
5*898582bdSDaniel Schwierzeck  */
623ff8633SDaniel Schwierzeck 
723ff8633SDaniel Schwierzeck #ifndef _LINUX_CONST_H
823ff8633SDaniel Schwierzeck #define _LINUX_CONST_H
923ff8633SDaniel Schwierzeck 
1023ff8633SDaniel Schwierzeck /* Some constant macros are used in both assembler and
1123ff8633SDaniel Schwierzeck  * C code.  Therefore we cannot annotate them always with
1223ff8633SDaniel Schwierzeck  * 'UL' and other type specifiers unilaterally.  We
1323ff8633SDaniel Schwierzeck  * use the following macros to deal with this.
1423ff8633SDaniel Schwierzeck  *
1523ff8633SDaniel Schwierzeck  * Similarly, _AT() will cast an expression with a type in C, but
1623ff8633SDaniel Schwierzeck  * leave it unchanged in asm.
1723ff8633SDaniel Schwierzeck  */
1823ff8633SDaniel Schwierzeck 
1923ff8633SDaniel Schwierzeck #ifdef __ASSEMBLY__
2023ff8633SDaniel Schwierzeck #define _AT(T,X)	X
2123ff8633SDaniel Schwierzeck #else
2223ff8633SDaniel Schwierzeck #define _AT(T,X)	((T)(X))
2323ff8633SDaniel Schwierzeck #endif
2423ff8633SDaniel Schwierzeck 
2523ff8633SDaniel Schwierzeck #define _BITUL(x)	(_AC(1,UL) << (x))
2623ff8633SDaniel Schwierzeck #define _BITULL(x)	(_AC(1,ULL) << (x))
2723ff8633SDaniel Schwierzeck 
2823ff8633SDaniel Schwierzeck #endif /* !(_LINUX_CONST_H) */
29