Commit | Line | Data |
---|---|---|
797a796a HM |
1 | #ifndef _ASM_IO_64_NONATOMIC_HI_LO_H_ |
2 | #define _ASM_IO_64_NONATOMIC_HI_LO_H_ | |
3 | ||
4 | #include <linux/io.h> | |
5 | #include <asm-generic/int-ll64.h> | |
6 | ||
3a044178 | 7 | static inline __u64 hi_lo_readq(const volatile void __iomem *addr) |
797a796a HM |
8 | { |
9 | const volatile u32 __iomem *p = addr; | |
10 | u32 low, high; | |
11 | ||
12 | high = readl(p + 1); | |
13 | low = readl(p); | |
14 | ||
15 | return low + ((u64)high << 32); | |
16 | } | |
797a796a | 17 | |
3a044178 | 18 | static inline void hi_lo_writeq(__u64 val, volatile void __iomem *addr) |
797a796a HM |
19 | { |
20 | writel(val >> 32, addr + 4); | |
21 | writel(val, addr); | |
22 | } | |
3a044178 JB |
23 | |
24 | #ifndef readq | |
25 | #define readq hi_lo_readq | |
26 | #endif | |
27 | ||
28 | #ifndef writeq | |
29 | #define writeq hi_lo_writeq | |
797a796a HM |
30 | #endif |
31 | ||
32 | #endif /* _ASM_IO_64_NONATOMIC_HI_LO_H_ */ |