diff --git a/util/superiotool/ali.c b/util/superiotool/ali.c
index a23ffcc..0bc1e06 100644
--- a/util/superiotool/ali.c
+++ b/util/superiotool/ali.c
@@ -60,13 +60,13 @@
 
 static void enter_conf_mode_ali(uint16_t port)
 {
-	outb(0x51, port);
-	outb(0x23, port);
+	OUTB(0x51, port);
+	OUTB(0x23, port);
 }
 
 static void exit_conf_mode_ali(uint16_t port)
 {
-	outb(0xbb, port);
+	OUTB(0xbb, port);
 }
 
 void probe_idregs_ali(uint16_t port)
diff --git a/util/superiotool/ite.c b/util/superiotool/ite.c
index fcb6375..1cfa317 100644
--- a/util/superiotool/ite.c
+++ b/util/superiotool/ite.c
@@ -468,11 +468,11 @@
 	/* Determine Super I/O config port. */
 	idx = (port == 0x3f0) ? 0 : ((port == 0x3bd) ? 1 : 2);
 	for (i = 0; i < 4; i++)
-		outb(init[idx][i], ISA_PNP_ADDR);
+		OUTB(init[idx][i], ISA_PNP_ADDR);
 
 	/* Sequentially write the 32 MB PnP init values. */
 	for (i = 0; i < 32; i++)
-		outb(initkey_mbpnp[i], port);
+		OUTB(initkey_mbpnp[i], port);
 }
 
 /**
@@ -482,10 +482,10 @@
  */
 static void enter_conf_mode_ite(uint16_t port)
 {
-	outb(0x87, port);
-	outb(0x01, port);
-	outb(0x55, port);
-	outb((port == 0x2e) ? 0x55 : 0xaa, port);
+	OUTB(0x87, port);
+	OUTB(0x01, port);
+	OUTB(0x55, port);
+	OUTB((port == 0x2e) ? 0x55 : 0xaa, port);
 }
 
 static void exit_conf_mode_ite(uint16_t port)
diff --git a/util/superiotool/nsc.c b/util/superiotool/nsc.c
index f5b2cd4..3a3336a 100644
--- a/util/superiotool/nsc.c
+++ b/util/superiotool/nsc.c
@@ -479,21 +479,21 @@
 
 	probing_for("NSC", "", port);
 
-	outb(CHIP_ID_REG, port);
-	if (inb(port) != CHIP_ID_REG) {
+	OUTB(CHIP_ID_REG, port);
+	if (INB(port) != CHIP_ID_REG) {
 		if (verbose)
 			printf(NOTFOUND "port=0x%02x, port+1=0x%02x\n",
-			       inb(port), inb(port + 1));
+			       INB(port), INB(port + 1));
 		return;
 	}
-	id = inb(port + 1);
+	id = INB(port + 1);
 
-	outb(CHIP_REV_REG, port);
-	if (inb(port) != CHIP_REV_REG) {
+	OUTB(CHIP_REV_REG, port);
+	if (INB(port) != CHIP_REV_REG) {
 		printf("Warning: Can't get chip revision. Setting to 0xff.\n");
 		rev = 0xff;
 	} else {
-		rev = inb(port + 1);
+		rev = INB(port + 1);
 	}
 
 	if (superio_unknown(reg_table, id)) {
diff --git a/util/superiotool/smsc.c b/util/superiotool/smsc.c
index a45ee45..ae141ea 100644
--- a/util/superiotool/smsc.c
+++ b/util/superiotool/smsc.c
@@ -608,13 +608,13 @@
 	 * in the assumption that the extra 0x55 won't hurt the other
 	 * Super I/Os. This is verified to be true on (at least) the FDC37N769.
 	 */
-	outb(0x55, port);
-	outb(0x55, port);
+	OUTB(0x55, port);
+	OUTB(0x55, port);
 }
 
 static void exit_conf_mode_smsc(uint16_t port)
 {
-	outb(0xaa, port);
+	OUTB(0xaa, port);
 }
 
 static void probe_idregs_smsc_helper(uint16_t port, uint8_t idreg,
diff --git a/util/superiotool/superiotool.c b/util/superiotool/superiotool.c
index 10f225f..1bbe5fe 100644
--- a/util/superiotool/superiotool.c
+++ b/util/superiotool/superiotool.c
@@ -23,6 +23,11 @@
 
 #include "superiotool.h"
 
+#if defined(__FreeBSD__)
+#include <fcntl.h>
+#include <unistd.h>
+#endif
+
 /* Command line options. */
 int dump = 0, verbose = 0, extra_dump = 0;
 
@@ -31,25 +36,25 @@
 
 uint8_t regval(uint16_t port, uint8_t reg)
 {
-	outb(reg, port);
-	return inb(port + ((port == 0x3bd) ? 2 : 1)); /* 0x3bd is special. */
+	OUTB(reg, port);
+	return INB(port + ((port == 0x3bd) ? 2 : 1)); /* 0x3bd is special. */
 }
 
 void regwrite(uint16_t port, uint8_t reg, uint8_t val)
 {
-	outb(reg, port);
-	outb(val, port + 1);
+	OUTB(reg, port);
+	OUTB(val, port + 1);
 }
 
 void enter_conf_mode_winbond_fintek_ite_8787(uint16_t port)
 {
-	outb(0x87, port);
-	outb(0x87, port);
+	OUTB(0x87, port);
+	OUTB(0x87, port);
 }
 
 void exit_conf_mode_winbond_fintek_ite_8787(uint16_t port)
 {
-	outb(0xaa, port);		/* Fintek, Winbond */
+	OUTB(0xaa, port);		/* Fintek, Winbond */
 	regwrite(port, 0x02, 0x02);	/* ITE */
 }
 
@@ -204,6 +209,9 @@
 int main(int argc, char *argv[])
 {
 	int i, j, opt, option_index;
+#if defined(__FreeBSD__)
+	int io_fd;
+#endif
 
 	static const struct option long_options[] = {
 		{"dump",		no_argument, NULL, 'd'},
@@ -247,8 +255,13 @@
 		}
 	}
 
+#if defined(__FreeBSD__)
+	if ((io_fd = open("/dev/io", O_RDWR)) < 0) {
+		perror("/dev/io");
+#else
 	if (iopl(3) < 0) {
 		perror("iopl");
+#endif
 		printf("Superiotool must be run as root.\n");
 		exit(1);
 	}
@@ -264,5 +277,8 @@
 	if (!chip_found)
 		printf("No Super I/O found\n");
 
+#if defined(__FreeBSD__)
+	close(io_fd);
+#endif
 	return 0;
 }
diff --git a/util/superiotool/superiotool.h b/util/superiotool/superiotool.h
index 3433cdb..7e0ca0b 100644
--- a/util/superiotool/superiotool.h
+++ b/util/superiotool/superiotool.h
@@ -28,7 +28,27 @@
 #include <stdint.h>
 #include <string.h>
 #include <getopt.h>
+#if defined(__GLIBC__)
 #include <sys/io.h>
+#endif
+
+#if defined(__FreeBSD__)
+#include <sys/types.h>
+#include <machine/cpufunc.h>
+#define OUTB(x, y) do { u_int tmp = (y); outb(tmp, (x)); } while (0)
+#define OUTW(x, y) do { u_int tmp = (y); outw(tmp, (x)); } while (0)
+#define OUTL(x, y) do { u_int tmp = (y); outl(tmp, (x)); } while (0)
+#define INB(x) __extension__ ({ u_int tmp = (x); inb(tmp); })
+#define INW(x) __extension__ ({ u_int tmp = (x); inw(tmp); })
+#define INL(x) __extension__ ({ u_int tmp = (x); inl(tmp); })
+#else
+#define OUTB outb
+#define OUTW outw
+#define OUTL outl
+#define INB  inb
+#define INW  inw
+#define INL  inl
+#endif
 
 #define USAGE "Usage: superiotool [-d] [-e] [-l] [-V] [-v] [-h]\n\n\
   -d | --dump            Dump Super I/O register contents\n\
diff --git a/util/superiotool/winbond.c b/util/superiotool/winbond.c
index 4e27944..91f0606 100644
--- a/util/superiotool/winbond.c
+++ b/util/superiotool/winbond.c
@@ -470,18 +470,18 @@
 
 static void enter_conf_mode_winbond_88(uint16_t port)
 {
-	outb(0x88, port);
+	OUTB(0x88, port);
 }
 
 static void enter_conf_mode_winbond_89(uint16_t port)
 {
-	outb(0x89, port);
+	OUTB(0x89, port);
 }
 
 static void enter_conf_mode_winbond_86(uint16_t port)
 {
-	outb(0x86, port);
-	outb(0x86, port);
+	OUTB(0x86, port);
+	OUTB(0x86, port);
 }
 
 static void probe_idregs_winbond_helper(const char *init, uint16_t port)
