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 7 #ifndef readq readq(const volatile void __iomem * addr)8static inline __u64 readq(const volatile void __iomem *addr) 9 { 10 const volatile u32 __iomem *p = addr; 11 u32 low, high; 12 13 high = readl(p + 1); 14 low = readl(p); 15 16 return low + ((u64)high << 32); 17 } 18 #endif 19 20 #ifndef writeq writeq(__u64 val,volatile void __iomem * addr)21static inline void writeq(__u64 val, volatile void __iomem *addr) 22 { 23 writel(val >> 32, addr + 4); 24 writel(val, addr); 25 } 26 #endif 27 28 #endif /* _ASM_IO_64_NONATOMIC_HI_LO_H_ */ 29