diff --git a/arch/microblaze/include/asm/io.h b/arch/microblaze/include/asm/io.h
index 7e190d1..a35700e 100644
--- a/arch/microblaze/include/asm/io.h
+++ b/arch/microblaze/include/asm/io.h
@@ -46,14 +46,35 @@
 #define outl(x, addr)	((void) writel (x, addr))
 
 /* Some #definitions to keep strange Xilinx code happy */
-#define in_8(addr)	readb (addr)
-#define in_be16(addr)	readw (addr)
-#define in_be32(addr)	readl (addr)
+extern inline int in_8(volatile unsigned char *addr)
+{
+	return readb(addr);
+}
+
+extern inline int in_be16(volatile unsigned short *addr)
+{
+	return readw(addr);
+}
 
-#define out_8(addr,x )	outb (x,addr)
-#define out_be16(addr,x )	outw (x,addr)
-#define out_be32(addr,x )	outl (x,addr)
+extern inline int in_be32(volatile unsigned int *addr)
+{
+	return readl(addr);
+}
 
+extern inline void out_8(volatile unsigned char *addr, char val)
+{
+	outb (val, addr);
+}
+
+extern inline void out_be16(volatile unsigned short *addr, short val)
+{
+	outw (val, addr);
+}
+
+extern inline void out_be32(volatile unsigned int *addr, int val)
+{
+	outl (val, addr);
+}
 
 #define inb_p(port)		inb((port))
 #define outb_p(val, port)	outb((val), (port))
