summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Korolyov <andrey@xdel.ru>2016-01-05 20:09:02 +0300
committerPatrick Georgi <pgeorgi@google.com>2016-01-07 15:31:35 +0100
commit0ff8f9048b104b4a01823755406fa79a590ad02f (patch)
tree4bfa79436a7e3247766e1352ee4bfa7c48a0ccc3
parent4ba946c1e1aa550b2f00db9898356cca3202323c (diff)
viatool: add NetBSD support
Change-Id: I033044e4b781475d6d60a49a61313a720103ce38 Signed-off-by: Andrey Korolyov <andrey@xdel.ru> Reviewed-on: https://review.coreboot.org/12836 Tested-by: build bot (Jenkins) Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
-rw-r--r--util/viatool/Makefile8
-rw-r--r--util/viatool/viatool.c12
-rw-r--r--util/viatool/viatool.h25
3 files changed, 45 insertions, 0 deletions
diff --git a/util/viatool/Makefile b/util/viatool/Makefile
index de3bfdd515..4d9d0d0ea9 100644
--- a/util/viatool/Makefile
+++ b/util/viatool/Makefile
@@ -40,6 +40,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)
@@ -62,7 +66,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/viatool/viatool.c b/util/viatool/viatool.c
index 0fde455c87..c19647fd0c 100644
--- a/util/viatool/viatool.c
+++ b/util/viatool/viatool.c
@@ -25,6 +25,10 @@
#include <unistd.h>
#include "viatool.h"
+#ifdef __NetBSD__
+#include <machine/sysarch.h>
+#endif
+
/*
* http://pci-ids.ucw.cz/read/PC/8086
* http://en.wikipedia.org/wiki/Intel_Tick-Tock
@@ -146,6 +150,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/viatool/viatool.h b/util/viatool/viatool.h
index a0a5d79c94..3a6f04873d 100644
--- a/util/viatool/viatool.h
+++ b/util/viatool/viatool.h
@@ -28,13 +28,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
+
#include <stdlib.h>
#define VIATOOL_VERSION "1.0"