[PATCH] ppc64: Fix readq & writeq

From: Benjamin Herrenschmidt
Date: Thu May 20 2004 - 00:53:18 EST


Hi Andrew !

This fixes busted asm constraints for readq & writeq implementation
on ppc64 that resulted in garbage beeing generated for writeq (plus
an obvious mistake in the prototype).

Please, apply
Ben.


===== include/asm-ppc64/io.h 1.17 vs edited =====
--- 1.17/include/asm-ppc64/io.h Sat May 15 12:00:27 2004
+++ edited/include/asm-ppc64/io.h Wed May 19 16:27:43 2004
@@ -326,7 +326,7 @@
"rldicl %1,%1,32,0\n"
"rlwimi %0,%1,8,8,31\n"
"rlwimi %0,%1,24,16,23\n"
- : "=r" (ret), "=r" (tmp) : "b" (addr) , "m" (*addr));
+ : "=r" (ret) , "=r" (tmp) : "b" (addr) , "m" (*addr));
return ret;
}

@@ -339,7 +339,7 @@
return ret;
}

-static inline void out_le64(volatile unsigned long *addr, int val)
+static inline void out_le64(volatile unsigned long *addr, unsigned long val)
{
unsigned long tmp;

@@ -351,9 +351,9 @@
"rldicl %1,%1,32,0\n"
"rlwimi %0,%1,8,8,31\n"
"rlwimi %0,%1,24,16,23\n"
- "std %0,0(%2)\n"
+ "std %0,0(%3)\n"
"sync"
- : "=r" (tmp) : "r" (val), "b" (addr) , "m" (*addr));
+ : "=&r" (tmp) , "=&r" (val) : "1" (val) , "b" (addr) , "m" (*addr));
}

static inline void out_be64(volatile unsigned long *addr, int val)


** Sent via the linuxppc64-dev mail list. See http://lists.linuxppc.org/
--
Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/