Fix "$(AS) -traditional" compile breakage caused by asmlinkage_protect
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Fri, 11 Apr 2008 11:46:54 +0000 (13:46 +0200)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 11 Apr 2008 15:29:13 +0000 (08:29 -0700)
git commit 54a015104136974262afa4b8ddd943ea70dec8a2 ("asmlinkage_protect
replaces prevent_tail_call") causes this build failure on s390:

    AS      arch/s390/kernel/entry64.o
  In file included from arch/s390/kernel/entry64.S:14:
  include/linux/linkage.h:34: error: syntax error in macro parameter list
  make[1]: *** [arch/s390/kernel/entry64.o] Error 1
  make: *** [arch/s390/kernel] Error 2

and some other architectures.  The reason is that some architectures add
the "-traditional" flag to the invocation of $(AS), which disables
variadic macro argument support.

So just surround the new define with an #ifndef __ASSEMBLY__ to prevent
any side effects on asm code.

Cc: Roland McGrath <roland@redhat.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/linkage.h

index b163c5c40dbcf2bb7a156d8a04b4f88731c025d7..2119610b24f812fe1c80a6f806c679af11d56ab9 100644 (file)
  * protection to work (ie no more work that the compiler might
  * end up needing stack temporaries for).
  */
+/* Assembly files may be compiled with -traditional .. */
+#ifndef __ASSEMBLY__
 #ifndef asmlinkage_protect
 # define asmlinkage_protect(n, ret, args...)   do { } while (0)
 #endif
+#endif
 
 #ifndef __ALIGN
 #define __ALIGN                .align 4,0x90