| Hitoshi Mitake | 797a796 | 2012-02-07 11:45:33 +0900 | [diff] [blame] | 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 | 
|  | 8 | static 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 | 
|  | 21 | static 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_ */ |