diff options
Diffstat (limited to 'include/asm-generic/io-64-nonatomic-lo-hi.h')
| -rw-r--r-- | include/asm-generic/io-64-nonatomic-lo-hi.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/include/asm-generic/io-64-nonatomic-lo-hi.h b/include/asm-generic/io-64-nonatomic-lo-hi.h new file mode 100644 index 000000000000..ca546b1ff8b5 --- /dev/null +++ b/include/asm-generic/io-64-nonatomic-lo-hi.h | |||
| @@ -0,0 +1,28 @@ | |||
| 1 | #ifndef _ASM_IO_64_NONATOMIC_LO_HI_H_ | ||
| 2 | #define _ASM_IO_64_NONATOMIC_LO_HI_H_ | ||
| 3 | |||
| 4 | #include <linux/io.h> | ||
| 5 | #include <asm-generic/int-ll64.h> | ||
| 6 | |||
| 7 | #ifndef readq | ||
| 8 | static inline __u64 readq(const volatile void __iomem *addr) | ||
| 9 | { | ||
| 10 | const volatile u32 __iomem *p = addr; | ||
| 11 | u32 low, high; | ||
| 12 | |||
| 13 | low = readl(p); | ||
| 14 | high = readl(p + 1); | ||
| 15 | |||
| 16 | return low + ((u64)high << 32); | ||
| 17 | } | ||
| 18 | #endif | ||
| 19 | |||
| 20 | #ifndef writeq | ||
| 21 | static inline void writeq(__u64 val, volatile void __iomem *addr) | ||
| 22 | { | ||
| 23 | writel(val, addr); | ||
| 24 | writel(val >> 32, addr + 4); | ||
| 25 | } | ||
| 26 | #endif | ||
| 27 | |||
| 28 | #endif /* _ASM_IO_64_NONATOMIC_LO_HI_H_ */ | ||
