From a.othieno@bluewin.ch Tue Oct 11 07:50:21 2005 From: Arthur Othieno Subject: Big-endian I/O memory accessors. Date: Tue, 11 Oct 2005 07:50:21 +1000 X-Patchwork-ID: 2759 From: Arthur Othieno I/O memory accessors. Big endian version. For those busses/devices that do export big-endian I/O memory. Of notable relevance/reference: http://lwn.net/Articles/132804/ http://ozlabs.org/pipermail/linuxppc-embedded/2005-August/019798.html http://ozlabs.org/pipermail/linuxppc-embedded/2005-August/019752.html Signed-off-by: Arthur Othieno --- Paulus, A similar patch for ppc64 made it upstream with your big ppc64 merge. This one is still sitting in http://patchwork.ozlabs.org/linuxppc/ and didn't make it with the ppc32 equivalent. Thanks. include/asm-ppc/io.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) --- diff -uprN a/include/asm-ppc/io.h b/include/asm-ppc/io.h --- a/include/asm-ppc/io.h 2005-08-21 17:49:44.000000000 -0400 +++ b/include/asm-ppc/io.h 2005-08-21 20:29:55.000000000 -0400 @@ -487,11 +487,21 @@ static inline unsigned int ioread16(void return readw(addr); } +static inline unsigned int ioread16be(void __iomem *addr) +{ + return in_be16(addr); +} + static inline unsigned int ioread32(void __iomem *addr) { return readl(addr); } +static inline unsigned int ioread32be(void __iomem *addr) +{ + return in_be32(addr); +} + static inline void iowrite8(u8 val, void __iomem *addr) { writeb(val, addr); @@ -502,11 +512,21 @@ static inline void iowrite16(u16 val, vo writew(val, addr); } +static inline void iowrite16be(u16 val, void __iomem *addr) +{ + out_be16(addr, val); +} + static inline void iowrite32(u32 val, void __iomem *addr) { writel(val, addr); } +static inline void iowrite32be(u32 val, void __iomem *addr) +{ + out_be32(addr, val); +} + static inline void ioread8_rep(void __iomem *addr, void *dst, unsigned long count) { _insb(addr, dst, count);