+
+/*
+ * ISA space is mapped to some machine-specific location on Alpha.
+ * Call into the existing hooks to get the address translated.
+ */
+
+static inline u8
+isa_readb(unsigned long offset)
+{
+ void __iomem *addr = ioremap(offset, 1);
+ u8 ret = readb(addr);
+ iounmap(addr);
+ return ret;
+}
+
+static inline u16
+isa_readw(unsigned long offset)
+{
+ void __iomem *addr = ioremap(offset, 2);
+ u16 ret = readw(addr);
+ iounmap(addr);
+ return ret;
+}
+
+static inline u32
+isa_readl(unsigned long offset)
+{
+ void __iomem *addr = ioremap(offset, 2);
+ u32 ret = readl(addr);
+ iounmap(addr);
+ return ret;
+}
+
+static inline void
+isa_writeb(u8 b, unsigned long offset)
+{
+ void __iomem *addr = ioremap(offset, 2);
+ writeb(b, addr);
+ iounmap(addr);
+}
+
+static inline void
+isa_writew(u16 w, unsigned long offset)
+{
+ void __iomem *addr = ioremap(offset, 2);
+ writew(w, addr);
+ iounmap(addr);
+}
+
+static inline void
+isa_writel(u32 l, unsigned long offset)
+{
+ void __iomem *addr = ioremap(offset, 2);
+ writel(l, addr);
+ iounmap(addr);
+}
+
+static inline void
+isa_memset_io(unsigned long offset, u8 val, long n)
+{
+ void __iomem *addr = ioremap(offset, n);
+ memset_io(addr, val, n);
+ iounmap(addr);
+}
+
+static inline void
+isa_memcpy_fromio(void *dest, unsigned long offset, long n)
+{
+ void __iomem *addr = ioremap(offset, n);
+ memcpy_fromio(dest, addr, n);
+ iounmap(addr);
+}
+
+static inline void
+isa_memcpy_toio(unsigned long offset, const void *src, long n)
+{
+ void __iomem *addr = ioremap(offset, n);
+ memcpy_toio(addr, src, n);
+ iounmap(addr);
+}
+