x86: Add 64-bit memory-mapped I/O functions
authorIvan Gorinov <ivan.gorinov@intel.com>
Fri, 6 Apr 2018 21:43:04 +0000 (14:43 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Mon, 16 Apr 2018 08:54:51 +0000 (16:54 +0800)
Add readq() and writeq() definitions for x86.

Please note: in 32-bit code readq/writeq will generate two 32-bit
memory access instructions instead of one atomic 64-bit operation.

Signed-off-by: Ivan Gorinov <ivan.gorinov@intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
arch/x86/include/asm/io.h

index 263dd8fd170e9da45df1c6877202fdde5aec9086..4ab008074af7ba3ac1d1054b3ff396c1af43a45b 100644 (file)
 #define readb(addr) (*(volatile unsigned char *) (addr))
 #define readw(addr) (*(volatile unsigned short *) (addr))
 #define readl(addr) (*(volatile unsigned int *) (addr))
+#define readq(addr) (*(volatile unsigned long long *) (addr))
 #define __raw_readb readb
 #define __raw_readw readw
 #define __raw_readl readl
+#define __raw_readq readq
 
 #define writeb(b,addr) (*(volatile unsigned char *) (addr) = (b))
 #define writew(b,addr) (*(volatile unsigned short *) (addr) = (b))
 #define writel(b,addr) (*(volatile unsigned int *) (addr) = (b))
+#define writeq(b,addr) (*(volatile unsigned long long *) (addr) = (b))
 #define __raw_writeb writeb
 #define __raw_writew writew
 #define __raw_writel writel
+#define __raw_writeq writeq
 
 #define memset_io(a,b,c)       memset((a),(b),(c))
 #define memcpy_fromio(a,b,c)   memcpy((a),(b),(c))