summaryrefslogtreecommitdiff
path: root/hwaccess.h
diff options
context:
space:
mode:
authorstefanct <stefanct@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2015-11-14 02:55:12 +0000
committerstefanct <stefanct@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2015-11-14 02:55:12 +0000
commitab3d79163f58616e14b6f3a0f7e95ac6fc689ba3 (patch)
tree191a9906cb0cc117bd682167bcfea520d9d19c44 /hwaccess.h
parentccce6a39e8ed7d17e0ebc0127138197a829a5db9 (diff)
downloadflashrom-ab3d79163f58616e14b6f3a0f7e95ac6fc689ba3.tar.gz
Add (implicit) support for musl libc.
This is mostly achieved by fixing or refining the inclusion of header files and replacing glibc-specific ifdefs with more generic ones. - <sys/io.h>: Contains iopl(2) and x86 I/O port access functions (inb, outb etc). Generally Linux-specific but also availble on debian/kFreeBSD. Provided by glibc as well as musl and uclibc. Include it if we are running Linux or if glibc is detected. - <sys/fcntl.h>: should be (and is) replaced by <fcntl.h> (without the "sys" prefix). - <linux/spi/spidev.h>: Does not include all necessary headers, namely _IOC_SIZEBITS that is used in the definition of SPI_MSGSIZE is not brought in via <linux/ioctl.h> but instead we relied so far on glibc's including it via <sys/ioctl.h>. Change that to explicitly including <linux/ioctl.h>. - <endian.h>: Would also be available in musl but there is no easy way to detect it so we do not try yet. The bug report and initial patches were Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com> Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@1898 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'hwaccess.h')
-rw-r--r--hwaccess.h14
1 files changed, 8 insertions, 6 deletions
diff --git a/hwaccess.h b/hwaccess.h
index 3e46192..390f0e4 100644
--- a/hwaccess.h
+++ b/hwaccess.h
@@ -26,12 +26,6 @@
#include "platform.h"
-#if IS_X86
-#if defined(__GLIBC__)
-#include <sys/io.h>
-#endif
-#endif
-
#if NEED_PCI == 1
/*
* libpci headers use the variable name "index" which triggers shadowing
@@ -115,6 +109,7 @@
#if !defined (__FLASHROM_BIG_ENDIAN__) && !defined (__FLASHROM_LITTLE_ENDIAN__)
/* Nonstandard libc-specific macros for determining endianness. */
+/* musl provides an endian.h as well... but it can not be detected from within C. */
#if defined(__GLIBC__)
#include <endian.h>
#if BYTE_ORDER == LITTLE_ENDIAN
@@ -204,6 +199,13 @@ cpu_to_be(64)
#if NEED_PCI == 1
#if IS_X86
+/* sys/io.h provides iopl(2) and x86 I/O port access functions (inb, outb etc).
+ * It is included in glibc (thus available also on debian/kFreeBSD) but also in other libcs that mimic glibc,
+ * e.g. musl and uclibc. */
+#if defined(__linux__) || defined(__GLIBC__)
+#include <sys/io.h>
+#endif
+
#define __FLASHROM_HAVE_OUTB__ 1
/* for iopl and outb under Solaris */