diff options
author | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2012-02-25 22:50:21 +0000 |
---|---|---|
committer | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2012-02-25 22:50:21 +0000 |
commit | c810422a02f29470c0349a3f8bb8aed8bf368e09 (patch) | |
tree | 734a5c79ce8f2fdd2c7a463ac9a31da8fa128781 | |
parent | 8bc5b350d463e88d87f5188e5acc3ace9f54a100 (diff) | |
download | flashrom-c810422a02f29470c0349a3f8bb8aed8bf368e09.zip flashrom-c810422a02f29470c0349a3f8bb8aed8bf368e09.tar.gz |
Support Debian/kFreeBSD
Tested-by: Robert Millan <rmh@debian.org>
Tested-by: Uwe Hermann <uwe@hermann-uwe.de>
Corresponding to flashrom svn r1507.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
-rw-r--r-- | hwaccess.c | 6 | ||||
-rw-r--r-- | hwaccess.h | 10 | ||||
-rw-r--r-- | os.h | 3 | ||||
-rw-r--r-- | physmap.c | 2 |
4 files changed, 14 insertions, 7 deletions
@@ -40,7 +40,7 @@ static inline void sync_primitive(void) { } -#if defined(__FreeBSD__) || defined(__DragonFly__) +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) int io_fd; #endif @@ -52,7 +52,7 @@ void get_io_perms(void) #else #if defined (__sun) && (defined(__i386) || defined(__amd64)) if (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) != 0) { -#elif defined(__FreeBSD__) || defined (__DragonFly__) +#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined (__DragonFly__) if ((io_fd = open("/dev/io", O_RDWR)) < 0) { #else if (iopl(3) != 0) { @@ -71,7 +71,7 @@ void get_io_perms(void) void release_io_perms(void) { -#if defined(__FreeBSD__) || defined(__DragonFly__) +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) close(io_fd); #endif } @@ -189,6 +189,10 @@ cpu_to_be(64) */ #if defined(__FreeBSD__) || defined(__DragonFly__) + /* Note that Debian/kFreeBSD (FreeBSD kernel with glibc) has conflicting + * out[bwl] definitions in machine/cpufunc.h and sys/io.h at least in some + * versions. Use machine/cpufunc.h only for plain FreeBSD/DragonFlyBSD. + */ #include <machine/cpufunc.h> #define off64_t off_t #define lseek64 lseek @@ -228,7 +232,7 @@ cpu_to_be(64) #define INL inportl #else - + /* This is the usual glibc interface. */ #define OUTB outb #define OUTW outw #define OUTL outl @@ -299,12 +303,12 @@ static inline uint32_t inl(uint16_t port) #endif #endif -#if !defined(__DARWIN__) && !defined(__FreeBSD__) && !defined(__DragonFly__) && !defined(__LIBPAYLOAD__) +#if !defined(__DARWIN__) && !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__) && !defined(__DragonFly__) && !defined(__LIBPAYLOAD__) typedef struct { uint32_t hi, lo; } msr_t; msr_t rdmsr(int addr); int wrmsr(int addr, msr_t msr); #endif -#if defined(__FreeBSD__) || defined(__DragonFly__) +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) /* FreeBSD already has conflicting definitions for wrmsr/rdmsr. */ #undef rdmsr #undef wrmsr @@ -30,6 +30,9 @@ // FreeBSD #elif defined(__FreeBSD__) #define __FLASHROM_OS__ "FreeBSD" +// FreeBSD with glibc-based userspace (e.g. Debian/kFreeBSD) +#elif defined(__FreeBSD_kernel__) && defined(__GLIBC__) +#define __FLASHROM_OS__ "FreeBSD-glibc" // DragonFlyBSD #elif defined(__DragonFly__) #define __FLASHROM_OS__ "DragonFlyBSD" @@ -382,7 +382,7 @@ void cleanup_cpu_msr(void) fd_msr = -1; } #else -#if defined(__FreeBSD__) || defined(__DragonFly__) +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) #include <sys/ioctl.h> typedef struct { |