From 4220cf4aaaf16e60d557e90535790d116b230d05 Mon Sep 17 00:00:00 2001 From: Stefan Tauner Date: Sun, 6 Mar 2016 22:32:16 +0000 Subject: Add support for GNU Hurd Corresponding to flashrom svn r1948. Signed-off-by: Stefan Tauner Acked-by: Carl-Daniel Hailfinger --- hwaccess.c | 11 ++++++++++- os.h | 3 +++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/hwaccess.c b/hwaccess.c index 528550d..1901ee6 100644 --- a/hwaccess.c +++ b/hwaccess.c @@ -33,12 +33,17 @@ #include "flash.h" #include "hwaccess.h" -#if !(IS_LINUX || IS_MACOSX || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) || defined(__DJGPP__) || defined(__LIBPAYLOAD__) || defined(__sun)) +#if !(IS_LINUX || IS_MACOSX || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) || defined(__DJGPP__) || defined(__LIBPAYLOAD__) || defined(__sun) || defined(__gnu_hurd__)) #error "Unknown operating system" #endif #define USE_IOPL (IS_LINUX || IS_MACOSX || defined(__NetBSD__) || defined(__OpenBSD__)) #define USE_DEV_IO (defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)) +#define USE_IOPERM (defined(__gnu_hurd__)) + +#if USE_IOPERM +#include +#endif #if IS_X86 && USE_DEV_IO int io_fd; @@ -82,6 +87,8 @@ static int release_io_perms(void *p) sysi86(SI86V86, V86SC_IOPL, 0); #elif USE_DEV_IO close(io_fd); +#elif USE_IOPERM + ioperm(0, 65536, 0); #elif USE_IOPL iopl(0); #endif @@ -97,6 +104,8 @@ int rget_io_perms(void) if (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) != 0) { #elif USE_DEV_IO if ((io_fd = open("/dev/io", O_RDWR)) < 0) { +#elif USE_IOPERM + if (ioperm(0, 65536, 1) != 0) { #elif USE_IOPL if (iopl(3) != 0) { #endif diff --git a/os.h b/os.h index e5f72e4..b59e087 100644 --- a/os.h +++ b/os.h @@ -56,6 +56,9 @@ // libpayload #elif defined(__LIBPAYLOAD__) #define __FLASHROM_OS__ "libpayload" +// GNU Hurd +#elif defined(__gnu_hurd__) +#define __FLASHROM_OS__ "Hurd" // Linux #elif defined(__linux__) // There are various flags in use on Android apparently. __ANDROID__ seems to be the most trustworthy. -- cgit v1.1