in_be64() assembly

Jake Moilanen moilanen at
Wed Jan 5 09:13:54 EST 2005

I'm trying to use in_be64() and when I build, I get a compile errors:

{standard input}: Assembler messages:
{standard input}:5534: Error: syntax error; found `(' but expected `)'
{standard input}:5534: Error: junk at end of line: `(3))'
make[1]: *** [arch/ppc64/xmon/xmon.o] Error 1
make: *** [arch/ppc64/xmon] Error 2
make: *** Waiting for unfinished jobs....

Olof pointed out that in/out_le64 use a "b" operand for the addr.

In in_be64(), when changed the "m" operand to a "b", the kernel built
fine (although I haven't tried running it yet).  What does the "b"
operand mean?

Patch used below.



diff -puN include/asm-ppc64/io.h~in_be64-fix include/asm-ppc64/io.h
--- linux-2.6-bk/include/asm-ppc64/io.h~in_be64-fix	Tue Jan  4 15:33:22 2005
+++ linux-2.6-bk-moilanen/include/asm-ppc64/io.h	Tue Jan  4 15:59:50 2005
@@ -372,7 +372,7 @@ static inline unsigned long in_be64(cons
 	unsigned long ret;
 	__asm__ __volatile__("ld %0,0(%1); twi 0,%0,0; isync"
-			     : "=r" (ret) : "m" (*addr));
+			     : "=r" (ret) : "b" (*addr));
 	return ret;


More information about the Linuxppc64-dev mailing list