summaryrefslogtreecommitdiffstats
path: root/include/io.h
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2011-09-22 19:40:07 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2011-09-23 16:32:48 +0200
commit2e6a88f2101d608800d00183a3aceceee44d9fb0 (patch)
tree6474b97fd60a7ab74b90cadcb8bca053c5fad690 /include/io.h
parentd97b9ffdb3b6cd7feb70fae430cc2abb005815db (diff)
downloadbarebox-2e6a88f2101d608800d00183a3aceceee44d9fb0.tar.gz
barebox-2e6a88f2101d608800d00183a3aceceee44d9fb0.tar.xz
add cpu native ordered io accessors
There are no generic native ordered io accessors. This sometimes leads to v = in_be32(a); v = readl(a); in generic drivers. Instead, use io accessors which are explicitely native ordered. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'include/io.h')
-rw-r--r--include/io.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/include/io.h b/include/io.h
index 8eb56b061f..39b5e614b7 100644
--- a/include/io.h
+++ b/include/io.h
@@ -3,4 +3,21 @@
#include <asm/io.h>
+/* cpu_read/cpu_write: cpu native io accessors */
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define cpu_readb(a) readb(a)
+#define cpu_readw(a) in_be16(a)
+#define cpu_readl(a) in_be32(a)
+#define cpu_writeb(v, a) writeb((v), (a))
+#define cpu_writew(v, a) out_be16((a), (v))
+#define cpu_writel(v, a) out_be32((a), (v))
+#else
+#define cpu_readb(a) readb(a)
+#define cpu_readw(a) readw(a)
+#define cpu_readl(a) readl(a)
+#define cpu_writeb(v, a) writeb((v), (a))
+#define cpu_writew(v, a) writew((v), (a))
+#define cpu_writel(v, a) writel((v), (a))
+#endif
+
#endif /* __IO_H */