1/* const.h: Macros for dealing with constants.  */
2
3#ifndef _LINUX_CONST_H
4#define _LINUX_CONST_H
5
6/* Some constant macros are used in both assembler and
7 * C code.  Therefore we cannot annotate them always with
8 * 'UL' and other type specifiers unilaterally.  We
9 * use the following macros to deal with this.
10 *
11 * Similarly, _AT() will cast an expression with a type in C, but
12 * leave it unchanged in asm.
13 */
14
15#ifdef __ASSEMBLY__
16#define _AC(X,Y)	X
17#define _AT(T,X)	X
18#else
19#define __AC(X,Y)	(X##Y)
20#define _AC(X,Y)	__AC(X,Y)
21#define _AT(T,X)	((T)(X))
22#endif
23
24#define _BITUL(x)	(_AC(1,UL) << (x))
25#define _BITULL(x)	(_AC(1,ULL) << (x))
26
27#endif /* !(_LINUX_CONST_H) */
28