login
Header Space

 
 

[PATCH] [POWERPC] Improve (in|out)_beXX() asm code

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <linuxppc-dev@...>
Cc: <linux-kernel@...>, Trent Piepho <tpiepho@...>, Benjamin Herrenschmidt <benh@...>, Scott Wood <scottwood@...>
Date: Tuesday, May 20, 2008 - 4:40 pm

Since commit 4cb3cee03d558fd457cb58f56c80a2a09a66110c the code generated
for the in_beXX() and out_beXX() mmio functions has been sub-optimal.

The out_leXX() family of functions are created with the macro
DEF_MMIO_OUT_LE() while the out_beXX() family are created with
DEF_MMIO_OUT_BE().  In what was perhaps a bit too much macro use, both of
these macros are in turn created via the macro DEF_MMIO_OUT().

For the LE versions, eventually they boil down to an asm that will look
something like this:
asm("sync; stwbrx %1,0,%2" : "=m" (*addr) : "r" (val), "r" (addr));

While not perfect, this appears to be the best one can do.  The issue is
that the "stwbrx" instruction only comes in an indexed, or 'x', version, in
which the address is represented by the sum of two registers (the "0,%2").
Unfortunately, gcc doesn't have a constraint for an indexed memory
reference.  The "m" constraint allows both indexed and offset, i.e.
register plus constant, memory references and there is no "stwbr" version
for offset references.

The unused first operand to the asm is just to tell gcc that *addr is an
output of the asm.  The address used is passed in a single register via the
third asm operand, and the index register is just hard coded as 0.  This
means gcc is forced to put the address in a single register and can't use
index addressing, e.g. if one has the data in register 9, a base address in
register 3 and an index in register 4, gcc must emit code like "add 11,4,3;
stwbrx 9,0,11" instead of just "stwbrx 9,4,3".  This costs an extra add
instruction and another register.

This brings us the to problem with the BE version.  In this case, the "stw"
instruction does have both indexed and non-indexed versions.  The final asm
ends up looking like this:
asm("sync; stw%U0%X0 %1,%0" : "=m" (*addr) : "r" (val), "r" (addr));

The undocumented codes "%U0" and "%0X" will generate a 'u' if the memory
reference should be a auto-updating one, and an 'x' if the memory reference
is indexed, respectively.  The third operand is unused, it's just there
because asm the code is reused from the LE version.  However, gcc does not
know this, and generates unnecessary code to stick addr in a register!  To
use the example from the LE version, gcc will generate "add 11,4,3; stwx
9,4,3".  It is able to use the indexed address "4,3" for the "stwx", but
still thinks it needs to put 4+3 into register 11, which will never be
used.

This also ends up happening a lot for the offset addressing mode, where
common code like this:  out_be32(&device_registers->some_register, data);
uses an instruction like "stw 9, 42(3)", where register 3 has the pointer
device_registers and 42 is the offset of some_register in that structure.
gcc will be forced to generate the unnecessary instruction "addi 11, 3, 42"
to put the address into a single (unused) register.

The in_* versions end up having these exact same problems as well.

Signed-off-by: Trent Piepho <tpiepho@freescale.com>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: Scott Wood <scottwood@freescale.com>
---
There was some discussion on a Freescale list if the powerpc I/O accessors
should be strictly ordered w.r.t.  normal memory.  Currently they are not.  It
does not appear as if any other architecture's I/O accessors are strictly
ordered in this manner.  memory-barriers.txt explicitly states that the I/O
space (inb, outw, etc.) are NOT strictly ordered w.r.t. normal memory
accesses and it's implied the other I/O accessors (e.g., writel) are the same.

However, it is somewhat harder to program for this model, and there are almost
certainly a number of drivers using coherent DMA which have subtle bugs because
the do not include the necessary barriers.

But clearly and change to this would be a subject for a different patch.

 include/asm-powerpc/io.h |   44 +++++++++++++++++++++++++-------------------
 1 files changed, 25 insertions(+), 19 deletions(-)

diff --git a/include/asm-powerpc/io.h b/include/asm-powerpc/io.h
index e0062d7..795b5d4 100644
--- a/include/asm-powerpc/io.h
+++ b/include/asm-powerpc/io.h
@@ -95,33 +95,39 @@ extern resource_size_t isa_mem_base;
 #define IO_SET_SYNC_FLAG()
 #endif
 
-#define DEF_MMIO_IN(name, type, insn)					\
-static inline type name(const volatile type __iomem *addr)		\
+#define DEF_MMIO_IN_LE(name, size, insn)				\
+static inline u##size name(const volatile u##size __iomem *addr)	\
 {									\
-	type ret;							\
-	__asm__ __volatile__("sync;" insn ";twi 0,%0,0;isync"		\
- 		: "=r" (ret) : "r" (addr), "m" (*addr));		\
+	u##size ret;							\
+	__asm__ __volatile__("sync;"#insn" %0,0,%1;twi 0,%0,0;isync"	\
+		: "=r" (ret) : "r" (addr), "m" (*addr));		\
 	return ret;							\
 }
 
-#define DEF_MMIO_OUT(name, type, insn)					\
-static inline void name(volatile type __iomem *addr, type val)		\
+#define DEF_MMIO_IN_BE(name, size, insn)				\
+static inline u##size name(const volatile u##size __iomem *addr)	\
 {									\
-	__asm__ __volatile__("sync;" insn				\
- 		: "=m" (*addr) : "r" (val), "r" (addr));		\
-	IO_SET_SYNC_FLAG();					\
+	u##size ret;							\
+	__asm__ __volatile__("sync;"#insn"%U1%X1 %0,%1;twi 0,%0,0;isync"\
+		: "=r" (ret) : "m" (*addr));				\
+	return ret;							\
 }
 
+#define DEF_MMIO_OUT_BE(name, size, insn)				\
+static inline void name(volatile u##size __iomem *addr, u##size val)	\
+{									\
+	__asm__ __volatile__("sync;"#insn"%U0%X0 %1,%0"			\
+		: "=m" (*addr) : "r" (val));				\
+	IO_SET_SYNC_FLAG();						\
+}
 
-#define DEF_MMIO_IN_BE(name, size, insn) \
-	DEF_MMIO_IN(name, u##size, __stringify(insn)"%U2%X2 %0,%2")
-#define DEF_MMIO_IN_LE(name, size, insn) \
-	DEF_MMIO_IN(name, u##size, __stringify(insn)" %0,0,%1")
-
-#define DEF_MMIO_OUT_BE(name, size, insn) \
-	DEF_MMIO_OUT(name, u##size, __stringify(insn)"%U0%X0 %1,%0")
-#define DEF_MMIO_OUT_LE(name, size, insn) \
-	DEF_MMIO_OUT(name, u##size, __stringify(insn)" %1,0,%2")
+#define DEF_MMIO_OUT_LE(name, size, insn) 				\
+static inline void name(volatile u##size __iomem *addr, u##size val)	\
+{									\
+	__asm__ __volatile__("sync;"#insn" %1,0,%2"			\
+		: "=m" (*addr) : "r" (val), "r" (addr));		\
+	IO_SET_SYNC_FLAG();						\
+}
 
 DEF_MMIO_IN_BE(in_8,     8, lbz);
 DEF_MMIO_IN_BE(in_be16, 16, lhz);
-- 
1.5.4.1

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Trent Piepho, (Tue May 20, 4:40 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Andreas Schwab, (Tue May 20, 6:00 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Trent Piepho, (Tue May 20, 6:11 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Andreas Schwab, (Tue May 20, 6:47 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Trent Piepho, (Tue May 20, 7:14 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Andreas Schwab, (Wed May 21, 4:03 am)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Trent Piepho, (Wed May 21, 4:25 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Benjamin Herrenschmidt, (Tue May 20, 5:16 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Trent Piepho, (Tue May 20, 6:00 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Benjamin Herrenschmidt, (Wed May 21, 10:00 am)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Trent Piepho, (Wed May 21, 3:44 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Benjamin Herrenschmidt, (Wed May 21, 4:41 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Trent Piepho, (Tue May 20, 6:55 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Benjamin Herrenschmidt, (Wed May 21, 10:01 am)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, David Miller, (Tue May 20, 6:39 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, David Miller, (Tue May 20, 6:53 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Benjamin Herrenschmidt, (Fri May 23, 12:24 am)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Trent Piepho, (Thu May 22, 6:56 pm)
MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Mon May 26, 9:33 pm)
Re: MMIO and gcc re-ordering issue, Jonathan Corbet, (Tue May 27, 11:28 am)
Re: MMIO and gcc re-ordering issue, David Miller, (Mon May 26, 9:40 pm)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Mon May 26, 10:15 pm)
Re: MMIO and gcc re-ordering issue, David Miller, (Mon May 26, 10:28 pm)
Re: MMIO and gcc re-ordering issue, Alan Cox, (Tue May 27, 4:24 am)
Re: MMIO and gcc re-ordering issue, Arjan van de Ven, (Mon May 26, 11:42 pm)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Tue May 27, 3:08 am)
Re: MMIO and gcc re-ordering issue, Roland Dreier, (Tue May 27, 11:50 am)
Re: MMIO and gcc re-ordering issue, Pavel Machek, (Sat May 31, 4:04 am)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Tue May 27, 5:11 pm)
Re: MMIO and gcc re-ordering issue, Roland Dreier, (Tue May 27, 5:33 pm)
Re: MMIO and gcc re-ordering issue, Jes Sorensen, (Thu May 29, 10:47 am)
Re: MMIO and gcc re-ordering issue, Jeremy Higdon, (Sat May 31, 3:52 am)
Re: MMIO and gcc re-ordering issue, Jes Sorensen, (Mon Jun 2, 5:56 am)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Tue Jun 3, 12:33 am)
Re: MMIO and gcc re-ordering issue, Jesse Barnes, (Tue Jun 3, 12:52 pm)
Re: MMIO and gcc re-ordering issue, Jes Sorensen, (Thu Jun 5, 4:40 am)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Thu Jun 5, 4:43 am)
Re: MMIO and gcc re-ordering issue, Matthew Wilcox, (Thu Jun 12, 11:07 am)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Thu Jun 12, 8:07 pm)
Re: MMIO and gcc re-ordering issue, Jeremy Higdon, (Tue Jun 3, 4:15 am)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Tue Jun 3, 4:19 am)
Re: MMIO and gcc re-ordering issue, Jeremy Higdon, (Tue Jun 3, 4:45 am)
Re: MMIO and gcc re-ordering issue, Jeremy Higdon, (Mon Jun 2, 5:02 pm)
Re: MMIO and gcc re-ordering issue, Roland Dreier, (Thu May 29, 6:06 pm)
Re: MMIO and gcc re-ordering issue, Trent Piepho, (Thu May 29, 6:25 pm)
Re: MMIO and gcc re-ordering issue, Paul Mackerras, (Thu May 29, 11:56 pm)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Thu May 29, 5:40 pm)
Re: MMIO and gcc re-ordering issue, Jes Sorensen, (Fri May 30, 5:48 am)
Re: MMIO and gcc re-ordering issue, Pavel Machek, (Sat May 31, 4:14 am)
Re: MMIO and gcc re-ordering issue, Jes Sorensen, (Mon Jun 2, 5:48 am)
Re: MMIO and gcc re-ordering issue, Jesse Barnes, (Thu May 29, 5:53 pm)
Re: MMIO and gcc re-ordering issue, Jes Sorensen, (Fri May 30, 5:39 am)
Re: MMIO and gcc re-ordering issue, Trent Piepho, (Thu May 29, 5:48 pm)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Thu May 29, 6:05 pm)
Re: MMIO and gcc re-ordering issue, Trent Piepho, (Thu May 29, 9:53 pm)
Re: MMIO and gcc re-ordering issue, James Bottomley, (Thu May 29, 11:01 am)
Re: MMIO and gcc re-ordering issue, Jes Sorensen, (Fri May 30, 5:36 am)
Re: MMIO and gcc re-ordering issue, Jesse Barnes, (Fri May 30, 1:21 pm)
Re: MMIO and gcc re-ordering issue, Jeremy Higdon, (Sat May 31, 3:57 am)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Tue May 27, 6:13 pm)
Re: MMIO and gcc re-ordering issue, Roland Dreier, (Tue May 27, 6:39 pm)
Re: MMIO and gcc re-ordering issue, James Bottomley, (Tue May 27, 12:37 pm)
Re: MMIO and gcc re-ordering issue, Roland Dreier, (Tue May 27, 1:38 pm)
Re: MMIO and gcc re-ordering issue, James Bottomley, (Tue May 27, 1:53 pm)
Re: MMIO and gcc re-ordering issue, Roland Dreier, (Tue May 27, 2:07 pm)
Re: MMIO and gcc re-ordering issue, Chris Friesen, (Tue May 27, 5:23 pm)
Re: MMIO and gcc re-ordering issue, Paul Mackerras, (Tue May 27, 7:04 pm)
Re: MMIO and gcc re-ordering issue, Roland Dreier, (Tue May 27, 5:29 pm)
Re: MMIO and gcc re-ordering issue, Roland Dreier, (Tue May 27, 2:17 pm)
Re: MMIO and gcc re-ordering issue, Roland Dreier, (Tue May 27, 12:08 am)
Re: MMIO and gcc re-ordering issue, Arjan van de Ven, (Tue May 27, 12:20 am)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Mon May 26, 11:39 pm)
Re: MMIO and gcc re-ordering issue, Linus Torvalds, (Tue May 27, 11:35 am)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Tue May 27, 5:10 pm)
Re: MMIO and gcc re-ordering issue, Linus Torvalds, (Tue May 27, 5:30 pm)
Re: MMIO and gcc re-ordering issue, Alan Cox, (Tue May 27, 5:38 pm)
Re: MMIO and gcc re-ordering issue, Linus Torvalds, (Tue May 27, 5:59 pm)
Re: MMIO and gcc re-ordering issue, Matthew Wilcox, (Tue May 27, 5:53 pm)
Re: MMIO and gcc re-ordering issue, Linus Torvalds, (Tue May 27, 6:02 pm)
Re: MMIO and gcc re-ordering issue, Alan Cox, (Tue May 27, 5:46 pm)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Tue May 27, 5:38 pm)
Re: MMIO and gcc re-ordering issue, Linus Torvalds, (Tue May 27, 5:55 pm)
Re: MMIO and gcc re-ordering issue, Russell King, (Mon Jun 2, 3:24 am)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Tue Jun 3, 12:16 am)
Re: MMIO and gcc re-ordering issue, Trent Piepho, (Tue Jun 3, 3:43 pm)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Tue Jun 3, 6:26 pm)
Re: MMIO and gcc re-ordering issue, Matthew Wilcox, (Tue Jun 3, 5:33 pm)
Re: MMIO and gcc re-ordering issue, Trent Piepho, (Tue Jun 3, 5:44 pm)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Tue Jun 3, 10:25 pm)
Re: MMIO and gcc re-ordering issue, Trent Piepho, (Wed Jun 4, 2:39 am)
Re: MMIO and gcc re-ordering issue, Linus Torvalds, (Tue Jun 3, 10:47 am)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Tue Jun 3, 10:19 pm)
Re: MMIO and gcc re-ordering issue, Trent Piepho, (Tue Jun 3, 2:47 pm)
Re: MMIO and gcc re-ordering issue, Linus Torvalds, (Tue Jun 3, 3:07 pm)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Tue Jun 10, 2:56 am)
Re: MMIO and gcc re-ordering issue, Paul Mackerras, (Wed Jun 11, 1:20 am)
Re: MMIO and gcc re-ordering issue, Paul Mackerras, (Wed Jun 11, 12:18 am)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Wed Jun 11, 1:00 am)
Re: MMIO and gcc re-ordering issue, Linus Torvalds, (Wed Jun 11, 10:46 am)
Re: MMIO and gcc re-ordering issue, Paul Mackerras, (Wed Jun 11, 1:13 am)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Wed Jun 11, 1:35 am)
Re: MMIO and gcc re-ordering issue, Paul Mackerras, (Thu Jun 12, 8:14 am)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Thu Jun 12, 9:08 am)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Wed Jun 11, 2:02 am)
Re: MMIO and gcc re-ordering issue, Jesse Barnes, (Tue Jun 10, 1:41 pm)
Re: MMIO and gcc re-ordering issue, James Bottomley, (Tue Jun 10, 2:10 pm)
Re: MMIO and gcc re-ordering issue, Roland Dreier, (Tue Jun 10, 3:05 pm)
Re: MMIO and gcc re-ordering issue, Jesse Barnes, (Tue Jun 10, 3:19 pm)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Tue Jun 10, 11:29 pm)
Re: MMIO and gcc re-ordering issue, Jesse Barnes, (Wed Jun 11, 12:07 pm)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Thu Jun 12, 7:27 am)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Tue Jun 10, 11:40 pm)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Wed Jun 11, 12:06 am)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Tue Jun 3, 10:05 pm)
Re: MMIO and gcc re-ordering issue, Linus Torvalds, (Tue Jun 3, 10:46 pm)
Re: MMIO and gcc re-ordering issue, Alan Cox, (Wed Jun 4, 7:47 am)
Re: MMIO and gcc re-ordering issue, Matthew Wilcox, (Tue Jun 3, 2:55 pm)
Re: MMIO and gcc re-ordering issue, Trent Piepho, (Tue Jun 3, 3:57 pm)
Re: MMIO and gcc re-ordering issue, Matthew Wilcox, (Tue Jun 3, 5:35 pm)
Re: MMIO and gcc re-ordering issue, Trent Piepho, (Tue Jun 3, 5:58 pm)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Tue Jun 3, 10:00 pm)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Tue Jun 3, 12:32 am)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Tue Jun 3, 2:11 am)
Re: MMIO and gcc re-ordering issue, Paul Mackerras, (Tue Jun 3, 2:53 am)
Re: MMIO and gcc re-ordering issue, Nick Piggin, (Tue Jun 3, 3:18 am)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Tue Jun 3, 2:48 am)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Tue May 27, 6:19 pm)
Re: MMIO and gcc re-ordering issue, Arnd Bergmann, (Thu May 29, 3:10 am)
Re: MMIO and gcc re-ordering issue, Alan Cox, (Thu May 29, 6:46 am)
Re: MMIO and gcc re-ordering issue, Matthew Wilcox, (Tue May 27, 5:42 pm)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Tue May 27, 6:17 pm)
Re: MMIO and gcc re-ordering issue, Haavard Skinnemoen, (Wed May 28, 4:36 am)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Thu May 29, 9:13 pm)
Re: MMIO and gcc re-ordering issue, Haavard Skinnemoen, (Fri May 30, 2:07 am)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Fri May 30, 3:24 am)
Re: MMIO and gcc re-ordering issue, Haavard Skinnemoen, (Fri May 30, 4:27 am)
Re: MMIO and gcc re-ordering issue, Geert Uytterhoeven, (Fri May 30, 5:22 am)
Re: MMIO and gcc re-ordering issue, Haavard Skinnemoen, (Mon Jun 2, 4:11 am)
Re: MMIO and gcc re-ordering issue, Linus Torvalds, (Wed Jun 4, 11:31 am)
Re: MMIO and gcc re-ordering issue, Scott Wood, (Mon Jun 2, 11:48 am)
Re: MMIO and gcc re-ordering issue, Haavard Skinnemoen, (Tue Jun 3, 3:46 am)
Re: MMIO and gcc re-ordering issue, Pantelis Antoniou, (Thu May 29, 7:05 am)
Re: MMIO and gcc re-ordering issue, Trent Piepho, (Tue May 27, 2:23 pm)
Re: MMIO and gcc re-ordering issue, Scott Wood, (Tue May 27, 2:33 pm)
Re: MMIO and gcc re-ordering issue, Linus Torvalds, (Tue May 27, 12:47 pm)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Tue May 27, 5:12 pm)
Re: MMIO and gcc re-ordering issue, Linus Torvalds, (Tue May 27, 1:31 pm)
Re: MMIO and gcc re-ordering issue, Ingo Molnar, (Mon Jun 2, 6:36 am)
Re: MMIO and gcc re-ordering issue, Benjamin Herrenschmidt, (Mon Jun 2, 5:53 pm)
MMIO and gcc re-ordering (Was: [PATCH] [POWERPC] Improve (in..., Benjamin Herrenschmidt, (Fri May 23, 8:36 am)
Re: MMIO and gcc re-ordering (Was: [PATCH] [POWERPC] Improve..., Benjamin Herrenschmidt, (Fri May 23, 8:50 am)
Re: MMIO and gcc re-ordering (Was: [PATCH] [POWERPC] Improve..., Benjamin Herrenschmidt, (Fri May 23, 6:47 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Benjamin Herrenschmidt, (Tue May 20, 6:02 pm)
Re: [PATCH] [POWERPC] Improve (in|out)_beXX() asm code, Trent Piepho, (Tue May 20, 6:21 pm)
speck-geostationary