diff options
author | Andrey Korolyov <andrey@xdel.ru> | 2016-01-05 14:27:59 +0300 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2016-01-27 17:15:56 +0100 |
commit | 393d9322ba51feeea33cd08f77945f593cb70e32 (patch) | |
tree | dde365c28462b404b923ec5067f6d97e139747bb | |
parent | ffc2260d749a1774a79805ec51bcb67021c07c28 (diff) | |
download | coreboot-393d9322ba51feeea33cd08f77945f593cb70e32.tar.xz |
ectool: fix NetBSD compilation
Since NetBSD does not support uname -o, push check for CygWin
inside separate non-failing condition in Makefile.
Change-Id: Ibd264384f49b33412f0ef8554bd9c9fb8f60a892
Signed-off-by: Andrey Korolyov <andrey@xdel.ru>
Reviewed-on: https://review.coreboot.org/12831
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
-rw-r--r-- | util/ectool/Makefile | 8 | ||||
-rw-r--r-- | util/ectool/ec.c | 16 | ||||
-rw-r--r-- | util/ectool/ectool.c | 15 |
3 files changed, 37 insertions, 2 deletions
diff --git a/util/ectool/Makefile b/util/ectool/Makefile index a869577da6..8aa1415a56 100644 --- a/util/ectool/Makefile +++ b/util/ectool/Makefile @@ -19,12 +19,16 @@ CFLAGS = -O2 -Wall -W PROGRAM = ectool INSTALL = /usr/bin/install PREFIX = /usr/local +OS_ARCH = $(shell uname) -OS_ARCH = $(shell uname -o) -ifeq ($(OS_ARCH), Cygwin) +ifeq ($(shell uname -o 2>/dev/null), 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 406cc41ae7..098e8126d9 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 c93eb256e7..50ac30b5e5 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) @@ -106,7 +113,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); } |