Blame view

include/linux/io-64-nonatomic-lo-hi.h 610 Bytes
2f8e2c877   Christoph Hellwig   move io-64-nonato...
1
2
  #ifndef _LINUX_IO_64_NONATOMIC_LO_HI_H_
  #define _LINUX_IO_64_NONATOMIC_LO_HI_H_
797a796a1   Hitoshi Mitake   asm-generic: arch...
3
4
5
  
  #include <linux/io.h>
  #include <asm-generic/int-ll64.h>
3a044178c   Jason Baron   readq/writeq: Add...
6
  static inline __u64 lo_hi_readq(const volatile void __iomem *addr)
797a796a1   Hitoshi Mitake   asm-generic: arch...
7
8
9
10
11
12
13
14
15
  {
  	const volatile u32 __iomem *p = addr;
  	u32 low, high;
  
  	low = readl(p);
  	high = readl(p + 1);
  
  	return low + ((u64)high << 32);
  }
797a796a1   Hitoshi Mitake   asm-generic: arch...
16

3a044178c   Jason Baron   readq/writeq: Add...
17
  static inline void lo_hi_writeq(__u64 val, volatile void __iomem *addr)
797a796a1   Hitoshi Mitake   asm-generic: arch...
18
19
20
21
  {
  	writel(val, addr);
  	writel(val >> 32, addr + 4);
  }
3a044178c   Jason Baron   readq/writeq: Add...
22
23
24
25
26
27
28
  
  #ifndef readq
  #define readq lo_hi_readq
  #endif
  
  #ifndef writeq
  #define writeq lo_hi_writeq
797a796a1   Hitoshi Mitake   asm-generic: arch...
29
  #endif
2f8e2c877   Christoph Hellwig   move io-64-nonato...
30
  #endif	/* _LINUX_IO_64_NONATOMIC_LO_HI_H_ */