-#ifdef __WANT_IO_DEF
-
-#define __inb jensen_inb
-#define __inw jensen_inw
-#define __inl jensen_inl
-#define __outb jensen_outb
-#define __outw jensen_outw
-#define __outl jensen_outl
-#define __readb jensen_readb
-#define __readw jensen_readw
-#define __writeb jensen_writeb
-#define __writew jensen_writew
-#define __readl jensen_readl
-#define __readq jensen_readq
-#define __writel jensen_writel
-#define __writeq jensen_writeq
-#define __ioremap jensen_ioremap
-#define __iounmap(a) jensen_iounmap((unsigned long)a)
-#define __is_ioaddr jensen_is_ioaddr
+/* New-style ioread interface. All the routines are so ugly for Jensen
+ that it doesn't make sense to merge them. */
+
+#define IOPORT(OS, NS) \
+__EXTERN_INLINE unsigned int jensen_ioread##NS(void __iomem *xaddr) \
+{ \
+ if (jensen_is_mmio(xaddr)) \
+ return jensen_read##OS(xaddr - 0x100000000ul); \
+ else \
+ return jensen_in##OS((unsigned long)xaddr); \
+} \
+__EXTERN_INLINE void jensen_iowrite##NS(u##NS b, void __iomem *xaddr) \
+{ \
+ if (jensen_is_mmio(xaddr)) \
+ jensen_write##OS(b, xaddr - 0x100000000ul); \
+ else \
+ jensen_out##OS(b, (unsigned long)xaddr); \
+}