Index: kernel/arch/ia64/include/asm.h
===================================================================
--- kernel/arch/ia64/include/asm.h	(revision f2ef7fd587b7ec8f9d3293862101dfa7dbf2ecf6)
+++ kernel/arch/ia64/include/asm.h	(revision 5045a683db1d22280b55badb1008a62177d3cb83)
@@ -45,8 +45,23 @@
 static inline void  outb(uint64_t port,uint8_t v)
 {
-	*((char *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 )))) = v;
-
-	asm volatile ("mf\n" ::: "memory");
-}
+	*((uint8_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 )))) = v;
+
+	asm volatile ("mf\n" ::: "memory");
+}
+
+static inline void  outw(uint64_t port,uint16_t v)
+{
+	*((uint16_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 )))) = v;
+
+	asm volatile ("mf\n" ::: "memory");
+}
+
+static inline void  outl(uint64_t port,uint32_t v)
+{
+	*((uint32_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 )))) = v;
+
+	asm volatile ("mf\n" ::: "memory");
+}
+
 
 
@@ -55,5 +70,19 @@
 	asm volatile ("mf\n" ::: "memory");
 
-	return *((char *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 ))));
+	return *((uint8_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 ))));
+}
+
+static inline uint16_t inw(uint64_t port)
+{
+	asm volatile ("mf\n" ::: "memory");
+
+	return *((uint16_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xffE) | ( (port >> 2) << 12 ))));
+}
+
+static inline uint32_t inl(uint64_t port)
+{
+	asm volatile ("mf\n" ::: "memory");
+
+	return *((uint32_t *)(IA64_IOSPACE_ADDRESS + ( (port & 0xfff) | ( (port >> 2) << 12 ))));
 }
 
