public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86: make asm/asm.h work for asm code.
@ 2008-06-16 22:06 Jeremy Fitzhardinge
  2008-06-16 22:44 ` H. Peter Anvin
  2008-06-16 22:48 ` H. Peter Anvin
  0 siblings, 2 replies; 6+ messages in thread
From: Jeremy Fitzhardinge @ 2008-06-16 22:06 UTC (permalink / raw)
  To: the arch/x86 maintainers; +Cc: Linux Kernel Mailing List

This is useful for unifying some pieces of asm code.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
---
 include/asm-x86/asm.h |   56 +++++++++++++++++++++++++++++++++++--------------
 1 file changed, 40 insertions(+), 16 deletions(-)

===================================================================
--- a/include/asm-x86/asm.h
+++ b/include/asm-x86/asm.h
@@ -1,33 +1,57 @@
 #ifndef _ASM_X86_ASM_H
 #define _ASM_X86_ASM_H
+
+#include <linux/stringify.h>
 
 #ifdef CONFIG_X86_32
 /* 32 bits */
 
-# define _ASM_PTR	" .long "
-# define _ASM_ALIGN	" .balign 4 "
-# define _ASM_MOV_UL	" movl "
+# define __ASM_PTR	.long
+# define __ASM_ALIGN	.balign 4
+# define __ASM_MOV_UL	movl
 
-# define _ASM_INC	" incl "
-# define _ASM_DEC	" decl "
-# define _ASM_ADD	" addl "
-# define _ASM_SUB	" subl "
-# define _ASM_XADD	" xaddl "
+# define __ASM_INC	incl
+# define __ASM_DEC	decl
+# define __ASM_ADD	addl
+# define __ASM_SUB	subl
+# define __ASM_XADD	xaddl
 
 #else
 /* 64 bits */
 
-# define _ASM_PTR	" .quad "
-# define _ASM_ALIGN	" .balign 8 "
-# define _ASM_MOV_UL	" movq "
+# define __ASM_PTR	.quad
+# define __ASM_ALIGN	.balign 8
+# define __ASM_MOV_UL	movq
 
-# define _ASM_INC	" incq "
-# define _ASM_DEC	" decq "
-# define _ASM_ADD	" addq "
-# define _ASM_SUB	" subq "
-# define _ASM_XADD	" xaddq "
+# define __ASM_INC	incq
+# define __ASM_DEC	decq
+# define __ASM_ADD	addq
+# define __ASM_SUB	subq
+# define __ASM_XADD	xaddq
 
 #endif /* CONFIG_X86_32 */
+
+#ifdef __ASSEMBLER__
+#define _ASM_PTR	__ASM_PTR
+#define _ASM_ALIGN	__ASM_ALIGN
+#define _ASM_MOV_UL	__ASM_MOV_UL
+
+#define _ASM_INC	__ASM_INC
+#define _ASM_DEC	__ASM_DEC
+#define _ASM_ADD	__ASM_ADD
+#define _ASM_SUB	__ASM_SUB
+#define _ASM_XADD	__ASM_XADD
+#else  /* !ASSEMBLER */
+#define _ASM_PTR	" " __stringify(__ASM_PTR) " "
+#define _ASM_ALIGN	" " __stringify(__ASM_ALIGN) " "
+#define _ASM_MOV_UL	" " __stringify(__ASM_MOV_UL) " "
+
+#define _ASM_INC	" " __stringify(__ASM_INC) " "
+#define _ASM_DEC	" " __stringify(__ASM_DEC) " "
+#define _ASM_ADD	" " __stringify(__ASM_ADD) " "
+#define _ASM_SUB	" " __stringify(__ASM_SUB) " "
+#define _ASM_XADD	" " __stringify(__ASM_XADD) " "
+#endif	/* __ASSEMBLER__ */
 
 /* Exception table entry */
 # define _ASM_EXTABLE(from,to) \



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] x86: make asm/asm.h work for asm code.
  2008-06-16 22:06 [PATCH] x86: make asm/asm.h work for asm code Jeremy Fitzhardinge
@ 2008-06-16 22:44 ` H. Peter Anvin
  2008-06-16 22:48 ` H. Peter Anvin
  1 sibling, 0 replies; 6+ messages in thread
From: H. Peter Anvin @ 2008-06-16 22:44 UTC (permalink / raw)
  To: Jeremy Fitzhardinge; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

Jeremy Fitzhardinge wrote:

> +# define __ASM_INC    incl
> +# define __ASM_INC    incq
> +#define _ASM_INC    __ASM_INC
> +#define _ASM_INC    " " __stringify(__ASM_INC) " "

You have *exactly* as many #defines as if one would simply do four cases 
(32 C, 64 C, 32 asm, 64 asm), and that would be easier to read...

	-hpa

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] x86: make asm/asm.h work for asm code.
  2008-06-16 22:06 [PATCH] x86: make asm/asm.h work for asm code Jeremy Fitzhardinge
  2008-06-16 22:44 ` H. Peter Anvin
@ 2008-06-16 22:48 ` H. Peter Anvin
  2008-06-16 23:08   ` Jeremy Fitzhardinge
  1 sibling, 1 reply; 6+ messages in thread
From: H. Peter Anvin @ 2008-06-16 22:48 UTC (permalink / raw)
  To: Jeremy Fitzhardinge; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

Jeremy Fitzhardinge wrote:
> This is useful for unifying some pieces of asm code.
> 
> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>

Thinking about it some more, this should be possible to do cleaner like 
this:

#ifdef CONFIG_X86_32
# ifdef __ASSEMBLY__
#  define __ASM_SEL(a,b) a
# else
#  define __ASM_SEL(a,b) " " #a " "
# endif
#else
# ifdef __ASSEMBLY__
#  define __ASM_SEL(a,b) b
# else
#  define __ASM_SEL(a,b) " " #b " "
# endif
#endif

#define _ASM_INC    _ASM_SEL(incl,incq)
#define _ASM_DEC    _ASM_SEL(decl,decq)

/* ... etc ... */

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] x86: make asm/asm.h work for asm code.
  2008-06-16 22:48 ` H. Peter Anvin
@ 2008-06-16 23:08   ` Jeremy Fitzhardinge
  2008-06-16 23:13     ` H. Peter Anvin
  0 siblings, 1 reply; 6+ messages in thread
From: Jeremy Fitzhardinge @ 2008-06-16 23:08 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

H. Peter Anvin wrote:
> Jeremy Fitzhardinge wrote:
>> This is useful for unifying some pieces of asm code.
>>
>> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
>
> Thinking about it some more, this should be possible to do cleaner 
> like this:

OK, how about this...

    J

Subject: x86: make asm/asm.h work for asm code.

This is useful for unifying some pieces of asm code.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
---
 include/asm-x86/asm.h |   42 +++++++++++++++++++-----------------------
 1 file changed, 19 insertions(+), 23 deletions(-)

===================================================================
--- a/include/asm-x86/asm.h
+++ b/include/asm-x86/asm.h
@@ -1,33 +1,29 @@
 #ifndef _ASM_X86_ASM_H
 #define _ASM_X86_ASM_H
 
+#ifdef __ASSEMBLY__
+# define __ASM_FORM(x)	x
+#else
+# define __ASM_FORM(x)	" " #x " "
+#endif
+
 #ifdef CONFIG_X86_32
-/* 32 bits */
+# define __ASM_SEL(a,b) __ASM_FORM(a)
+#else
+# define __ASM_SEL(a,b) __ASM_FORM(b)
+#endif
 
-# define _ASM_PTR	" .long "
-# define _ASM_ALIGN	" .balign 4 "
-# define _ASM_MOV_UL	" movl "
+#define __ASM_SIZE(inst)	__ASM_SEL(inst##l, inst##q)
 
-# define _ASM_INC	" incl "
-# define _ASM_DEC	" decl "
-# define _ASM_ADD	" addl "
-# define _ASM_SUB	" subl "
-# define _ASM_XADD	" xaddl "
+#define _ASM_PTR	__ASM_SEL(.long, .quad)
+#define _ASM_ALIGN	__ASM_SEL(.balign 4, .balign 8)
+#define _ASM_MOV_UL	__ASM_SIZE(mov)
 
-#else
-/* 64 bits */
-
-# define _ASM_PTR	" .quad "
-# define _ASM_ALIGN	" .balign 8 "
-# define _ASM_MOV_UL	" movq "
-
-# define _ASM_INC	" incq "
-# define _ASM_DEC	" decq "
-# define _ASM_ADD	" addq "
-# define _ASM_SUB	" subq "
-# define _ASM_XADD	" xaddq "
-
-#endif /* CONFIG_X86_32 */
+#define _ASM_INC	__ASM_SIZE(inc)
+#define _ASM_DEC	__ASM_SIZE(dec)
+#define _ASM_ADD	__ASM_SIZE(add)
+#define _ASM_SUB	__ASM_SIZE(sub)
+#define _ASM_XADD	__ASM_SIZE(xadd)
 
 /* Exception table entry */
 # define _ASM_EXTABLE(from,to) \



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] x86: make asm/asm.h work for asm code.
  2008-06-16 23:08   ` Jeremy Fitzhardinge
@ 2008-06-16 23:13     ` H. Peter Anvin
  2008-06-17 20:45       ` H. Peter Anvin
  0 siblings, 1 reply; 6+ messages in thread
From: H. Peter Anvin @ 2008-06-16 23:13 UTC (permalink / raw)
  To: Jeremy Fitzhardinge; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

Jeremy Fitzhardinge wrote:
> H. Peter Anvin wrote:
>> Jeremy Fitzhardinge wrote:
>>> This is useful for unifying some pieces of asm code.
>>>
>>> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
>>
>> Thinking about it some more, this should be possible to do cleaner 
>> like this:
> 
> OK, how about this...

A little over the top, but looks great ;)

Acked-by: H. Peter Anvin <hpa@zytor.com>

I'll pull this into -tip once I figure out which topic it should go under.

	-hpa

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] x86: make asm/asm.h work for asm code.
  2008-06-16 23:13     ` H. Peter Anvin
@ 2008-06-17 20:45       ` H. Peter Anvin
  0 siblings, 0 replies; 6+ messages in thread
From: H. Peter Anvin @ 2008-06-17 20:45 UTC (permalink / raw)
  To: Jeremy Fitzhardinge; +Cc: the arch/x86 maintainers, Linux Kernel Mailing List

H. Peter Anvin wrote:
> 
> Acked-by: H. Peter Anvin <hpa@zytor.com>
> 
> I'll pull this into -tip once I figure out which topic it should go under.
> 

I applied this to x86/cleanups last night.

	-hpa

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-06-17 20:49 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-16 22:06 [PATCH] x86: make asm/asm.h work for asm code Jeremy Fitzhardinge
2008-06-16 22:44 ` H. Peter Anvin
2008-06-16 22:48 ` H. Peter Anvin
2008-06-16 23:08   ` Jeremy Fitzhardinge
2008-06-16 23:13     ` H. Peter Anvin
2008-06-17 20:45       ` H. Peter Anvin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox