diff options
Diffstat (limited to 'arch/alpha/include/asm/io.h')
-rw-r--r-- | arch/alpha/include/asm/io.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/alpha/include/asm/io.h b/arch/alpha/include/asm/io.h index a887628f2ea6..1c3605d874e9 100644 --- a/arch/alpha/include/asm/io.h +++ b/arch/alpha/include/asm/io.h @@ -155,6 +155,7 @@ static inline void generic_##NAME(TYPE b, QUAL void __iomem *addr) \ REMAP1(unsigned int, ioread8, const) REMAP1(unsigned int, ioread16, const) REMAP1(unsigned int, ioread32, const) +REMAP1(u64, ioread64, const) REMAP1(u8, readb, const volatile) REMAP1(u16, readw, const volatile) REMAP1(u32, readl, const volatile) @@ -163,6 +164,7 @@ REMAP1(u64, readq, const volatile) REMAP2(u8, iowrite8, /**/) REMAP2(u16, iowrite16, /**/) REMAP2(u32, iowrite32, /**/) +REMAP2(u64, iowrite64, /**/) REMAP2(u8, writeb, volatile) REMAP2(u16, writew, volatile) REMAP2(u32, writel, volatile) @@ -400,12 +402,27 @@ extern inline unsigned int ioread32(const void __iomem *addr) return ret; } +extern inline u64 ioread64(const void __iomem *addr) +{ + unsigned int ret; + mb(); + ret = IO_CONCAT(__IO_PREFIX,ioread64)(addr); + mb(); + return ret; +} + extern inline void iowrite32(u32 b, void __iomem *addr) { mb(); IO_CONCAT(__IO_PREFIX, iowrite32)(b, addr); } +extern inline void iowrite64(u64 b, void __iomem *addr) +{ + mb(); + IO_CONCAT(__IO_PREFIX, iowrite64)(b, addr); +} + extern inline u32 inl(unsigned long port) { return ioread32(ioport_map(port, 4)); @@ -418,7 +435,9 @@ extern inline void outl(u32 b, unsigned long port) #endif #define ioread32 ioread32 +#define ioread64 ioread64 #define iowrite32 iowrite32 +#define iowrite64 iowrite64 #if IO_CONCAT(__IO_PREFIX,trivial_rw_bw) == 1 extern inline u8 __raw_readb(const volatile void __iomem *addr) |