Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

x86: add _AT() macro to conditionally cast

# HG changeset patch
# User Jeremy Fitzhardinge <jeremy@xensource.com>
# Date 1199317452 28800
# Node ID f7e7db3facd9406545103164f9be8f9ba1a2b549
# Parent 4d9a413a0f4c1d98dbea704f0366457b5117045d
x86: add _AT() macro to conditionally cast

Define _AT(type, value) to conditionally cast a value when compiling C
code, but not when used in assembler.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

authored by

Jeremy Fitzhardinge and committed by
Ingo Molnar
74ef649f 345b904c

+5
+5
include/linux/const.h
··· 7 7 * C code. Therefore we cannot annotate them always with 8 8 * 'UL' and other type specifiers unilaterally. We 9 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. 10 13 */ 11 14 12 15 #ifdef __ASSEMBLY__ 13 16 #define _AC(X,Y) X 17 + #define _AT(T,X) X 14 18 #else 15 19 #define __AC(X,Y) (X##Y) 16 20 #define _AC(X,Y) __AC(X,Y) 21 + #define _AT(T,X) ((T)(X)) 17 22 #endif 18 23 19 24 #endif /* !(_LINUX_CONST_H) */