Index: kernel/arch/amd64/include/asm.h
===================================================================
--- kernel/arch/amd64/include/asm.h	(revision ae318d3535cba06a6996f270db31a961fae402ad)
+++ kernel/arch/amd64/include/asm.h	(revision 91825d906871fb7aacdd0e8161dca09a9de0ef6e)
@@ -74,5 +74,5 @@
  * @return Value read
  */
-static inline uint8_t pio_read_8(uint16_t port)
+static inline uint8_t pio_read_8(ioport8_t *port)
 {
 	uint8_t val;
@@ -89,5 +89,5 @@
  * @param val Value to write
  */
-static inline void pio_write_8(uint16_t port, uint8_t val)
+static inline void pio_write_8(ioport8_t *port, uint8_t val)
 {
 	asm volatile ("outb %b0, %w1\n" : : "a" (val), "d" (port));
Index: kernel/arch/amd64/include/types.h
===================================================================
--- kernel/arch/amd64/include/types.h	(revision ae318d3535cba06a6996f270db31a961fae402ad)
+++ kernel/arch/amd64/include/types.h	(revision 91825d906871fb7aacdd0e8161dca09a9de0ef6e)
@@ -58,5 +58,7 @@
 typedef int64_t native_t;
 
-typedef uintptr_t ioport_t;
+typedef volatile uint8_t ioport8_t;
+typedef volatile uint16_t ioport16_t;
+typedef volatile uint32_t ioport32_t;
 
 typedef struct {
