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