On Mon, Mar 03, 2008 at 11:43:10AM +0000, Russell King wrote: > On Mon, Mar 03, 2008 at 10:57:32AM +0000, David Howells wrote: > > H. Peter Anvin <hpa@xxxxxxxxx> wrote: > > > > > +#define S8_C(x) x > > > +#define U8_C(x) x ## U > > > +#define S16_C(x) x > > > +#define U16_C(x) x ## U > > > +#define S32_C(x) x > > > +#define U32_C(x) x ## U > > > +#define S64_C(x) x ## LL > > > +#define U64_C(x) x ## ULL > > > > And #if defined(__ASSEMBLY__), just splat x through as is. > > We already have something like this on ARM - include/asm-arm/memory.h > > /* > * Allow for constants defined here to be used from assembly code > * by prepending the UL suffix only with actual C code compilation. > */ > #ifndef __ASSEMBLY__ > #define UL(x) (x##UL) > #else > #define UL(x) (x) > #endif And in linux/const.h we have yet another variant: /* Some constant macros are used in both assembler and * C code. Therefore we cannot annotate them always with * 'UL' and other type specifiers unilaterally. We * 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__ #define _AC(X,Y) X #define _AT(T,X) X #else #define __AC(X,Y) (X##Y) #define _AC(X,Y) __AC(X,Y) #define _AT(T,X) ((T)(X)) #endif Not as typestrict as hpa's and arm's version but used in a few placed already. Sam -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html