summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro <viro@ftp.linux.org.uk>2007-02-10 01:43:41 -0800
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-02-11 10:51:20 -0800
commit38135614ddef4de16d5cdf03c2717e88b97dd2ab (patch)
tree3c5b1f21a38bf67773dd656d9dbb725ce689b31c
parentfabb626ad6a3744b9f0eaae215a2418d521c1e14 (diff)
downloadlinux-stable-38135614ddef4de16d5cdf03c2717e88b97dd2ab.tar.gz
linux-stable-38135614ddef4de16d5cdf03c2717e88b97dd2ab.tar.bz2
linux-stable-38135614ddef4de16d5cdf03c2717e88b97dd2ab.zip
[PATCH] m68k: work around binutils tokenizer change
Recent as(1) doesn't think that . terminates a macro name, so getuser.l is _not_ treated as invoking getuser with .l as the first argument. arch/m68k/math-emu relies on old behaviour, so it gets a lot of undefined macros with more or less current binutils. Note that this behaviour remains in all recent versions and is unrelated to another binutils problems we used to have for a while (having (%a0)+ parsed as two arguments). This one is there to stay; it's an intentional and documented change. .irp <identifier> <words> [text] .endr expands to a copy of text per each word, with \<identifier> replaced with corresponding word. Again, what happens depends on whether gas_ident.x is treated as one or as two tokens; in the former case we'll get old_gas incremented once, in the latter - twice. The rest is obvious. Unlike .macro argument list _anything_ is explicitly allowed after .irp <identifier>; here we are on very safe ground. And yes, it does work with all gas variants I've got here (including vanilla 2.15, 2.16, 2.16.1 and 2.17, plus debian and FC binutils). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Cc: Roman Zippel <zippel@linux-m68k.org> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--include/asm-m68k/math-emu.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/asm-m68k/math-emu.h b/include/asm-m68k/math-emu.h
index 7ac6259b68df..ddfab96403cb 100644
--- a/include/asm-m68k/math-emu.h
+++ b/include/asm-m68k/math-emu.h
@@ -226,6 +226,21 @@ extern unsigned int fp_debugprint;
.previous
.endm
+/* work around binutils idiocy */
+old_gas=-1
+.irp gas_ident.x .x
+old_gas=old_gas+1
+.endr
+.if !old_gas
+.irp m b,w,l
+.macro getuser.\m src,dest,label,addr
+ getuser .\m,\src,\dest,\label,\addr
+.endm
+.macro putuser.\m src,dest,label,addr
+ putuser .\m,\src,\dest,\label,\addr
+.endm
+.endr
+.endif
.macro movestack nr,arg1,arg2,arg3,arg4,arg5
.if \nr