Changes to make flashrom compile (and work) on FreeBSD

This patch addresses different argument order of outX() calls,
FreeBSD-specific headers, difference in certain type names and system
interface names, and also FreeBSD-specific way of gaining IO port
access.

Corresponding to flashrom svn r245 and coreboot v2 svn r3344.

Signed-off-by: Andriy Gapon <avg@icyb.net.ua>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
diff --git a/flashrom.c b/flashrom.c
index 842d473..e366f94 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -252,6 +252,9 @@
 	int option_index = 0;
 	int read_it = 0, write_it = 0, erase_it = 0, verify_it = 0;
 	int ret = 0, i;
+#ifdef __FreeBSD__
+	int io_fd;
+#endif
 
 	static struct option long_options[] = {
 		{"read", 0, 0, 'r'},
@@ -367,6 +370,8 @@
 	/* First get full io access */
 #if defined (__sun) && (defined(__i386) || defined(__amd64))
 	if (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) != 0) {
+#elif defined(__FreeBSD__)
+	if ((io_fd = open("/dev/io", O_RDWR)) < 0) {
 #else
 	if (iopl(3) != 0) {
 #endif
@@ -559,5 +564,8 @@
 	if (verify_it)
 		ret |= verify_flash(flash, buf);
 
+#ifdef __FreeBSD__
+	close(io_fd);
+#endif
 	return ret;
 }