[coreboot-gerrit] Patch set updated for coreboot: ectool: fix NetBSD compilation

Andrey Korolyov (andrey@xdel.ru) gerrit at coreboot.org
Tue Jan 5 21:14:39 CET 2016


Andrey Korolyov (andrey at xdel.ru) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/12831

-gerrit

commit f7eca4233d04aba495394992748d82f2461527d4
Author: Andrey Korolyov <andrey at xdel.ru>
Date:   Tue Jan 5 14:27:59 2016 +0300

    ectool: fix NetBSD compilation
    
    Most of ifification was taken directly from pkgsrc/vbetool/patches/patch-ab
    
    Change-Id: Ibd264384f49b33412f0ef8554bd9c9fb8f60a892
    Signed-off-by: Andrey Korolyov <andrey at xdel.ru>
---
 util/ectool/Makefile | 10 ++++++++++
 util/ectool/ec.c     | 16 ++++++++++++++++
 util/ectool/ectool.c | 15 +++++++++++++++
 3 files changed, 41 insertions(+)

diff --git a/util/ectool/Makefile b/util/ectool/Makefile
index a869577..25f9cb0 100644
--- a/util/ectool/Makefile
+++ b/util/ectool/Makefile
@@ -20,11 +20,21 @@ PROGRAM = ectool
 INSTALL = /usr/bin/install
 PREFIX  = /usr/local
 
+# Dancing around Cygwin uname output and lack of -o option in NetBSD
+UNAME_O_SUPPORT := $(shell uname -o; echo $$?)
+ifeq ((UNAME_O_SUPPORT),0)
 OS_ARCH = $(shell uname -o)
+else
+OS_ARCH = $(shell uname)
+endif
 ifeq ($(OS_ARCH), Cygwin)
 LDFLAGS = -lioperm
 endif
 
+ifeq ($(OS_ARCH), NetBSD)
+LDFLAGS = -l$(shell uname -p)
+endif
+
 all: $(PROGRAM)
 
 $(PROGRAM): ec.o ectool.o
diff --git a/util/ectool/ec.c b/util/ectool/ec.c
index 406cc41..098e812 100644
--- a/util/ectool/ec.c
+++ b/util/ectool/ec.c
@@ -17,9 +17,25 @@
 #include <stdint.h>
 #include <stdlib.h>
 #include <unistd.h>
+#ifndef __NetBSD__
 #include <sys/io.h>
+#endif
 #include "ec.h"
 
+#ifdef __NetBSD__
+#include <machine/sysarch.h>
+static uint8_t inb(unsigned port)
+{
+	uint8_t data;
+	__asm volatile("inb %w1,%0" : "=a" (data) : "d" (port));
+	return data;
+}
+static __inline void outb(uint8_t data, unsigned port)
+{
+	__asm volatile("outb %0,%w1" : : "a" (data), "d" (port));
+}
+#endif
+
 extern int verbose;
 
 #define debug(x...) if (verbose) printf(x)
diff --git a/util/ectool/ectool.c b/util/ectool/ectool.c
index 4639c4e..623bc09 100644
--- a/util/ectool/ectool.c
+++ b/util/ectool/ectool.c
@@ -18,10 +18,17 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <getopt.h>
+#ifndef __NetBSD__
 #include <sys/io.h>
+#endif
 #include <ec.h>
 #include <stdlib.h>
 
+#ifdef __NetBSD__
+#include <machine/sysarch.h>
+#endif
+
+
 #define ECTOOL_VERSION "0.1"
 
 void print_version(void)
@@ -108,7 +115,15 @@ int main(int argc, char *argv[])
 		}
 	}
 
+#ifdef __NetBSD__
+# ifdef __i386__
+	if (i386_iopl(3)) {
+# else
+	if (x86_64_iopl(3)) {
+# endif
+#else
 	if (iopl(3)) {
+#endif
 		printf("You need to be root.\n");
 		exit(1);
 	}



More information about the coreboot-gerrit mailing list