diff options
Diffstat (limited to 'arch/x86/include/asm/io.h')
-rw-r--r-- | arch/x86/include/asm/io.h | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h index 263dd8fd170..d1aaa5fc783 100644 --- a/arch/x86/include/asm/io.h +++ b/arch/x86/include/asm/io.h @@ -61,49 +61,53 @@ #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)) #define memcpy_toio(a,b,c) memcpy((a),(b),(c)) -#define write_arch(type, endian, a, v) __raw_write##type(cpu_to_##endian(v), a) -#define read_arch(type, endian, a) endian##_to_cpu(__raw_read##type(a)) +#define out_arch(type, endian, a, v) __raw_write##type(cpu_to_##endian(v), a) +#define in_arch(type, endian, a) endian##_to_cpu(__raw_read##type(a)) -#define write_le64(a, v) write_arch(q, le64, a, v) -#define write_le32(a, v) write_arch(l, le32, a, v) -#define write_le16(a, v) write_arch(w, le16, a, v) +#define out_le64(a, v) out_arch(q, le64, a, v) +#define out_le32(a, v) out_arch(l, le32, a, v) +#define out_le16(a, v) out_arch(w, le16, a, v) -#define read_le64(a) read_arch(q, le64, a) -#define read_le32(a) read_arch(l, le32, a) -#define read_le16(a) read_arch(w, le16, a) +#define in_le64(a) in_arch(q, le64, a) +#define in_le32(a) in_arch(l, le32, a) +#define in_le16(a) in_arch(w, le16, a) -#define write_be32(a, v) write_arch(l, be32, a, v) -#define write_be16(a, v) write_arch(w, be16, a, v) +#define out_be32(a, v) out_arch(l, be32, a, v) +#define out_be16(a, v) out_arch(w, be16, a, v) -#define read_be32(a) read_arch(l, be32, a) -#define read_be16(a) read_arch(w, be16, a) +#define in_be32(a) in_arch(l, be32, a) +#define in_be16(a) in_arch(w, be16, a) -#define write_8(a, v) __raw_writeb(v, a) -#define read_8(a) __raw_readb(a) +#define out_8(a, v) __raw_writeb(v, a) +#define in_8(a) __raw_readb(a) #define clrbits(type, addr, clear) \ - write_##type((addr), read_##type(addr) & ~(clear)) + out_##type((addr), in_##type(addr) & ~(clear)) #define setbits(type, addr, set) \ - write_##type((addr), read_##type(addr) | (set)) + out_##type((addr), in_##type(addr) | (set)) #define clrsetbits(type, addr, clear, set) \ - write_##type((addr), (read_##type(addr) & ~(clear)) | (set)) + out_##type((addr), (in_##type(addr) & ~(clear)) | (set)) #define clrbits_be32(addr, clear) clrbits(be32, addr, clear) #define setbits_be32(addr, set) setbits(be32, addr, set) |