Add asm-compat.h to x86
PATCH 1/1 Add asm-compat.h to x86
Add asm-compat.h to x86
In assembly code and in gcc inline assembly, we need .long to express a "c long" type on i386 and a .quad to express the same on x86_64. Use macros similar to powerpc "PPC_LONG" to express those. Name chosen: ASM_LONG. (didn't feel like X86_LONG was required).
This is useful in inline assembly within code shared between 32 and 64 bits architectures in x86.
More compatible assembly macros could be added in this header later when needed.
I had to create this to implement a merged optimized immediate values header for x86.
--- include/asm-x86/asm-compat.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)
include/asm-x86/asm-compat.h new file +29 -0
@@ -0,0 +1,29 @@ +#ifndef _ASM_X86_ASM_COMPAT_H +#define _ASM_X86_ASM_COMPAT_H + +#include <asm/types.h> + +#ifdef __ASSEMBLY__ +# define stringify_in_c (...) __VA_ARGS__ +# define ASM_CONST (x) x +#else +/* This version of stringify will deal with commas... */ +# define __stringify_in_c (...) #__VA_ARGS__ +# define stringify_in_c (...) __stringify_in_c(__VA_ARGS__) " " +# define __ASM_CONST (x) x##UL +# define ASM_CONST (x) __ASM_CONST(x) +#endif + +#ifdef CONFIG_X86_64 + +/* operations for longs and pointers */ +#define ASM_LONG stringify_in_c(.quad) + +#else /* 32-bit */ + +/* operations for longs and pointers */ +#define ASM_LONG stringify_in_c(.long) + +#endif + +#endif /* _ASM_X86_ASM_COMPAT_H */
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
Quoted 7 lines · Mathieu Desnoyers
Add
asm-compat.hto x86In assembly code and in gcc inline assembly, we need .long to express a "c long" type on i386 and a .quad to express the same on
x86_64. Use macros similar to powerpc "PPC_LONG" to express those. Name chosen:ASM_LONG. (didn't feel likeX86_LONGwas required).
Quoted 9 lines
This is useful in inline assembly within code shared between 32 and 64 bits architectures in x86.
More compatible assembly macros could be added in this header later when needed.
I had to create this to implement a merged optimized immediate values header for x86.
Seems sound to me, and this header might be a useful place to put other things, like macros to emit exceptions, etc...
J
Quoted 44 lines
Signed-off-by Mathieu Desnoyers <[email protected]>CC Thomas Gleixner <[email protected]>CC Ingo Molnar <[email protected]>CC "H. Peter Anvin" <[email protected]>--- include/asm-x86/asm-compat.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)Index:
linux-2.6-lttng/include/asm-x86/asm-compat.h
===================================================================include/asm-x86/asm-compat.h new file +29
-0@@ -0,0 +1,29 @@ +#ifndef _ASM_X86_ASM_COMPAT_H +#define _ASM_X86_ASM_COMPAT_H + +#include <asm/types.h> + +#ifdef __ASSEMBLY__ +# define stringify_in_c (...) __VA_ARGS__ +# define ASM_CONST (x) x +#else +/* This version of stringify will deal with commas... */ +# define __stringify_in_c (...) #__VA_ARGS__ +# define stringify_in_c (...) __stringify_in_c(__VA_ARGS__) " " +# define __ASM_CONST (x) x##UL +# define ASM_CONST (x) __ASM_CONST(x) +#endif + +#ifdef CONFIG_X86_64 + +/* operations for longs and pointers */ +#define ASM_LONG stringify_in_c(.quad) + +#else /* 32-bit */ + +/* operations for longs and pointers */ +#define ASM_LONG stringify_in_c(.long) + +#endif + +#endif /* _ASM_X86_ASM_COMPAT_H */
Quoted 14 lines · Jeremy Fitzhardinge
Quoted 13 lines · Mathieu Desnoyers
Add
asm-compat.hto x86In assembly code and in gcc inline assembly, we need .long to express a "c long" type on i386 and a .quad to express the same on
x86_64. Use macros similar to powerpc "PPC_LONG" to express those. Name chosen:ASM_LONG. (didn't feel likeX86_LONGwas required).This is useful in inline assembly within code shared between 32 and 64 bits architectures in x86.
More compatible assembly macros could be added in this header later when needed.
Quoted 7 lines
Quoted 3 lines
I had to create this to implement a merged optimized immediate values header for x86.
Seems sound to me, and this header might be a useful place to put other things, like macros to emit exceptions, etc...
I have already done similar things in the unified pvops patch. But it was just a few locations, and I didn't fell the need for a common thing. But it is definitely useful.
Signature · 5 lines
Glauber de Oliveira Costa. "Free as in Freedom" http://glommer.net "The less confident you are, the more serious you have to act."