summaryrefslogtreecommitdiff
path: root/include/linux/io-64-nonatomic-hi-lo.h
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2015-08-28 09:27:14 +0200
committerArnd Bergmann <arnd@arndb.de>2015-10-15 00:21:07 +0200
commit2f8e2c877784a0b23f02b41550170a24e14f5c95 (patch)
tree70578f580b363151376a064ff9515fb8b100f974 /include/linux/io-64-nonatomic-hi-lo.h
parent049e6dde7e57f0054fdc49102e7ef4830c698b46 (diff)
downloadlwn-2f8e2c877784a0b23f02b41550170a24e14f5c95.tar.gz
lwn-2f8e2c877784a0b23f02b41550170a24e14f5c95.zip
move io-64-nonatomic*.h out of asm-generic
These are not implementations of default architecture code but helpers for drivers. Move them to the place they belong to. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Darren Hart <dvhart@linux.intel.com> Acked-by: Hitoshi Mitake <mitake.hitoshi@lab.ntt.co.jp> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'include/linux/io-64-nonatomic-hi-lo.h')
-rw-r--r--include/linux/io-64-nonatomic-hi-lo.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/include/linux/io-64-nonatomic-hi-lo.h b/include/linux/io-64-nonatomic-hi-lo.h
new file mode 100644
index 000000000000..11d7e840d913
--- /dev/null
+++ b/include/linux/io-64-nonatomic-hi-lo.h
@@ -0,0 +1,32 @@
+#ifndef _LINUX_IO_64_NONATOMIC_HI_LO_H_
+#define _LINUX_IO_64_NONATOMIC_HI_LO_H_
+
+#include <linux/io.h>
+#include <asm-generic/int-ll64.h>
+
+static inline __u64 hi_lo_readq(const volatile void __iomem *addr)
+{
+ const volatile u32 __iomem *p = addr;
+ u32 low, high;
+
+ high = readl(p + 1);
+ low = readl(p);
+
+ return low + ((u64)high << 32);
+}
+
+static inline void hi_lo_writeq(__u64 val, volatile void __iomem *addr)
+{
+ writel(val >> 32, addr + 4);
+ writel(val, addr);
+}
+
+#ifndef readq
+#define readq hi_lo_readq
+#endif
+
+#ifndef writeq
+#define writeq hi_lo_writeq
+#endif
+
+#endif /* _LINUX_IO_64_NONATOMIC_HI_LO_H_ */