浏览代码

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>
Jeremy Fitzhardinge 17 年之前
父节点
当前提交
74ef649fe8
共有 1 个文件被更改,包括 5 次插入0 次删除
  1. 5 0
      include/linux/const.h

+ 5 - 0
include/linux/const.h

@@ -7,13 +7,18 @@
  * C code.  Therefore we cannot annotate them always with
  * C code.  Therefore we cannot annotate them always with
  * 'UL' and other type specifiers unilaterally.  We
  * 'UL' and other type specifiers unilaterally.  We
  * use the following macros to deal with this.
  * use the following macros to deal with this.
+ *
+ * Similarly, _AT() will cast an expression with a type in C, but
+ * leave it unchanged in asm.
  */
  */
 
 
 #ifdef __ASSEMBLY__
 #ifdef __ASSEMBLY__
 #define _AC(X,Y)	X
 #define _AC(X,Y)	X
+#define _AT(T,X)	X
 #else
 #else
 #define __AC(X,Y)	(X##Y)
 #define __AC(X,Y)	(X##Y)
 #define _AC(X,Y)	__AC(X,Y)
 #define _AC(X,Y)	__AC(X,Y)
+#define _AT(T,X)	((T)(X))
 #endif
 #endif
 
 
 #endif /* !(_LINUX_CONST_H) */
 #endif /* !(_LINUX_CONST_H) */