* [PATCH] ppc64: Fix readq & writeq
@ 2004-05-20 5:33 Benjamin Herrenschmidt
0 siblings, 0 replies; only message in thread
From: Benjamin Herrenschmidt @ 2004-05-20 5:33 UTC (permalink / raw)
To: Andrew Morton; +Cc: Linus Torvalds, Linux Kernel list
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@kernel.crashing.org>
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2004-05-20 5:40 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-05-20 5:33 [PATCH] ppc64: Fix readq & writeq Benjamin Herrenschmidt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®