]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - include/asm-m68k/io.h
Implement __raw_{read,write}[bwl] on all architectures
[karo-tx-uboot.git] / include / asm-m68k / io.h
index e14a581dc1645e2cbfbc6b9efdda2c27ab8929ce..29b3972473bcd41eec725eee3afa880a7cb158d5 100644 (file)
 
 #include <asm/byteorder.h>
 
+/* ++roman: The assignments to temp. vars avoid that gcc sometimes generates
+ * two accesses to memory, which may be undesirable for some devices.
+ */
+#define __raw_readb(addr) \
+    ({ u8 __v = (*(volatile u8 *) (addr)); __v; })
+#define __raw_readw(addr) \
+    ({ u16 __v = (*(volatile u16 *) (addr)); __v; })
+#define __raw_readl(addr) \
+    ({ u32 __v = (*(volatile u32 *) (addr)); __v; })
+
+#define __raw_writeb(addr,b) (void)((*(volatile u8 *) (addr)) = (b))
+#define __raw_writew(addr,w) (void)((*(volatile u16 *) (addr)) = (w))
+#define __raw_writel(addr,l) (void)((*(volatile u32 *) (addr)) = (l))
+
 #define readb(addr)            in_8((volatile u8 *)(addr))
 #define writeb(b,addr)         out_8((volatile u8 *)(addr), (b))
 #if !defined(__BIG_ENDIAN)