ppc32: Big-endian I/O memory accessors.
PATCH 1/1 ppc32: Big-endian I/O memory accessors.
From: Arthur Othieno <[email protected]>
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 <[email protected]>
---
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(+)
include/asm-ppc/io.h +20 -0
@@ -487,11 +487,21 @@ static inline unsigned int ioread16(voidreturn 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, vowritew (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);