diff --git a/arch/nios2/include/asm/io.h b/arch/nios2/include/asm/io.h
index 2200dab5b3a5201b36b3771dc7b0ecf99281ab52..d0adf08cd6a54be52ff688fc0bc38464a13b3008 100644
--- a/arch/nios2/include/asm/io.h
+++ b/arch/nios2/include/asm/io.h
@@ -44,13 +44,10 @@ static inline phys_addr_t virt_to_phys(void * vaddr)
 
 static inline void *ioremap(unsigned long physaddr, unsigned long size)
 {
-	return (void *)(IO_REGION_BASE | physaddr);
+	DECLARE_GLOBAL_DATA_PTR;
+	return (void *)(gd->arch.io_region_base | physaddr);
 }
 
-extern unsigned char inb (unsigned char *port);
-extern unsigned short inw (unsigned short *port);
-extern unsigned inl (unsigned port);
-
 #define __raw_writeb(v,a)       (*(volatile unsigned char  *)(a) = (v))
 #define __raw_writew(v,a)       (*(volatile unsigned short *)(a) = (v))
 #define __raw_writel(v,a)       (*(volatile unsigned int   *)(a) = (v))