diff options
author | Andrey Korolyov <andrey@xdel.ru> | 2016-01-05 19:59:06 +0300 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2016-01-07 15:33:13 +0100 |
commit | 046d2174207d79681fe98206ce92074ac610957e (patch) | |
tree | 7cdad9ed59ff9ccc35a709bb25085e4ef544d015 | |
parent | 0ff8f9048b104b4a01823755406fa79a590ad02f (diff) |
inteltool: add NetBSD compatibility
Tested on NetBSD-7.0/i386
Change-Id: I6a693633d3a80ea07ade233b1b4fd1c5a1412032
Signed-off-by: Andrey Korolyov <andrey@xdel.ru>
Reviewed-on: https://review.coreboot.org/12835
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
-rw-r--r-- | util/inteltool/Makefile | 8 | ||||
-rw-r--r-- | util/inteltool/inteltool.c | 12 | ||||
-rw-r--r-- | util/inteltool/inteltool.h | 25 |
3 files changed, 45 insertions, 0 deletions
diff --git a/util/inteltool/Makefile b/util/inteltool/Makefile index 6e202cf81f..eec1ad766f 100644 --- a/util/inteltool/Makefile +++ b/util/inteltool/Makefile @@ -34,6 +34,10 @@ CFLAGS += -I/usr/local/include LDFLAGS += -L/usr/local/lib LIBS = -lz endif +ifeq ($(OS_ARCH), NetBSD) +CFLAGS += -I/usr/pkg/include +LDFLAGS += -L/usr/pkg/lib -Wl,-rpath-link,/usr/pkg/lib -lz -lpciutils -lpci -l$(shell uname -p) +endif all: pciutils dep $(PROGRAM) @@ -52,7 +56,11 @@ dep: define LIBPCI_TEST /* Avoid a failing test due to libpci header symbol shadowing breakage */ #define index shadow_workaround_index +#ifdef __NetBSD__ +#include <pciutils/pci.h> +#else #include <pci/pci.h> +#endif struct pci_access *pacc; int main(int argc, char **argv) { diff --git a/util/inteltool/inteltool.c b/util/inteltool/inteltool.c index 9fcf58d043..974db6fb71 100644 --- a/util/inteltool/inteltool.c +++ b/util/inteltool/inteltool.c @@ -24,6 +24,10 @@ #include <unistd.h> #include "inteltool.h" +#ifdef __NetBSD__ +#include <machine/sysarch.h> +#endif + /* * http://pci-ids.ucw.cz/read/PC/8086 * http://en.wikipedia.org/wiki/Intel_Tick-Tock @@ -344,6 +348,14 @@ int main(int argc, char *argv[]) #if defined(__FreeBSD__) if (open("/dev/io", O_RDWR) < 0) { perror("/dev/io"); +#elif defined(__NetBSD__) +# ifdef __i386__ + if (i386_iopl(3)) { + perror("iopl"); +# else + if (x86_64_iopl(3)) { + perror("iopl"); +# endif #else if (iopl(3)) { perror("iopl"); diff --git a/util/inteltool/inteltool.h b/util/inteltool/inteltool.h index 6845b4ef6d..abaac50a59 100644 --- a/util/inteltool/inteltool.h +++ b/util/inteltool/inteltool.h @@ -24,13 +24,38 @@ #define __DARWIN__ #include <DirectHW/DirectHW.h> #endif +#ifdef __NetBSD__ +#include <pciutils/pci.h> +#else #include <pci/pci.h> +#endif /* This #include is needed for freebsd_{rd,wr}msr. */ #if defined(__FreeBSD__) #include <machine/cpufunc.h> #endif +#ifdef __NetBSD__ +static inline uint8_t inb(unsigned port) +{ + uint8_t data; + __asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); + return data; +} +static inline uint16_t inw(unsigned port) +{ + uint16_t data; + __asm volatile("inw %w1,%0": "=a" (data) : "d" (port)); + return data; +} +static inline uint32_t inl(unsigned port) +{ + uint32_t data; + __asm volatile("inl %w1,%0": "=a" (data) : "d" (port)); + return data; +} +#endif + #define INTELTOOL_VERSION "1.0" /* Tested chipsets: */ |