Looking for help from the *bsd porters on this... We haven't seen a successful build of u-boot on kfreebsd since mid-2012...
The short of it is a bunch of header files that aren't present on Debian GNU/kFreeBSD are required for building u-boot-tools. Upstream u-boot has essentially copied a bunch of header files from linux sources. The current best patch we have is to copy *more* header files, but this seems like a bad idea... Droppping u-boot-tools on kfreebsd-* would be a regression from wheezy. Help would be appreciated, thanks! live well, vagrant On Mon, Dec 16, 2013 at 10:09:36AM -0800, Vagrant Cascadian wrote: > On Mon, Dec 16, 2013 at 08:43:05AM +0000, Ian Campbell wrote: > > On Fri, 2013-12-13 at 13:18 -0800, Ryan Niebur wrote: > Shipping a different set of includes (that would get out of sync) from another > source package for building on non-linux arches seems a bit of a mess, but in > the short term, ugly though it may be, I'd rather see this applied than see > u-boot stalled because of kfreebsd... or remove u-boot* from kfreebsd? > > Wait -- the uboot upstream source already contains > > include/linux/types.h, so perhaps upstream just needs to increase the > > set of things which they supply themselves. > > Maybe, or rewrite that portion entirely... > > Attached is a patch that's hopefully slightly easier to read, which just puts > the extra files in debian/includes, rather than a patch to includes/debian, > and > patches tools/Makefile to add includes/debian on kfreebsd. > > Haven't yet got around to testing that it works... > From 872a316a055f1847912ce755bb311f014ffd367a Mon Sep 17 00:00:00 2001 > From: Vagrant Cascadian <vagr...@debian.org> > Date: Mon, 16 Dec 2013 09:56:48 -0800 > Subject: [PATCH] Fix build on kfreebsd and hurd (Closes: #730833). Patch by > Ryan Niebur, with slight changes. > > --- > debian/include/asm-generic/bitsperlong.h | 15 ++ > debian/include/asm-generic/int-ll64.h | 39 +++ > debian/include/asm-generic/types.h | 15 ++ > debian/include/asm/bitsperlong.h | 13 + > debian/include/asm/byteorder.h | 6 + > debian/include/asm/posix_types.h | 5 + > debian/include/asm/posix_types_32.h | 49 ++++ > debian/include/asm/posix_types_64.h | 49 ++++ > debian/include/asm/swab.h | 61 +++++ > debian/include/asm/types.h | 6 + > debian/include/linux/byteorder/little_endian.h | 105 ++++++++ > debian/include/linux/swab.h | 282 > +++++++++++++++++++++ > .../patches/add_asm_posix_types_header_files.diff | 25 ++ > debian/patches/series | 1 + > 14 files changed, 671 insertions(+) > create mode 100644 debian/include/asm-generic/bitsperlong.h > create mode 100644 debian/include/asm-generic/int-ll64.h > create mode 100644 debian/include/asm-generic/types.h > create mode 100644 debian/include/asm/bitsperlong.h > create mode 100644 debian/include/asm/byteorder.h > create mode 100644 debian/include/asm/posix_types.h > create mode 100644 debian/include/asm/posix_types_32.h > create mode 100644 debian/include/asm/posix_types_64.h > create mode 100644 debian/include/asm/swab.h > create mode 100644 debian/include/asm/types.h > create mode 100644 debian/include/linux/byteorder/little_endian.h > create mode 100644 debian/include/linux/swab.h > create mode 100644 debian/patches/add_asm_posix_types_header_files.diff > > diff --git a/debian/include/asm-generic/bitsperlong.h > b/debian/include/asm-generic/bitsperlong.h > new file mode 100644 > index 0000000..f832c3c > --- /dev/null > +++ b/debian/include/asm-generic/bitsperlong.h > @@ -0,0 +1,15 @@ > +#ifndef __ASM_GENERIC_BITS_PER_LONG > +#define __ASM_GENERIC_BITS_PER_LONG > + > +/* > + * There seems to be no way of detecting this automatically from user > + * space, so 64 bit architectures should override this in their > + * bitsperlong.h. In particular, an architecture that supports > + * both 32 and 64 bit user space must not rely on CONFIG_64BIT > + * to decide it, but rather check a compiler provided macro. > + */ > +#ifndef __BITS_PER_LONG > +#define __BITS_PER_LONG 32 > +#endif > + > +#endif /* __ASM_GENERIC_BITS_PER_LONG */ > diff --git a/debian/include/asm-generic/int-ll64.h > b/debian/include/asm-generic/int-ll64.h > new file mode 100644 > index 0000000..0ede047 > --- /dev/null > +++ b/debian/include/asm-generic/int-ll64.h > @@ -0,0 +1,39 @@ > +/* > + * asm-generic/int-ll64.h > + * > + * Integer declarations for architectures which use "long long" > + * for 64-bit types. > + */ > + > +#ifndef _ASM_GENERIC_INT_LL64_H > +#define _ASM_GENERIC_INT_LL64_H > + > +#include <asm/bitsperlong.h> > + > +#ifndef __ASSEMBLY__ > +/* > + * __xx is ok: it doesn't pollute the POSIX namespace. Use these in the > + * header files exported to user space > + */ > + > +typedef __signed__ char __s8; > +typedef unsigned char __u8; > + > +typedef __signed__ short __s16; > +typedef unsigned short __u16; > + > +typedef __signed__ int __s32; > +typedef unsigned int __u32; > + > +#ifdef __GNUC__ > +__extension__ typedef __signed__ long long __s64; > +__extension__ typedef unsigned long long __u64; > +#else > +typedef __signed__ long long __s64; > +typedef unsigned long long __u64; > +#endif > + > +#endif /* __ASSEMBLY__ */ > + > + > +#endif /* _ASM_GENERIC_INT_LL64_H */ > diff --git a/debian/include/asm-generic/types.h > b/debian/include/asm-generic/types.h > new file mode 100644 > index 0000000..7a0f69e > --- /dev/null > +++ b/debian/include/asm-generic/types.h > @@ -0,0 +1,15 @@ > +#ifndef _ASM_GENERIC_TYPES_H > +#define _ASM_GENERIC_TYPES_H > +/* > + * int-ll64 is used practically everywhere now, > + * so use it as a reasonable default. > + */ > +#include <asm-generic/int-ll64.h> > + > +#ifndef __ASSEMBLY__ > + > +typedef unsigned short umode_t; > + > +#endif /* __ASSEMBLY__ */ > + > +#endif /* _ASM_GENERIC_TYPES_H */ > diff --git a/debian/include/asm/bitsperlong.h > b/debian/include/asm/bitsperlong.h > new file mode 100644 > index 0000000..b0ae1c4 > --- /dev/null > +++ b/debian/include/asm/bitsperlong.h > @@ -0,0 +1,13 @@ > +#ifndef __ASM_X86_BITSPERLONG_H > +#define __ASM_X86_BITSPERLONG_H > + > +#ifdef __x86_64__ > +# define __BITS_PER_LONG 64 > +#else > +# define __BITS_PER_LONG 32 > +#endif > + > +#include <asm-generic/bitsperlong.h> > + > +#endif /* __ASM_X86_BITSPERLONG_H */ > + > diff --git a/debian/include/asm/byteorder.h b/debian/include/asm/byteorder.h > new file mode 100644 > index 0000000..b13a7a8 > --- /dev/null > +++ b/debian/include/asm/byteorder.h > @@ -0,0 +1,6 @@ > +#ifndef _ASM_X86_BYTEORDER_H > +#define _ASM_X86_BYTEORDER_H > + > +#include <linux/byteorder/little_endian.h> > + > +#endif /* _ASM_X86_BYTEORDER_H */ > diff --git a/debian/include/asm/posix_types.h > b/debian/include/asm/posix_types.h > new file mode 100644 > index 0000000..2d21600 > --- /dev/null > +++ b/debian/include/asm/posix_types.h > @@ -0,0 +1,5 @@ > +# ifdef __i386__ > +# include "posix_types_32.h" > +# else > +# include "posix_types_64.h" > +# endif > diff --git a/debian/include/asm/posix_types_32.h > b/debian/include/asm/posix_types_32.h > new file mode 100644 > index 0000000..2c85d8b > --- /dev/null > +++ b/debian/include/asm/posix_types_32.h > @@ -0,0 +1,49 @@ > +#ifndef _ASM_X86_POSIX_TYPES_32_H > +#define _ASM_X86_POSIX_TYPES_32_H > + > +/* > + * This file is generally used by user-level software, so you need to > + * be a little careful about namespace pollution etc. Also, we cannot > + * assume GCC is being used. > + */ > + > +#include <sys/_types.h> > +// RYAN52: THIS PACKAGE NEEDS THE FOLLOWING COMMENTED OUT DUE TO CONFLICT IN > /usr/include/sys/_types.h > +//typedef unsigned long __kernel_ino_t; > +typedef unsigned long __kernel_ino_t; > +typedef unsigned short __kernel_mode_t; > +typedef unsigned short __kernel_nlink_t; > +typedef long __kernel_off_t; > +typedef int __kernel_pid_t; > +typedef unsigned short __kernel_ipc_pid_t; > +typedef unsigned short __kernel_uid_t; > +typedef unsigned short __kernel_gid_t; > +typedef unsigned int __kernel_size_t; > +typedef int __kernel_ssize_t; > +typedef int __kernel_ptrdiff_t; > +typedef long __kernel_time_t; > +typedef long __kernel_suseconds_t; > +typedef long __kernel_clock_t; > +typedef int __kernel_timer_t; > +typedef int __kernel_clockid_t; > +typedef int __kernel_daddr_t; > +typedef char * __kernel_caddr_t; > +typedef unsigned short __kernel_uid16_t; > +typedef unsigned short __kernel_gid16_t; > +typedef unsigned int __kernel_uid32_t; > +typedef unsigned int __kernel_gid32_t; > + > +typedef unsigned short __kernel_old_uid_t; > +typedef unsigned short __kernel_old_gid_t; > +typedef unsigned short __kernel_old_dev_t; > + > +#ifdef __GNUC__ > +typedef long long __kernel_loff_t; > +#endif > + > +typedef struct { > + int val[2]; > +} __kernel_fsid_t; > + > + > +#endif /* _ASM_X86_POSIX_TYPES_32_H */ > diff --git a/debian/include/asm/posix_types_64.h > b/debian/include/asm/posix_types_64.h > new file mode 100644 > index 0000000..4d999a7 > --- /dev/null > +++ b/debian/include/asm/posix_types_64.h > @@ -0,0 +1,49 @@ > +#ifndef _ASM_X86_POSIX_TYPES_64_H > +#define _ASM_X86_POSIX_TYPES_64_H > + > +/* > + * This file is generally used by user-level software, so you need to > + * be a little careful about namespace pollution etc. Also, we cannot > + * assume GCC is being used. > + */ > + > +#include <sys/_types.h> > +// RYAN52: THIS PACKAGE NEEDS THE FOLLOWING COMMENTED OUT DUE TO CONFLICT IN > /usr/include/sys/_types.h > +//typedef unsigned long __kernel_ino_t; > +typedef unsigned int __kernel_mode_t; > +typedef unsigned long __kernel_nlink_t; > +typedef long __kernel_off_t; > +typedef int __kernel_pid_t; > +typedef int __kernel_ipc_pid_t; > +typedef unsigned int __kernel_uid_t; > +typedef unsigned int __kernel_gid_t; > +typedef unsigned long __kernel_size_t; > +typedef long __kernel_ssize_t; > +typedef long __kernel_ptrdiff_t; > +typedef long __kernel_time_t; > +typedef long __kernel_suseconds_t; > +typedef long __kernel_clock_t; > +typedef int __kernel_timer_t; > +typedef int __kernel_clockid_t; > +typedef int __kernel_daddr_t; > +typedef char * __kernel_caddr_t; > +typedef unsigned short __kernel_uid16_t; > +typedef unsigned short __kernel_gid16_t; > + > +#ifdef __GNUC__ > +typedef long long __kernel_loff_t; > +#endif > + > +typedef struct { > + int val[2]; > +} __kernel_fsid_t; > + > +typedef unsigned short __kernel_old_uid_t; > +typedef unsigned short __kernel_old_gid_t; > +typedef __kernel_uid_t __kernel_uid32_t; > +typedef __kernel_gid_t __kernel_gid32_t; > + > +typedef unsigned long __kernel_old_dev_t; > + > + > +#endif /* _ASM_X86_POSIX_TYPES_64_H */ > diff --git a/debian/include/asm/swab.h b/debian/include/asm/swab.h > new file mode 100644 > index 0000000..37365df > --- /dev/null > +++ b/debian/include/asm/swab.h > @@ -0,0 +1,61 @@ > +#ifndef _ASM_X86_SWAB_H > +#define _ASM_X86_SWAB_H > + > +#include <linux/types.h> > + > + > +static __inline__ __u32 __arch_swab32(__u32 val) > +{ > +#ifdef __i386__ > +# ifdef CONFIG_X86_BSWAP > + __asm__("bswap %0" : "=r" (val) : "0" (val)); > +# else > + __asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */ > + "rorl $16,%0\n\t" /* swap words */ > + "xchgb %b0,%h0" /* swap higher bytes */ > + : "=q" (val) > + : "0" (val)); > +# endif > + > +#else /* __i386__ */ > + __asm__("bswapl %0" > + : "=r" (val) > + : "0" (val)); > +#endif > + return val; > +} > +#define __arch_swab32 __arch_swab32 > + > +static __inline__ __u64 __arch_swab64(__u64 val) > +{ > +#ifdef __i386__ > + union { > + struct { > + __u32 a; > + __u32 b; > + } s; > + __u64 u; > + } v; > + v.u = val; > +# ifdef CONFIG_X86_BSWAP > + __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1" > + : "=r" (v.s.a), "=r" (v.s.b) > + : "0" (v.s.a), "1" (v.s.b)); > +# else > + v.s.a = __arch_swab32(v.s.a); > + v.s.b = __arch_swab32(v.s.b); > + __asm__("xchgl %0,%1" > + : "=r" (v.s.a), "=r" (v.s.b) > + : "0" (v.s.a), "1" (v.s.b)); > +# endif > + return v.u; > +#else /* __i386__ */ > + __asm__("bswapq %0" > + : "=r" (val) > + : "0" (val)); > + return val; > +#endif > +} > +#define __arch_swab64 __arch_swab64 > + > +#endif /* _ASM_X86_SWAB_H */ > diff --git a/debian/include/asm/types.h b/debian/include/asm/types.h > new file mode 100644 > index 0000000..8e8c23f > --- /dev/null > +++ b/debian/include/asm/types.h > @@ -0,0 +1,6 @@ > +#ifndef _ASM_X86_TYPES_H > +#define _ASM_X86_TYPES_H > + > +#include <asm-generic/types.h> > + > +#endif /* _ASM_X86_TYPES_H */ > diff --git a/debian/include/linux/byteorder/little_endian.h > b/debian/include/linux/byteorder/little_endian.h > new file mode 100644 > index 0000000..74e8a15 > --- /dev/null > +++ b/debian/include/linux/byteorder/little_endian.h > @@ -0,0 +1,105 @@ > +#ifndef _LINUX_BYTEORDER_LITTLE_ENDIAN_H > +#define _LINUX_BYTEORDER_LITTLE_ENDIAN_H > + > +#ifndef __LITTLE_ENDIAN > +#define __LITTLE_ENDIAN 1234 > +#endif > +#ifndef __LITTLE_ENDIAN_BITFIELD > +#define __LITTLE_ENDIAN_BITFIELD > +#endif > + > +#include <linux/types.h> > +#include <linux/swab.h> > + > +#define __constant_htonl(x) ((__be32)___constant_swab32((x))) > +#define __constant_ntohl(x) ___constant_swab32((__be32)(x)) > +#define __constant_htons(x) ((__be16)___constant_swab16((x))) > +#define __constant_ntohs(x) ___constant_swab16((__be16)(x)) > +#define __constant_cpu_to_le64(x) ((__le64)(__u64)(x)) > +#define __constant_le64_to_cpu(x) ((__u64)(__le64)(x)) > +#define __constant_cpu_to_le32(x) ((__le32)(__u32)(x)) > +#define __constant_le32_to_cpu(x) ((__u32)(__le32)(x)) > +#define __constant_cpu_to_le16(x) ((__le16)(__u16)(x)) > +#define __constant_le16_to_cpu(x) ((__u16)(__le16)(x)) > +#define __constant_cpu_to_be64(x) ((__be64)___constant_swab64((x))) > +#define __constant_be64_to_cpu(x) ___constant_swab64((__u64)(__be64)(x)) > +#define __constant_cpu_to_be32(x) ((__be32)___constant_swab32((x))) > +#define __constant_be32_to_cpu(x) ___constant_swab32((__u32)(__be32)(x)) > +#define __constant_cpu_to_be16(x) ((__be16)___constant_swab16((x))) > +#define __constant_be16_to_cpu(x) ___constant_swab16((__u16)(__be16)(x)) > +#define __cpu_to_le64(x) ((__le64)(__u64)(x)) > +#define __le64_to_cpu(x) ((__u64)(__le64)(x)) > +#define __cpu_to_le32(x) ((__le32)(__u32)(x)) > +#define __le32_to_cpu(x) ((__u32)(__le32)(x)) > +#define __cpu_to_le16(x) ((__le16)(__u16)(x)) > +#define __le16_to_cpu(x) ((__u16)(__le16)(x)) > +#define __cpu_to_be64(x) ((__be64)__swab64((x))) > +#define __be64_to_cpu(x) __swab64((__u64)(__be64)(x)) > +#define __cpu_to_be32(x) ((__be32)__swab32((x))) > +#define __be32_to_cpu(x) __swab32((__u32)(__be32)(x)) > +#define __cpu_to_be16(x) ((__be16)__swab16((x))) > +#define __be16_to_cpu(x) __swab16((__u16)(__be16)(x)) > + > +static __inline__ __le64 __cpu_to_le64p(const __u64 *p) > +{ > + return (__le64)*p; > +} > +static __inline__ __u64 __le64_to_cpup(const __le64 *p) > +{ > + return (__u64)*p; > +} > +static __inline__ __le32 __cpu_to_le32p(const __u32 *p) > +{ > + return (__le32)*p; > +} > +static __inline__ __u32 __le32_to_cpup(const __le32 *p) > +{ > + return (__u32)*p; > +} > +static __inline__ __le16 __cpu_to_le16p(const __u16 *p) > +{ > + return (__le16)*p; > +} > +static __inline__ __u16 __le16_to_cpup(const __le16 *p) > +{ > + return (__u16)*p; > +} > +static __inline__ __be64 __cpu_to_be64p(const __u64 *p) > +{ > + return (__be64)__swab64p(p); > +} > +static __inline__ __u64 __be64_to_cpup(const __be64 *p) > +{ > + return __swab64p((__u64 *)p); > +} > +static __inline__ __be32 __cpu_to_be32p(const __u32 *p) > +{ > + return (__be32)__swab32p(p); > +} > +static __inline__ __u32 __be32_to_cpup(const __be32 *p) > +{ > + return __swab32p((__u32 *)p); > +} > +static __inline__ __be16 __cpu_to_be16p(const __u16 *p) > +{ > + return (__be16)__swab16p(p); > +} > +static __inline__ __u16 __be16_to_cpup(const __be16 *p) > +{ > + return __swab16p((__u16 *)p); > +} > +#define __cpu_to_le64s(x) do { (void)(x); } while (0) > +#define __le64_to_cpus(x) do { (void)(x); } while (0) > +#define __cpu_to_le32s(x) do { (void)(x); } while (0) > +#define __le32_to_cpus(x) do { (void)(x); } while (0) > +#define __cpu_to_le16s(x) do { (void)(x); } while (0) > +#define __le16_to_cpus(x) do { (void)(x); } while (0) > +#define __cpu_to_be64s(x) __swab64s((x)) > +#define __be64_to_cpus(x) __swab64s((x)) > +#define __cpu_to_be32s(x) __swab32s((x)) > +#define __be32_to_cpus(x) __swab32s((x)) > +#define __cpu_to_be16s(x) __swab16s((x)) > +#define __be16_to_cpus(x) __swab16s((x)) > + > + > +#endif /* _LINUX_BYTEORDER_LITTLE_ENDIAN_H */ > diff --git a/debian/include/linux/swab.h b/debian/include/linux/swab.h > new file mode 100644 > index 0000000..aa4afdd > --- /dev/null > +++ b/debian/include/linux/swab.h > @@ -0,0 +1,282 @@ > +#ifndef _LINUX_SWAB_H > +#define _LINUX_SWAB_H > + > +#include <linux/types.h> > + > +#include <asm/swab.h> > + > +/* > + * casts are necessary for constants, because we never know how for sure > + * how U/UL/ULL map to __u16, __u32, __u64. At least not in a portable way. > + */ > +#define ___constant_swab16(x) ((__u16)( \ > + (((__u16)(x) & (__u16)0x00ffU) << 8) | \ > + (((__u16)(x) & (__u16)0xff00U) >> 8))) > + > +#define ___constant_swab32(x) ((__u32)( \ > + (((__u32)(x) & (__u32)0x000000ffUL) << 24) | \ > + (((__u32)(x) & (__u32)0x0000ff00UL) << 8) | \ > + (((__u32)(x) & (__u32)0x00ff0000UL) >> 8) | \ > + (((__u32)(x) & (__u32)0xff000000UL) >> 24))) > + > +#define ___constant_swab64(x) ((__u64)( \ > + (((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) | \ > + (((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) | \ > + (((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) | \ > + (((__u64)(x) & (__u64)0x00000000ff000000ULL) << 8) | \ > + (((__u64)(x) & (__u64)0x000000ff00000000ULL) >> 8) | \ > + (((__u64)(x) & (__u64)0x0000ff0000000000ULL) >> 24) | \ > + (((__u64)(x) & (__u64)0x00ff000000000000ULL) >> 40) | \ > + (((__u64)(x) & (__u64)0xff00000000000000ULL) >> 56))) > + > +#define ___constant_swahw32(x) ((__u32)( \ > + (((__u32)(x) & (__u32)0x0000ffffUL) << 16) | \ > + (((__u32)(x) & (__u32)0xffff0000UL) >> 16))) > + > +#define ___constant_swahb32(x) ((__u32)( \ > + (((__u32)(x) & (__u32)0x00ff00ffUL) << 8) | \ > + (((__u32)(x) & (__u32)0xff00ff00UL) >> 8))) > + > +/* > + * Implement the following as inlines, but define the interface using > + * macros to allow constant folding when possible: > + * ___swab16, ___swab32, ___swab64, ___swahw32, ___swahb32 > + */ > + > +static __inline__ __u16 __fswab16(__u16 val) > +{ > +#ifdef __arch_swab16 > + return __arch_swab16(val); > +#else > + return ___constant_swab16(val); > +#endif > +} > + > +static __inline__ __u32 __fswab32(__u32 val) > +{ > +#ifdef __arch_swab32 > + return __arch_swab32(val); > +#else > + return ___constant_swab32(val); > +#endif > +} > + > +static __inline__ __u64 __fswab64(__u64 val) > +{ > +#ifdef __arch_swab64 > + return __arch_swab64(val); > +#elif defined(__SWAB_64_THRU_32__) > + __u32 h = val >> 32; > + __u32 l = val & ((1ULL << 32) - 1); > + return (((__u64)__fswab32(l)) << 32) | ((__u64)(__fswab32(h))); > +#else > + return ___constant_swab64(val); > +#endif > +} > + > +static __inline__ __u32 __fswahw32(__u32 val) > +{ > +#ifdef __arch_swahw32 > + return __arch_swahw32(val); > +#else > + return ___constant_swahw32(val); > +#endif > +} > + > +static __inline__ __u32 __fswahb32(__u32 val) > +{ > +#ifdef __arch_swahb32 > + return __arch_swahb32(val); > +#else > + return ___constant_swahb32(val); > +#endif > +} > + > +/** > + * __swab16 - return a byteswapped 16-bit value > + * @x: value to byteswap > + */ > +#define __swab16(x) \ > + (__builtin_constant_p((__u16)(x)) ? \ > + ___constant_swab16(x) : \ > + __fswab16(x)) > + > +/** > + * __swab32 - return a byteswapped 32-bit value > + * @x: value to byteswap > + */ > +#define __swab32(x) \ > + (__builtin_constant_p((__u32)(x)) ? \ > + ___constant_swab32(x) : \ > + __fswab32(x)) > + > +/** > + * __swab64 - return a byteswapped 64-bit value > + * @x: value to byteswap > + */ > +#define __swab64(x) \ > + (__builtin_constant_p((__u64)(x)) ? \ > + ___constant_swab64(x) : \ > + __fswab64(x)) > + > +/** > + * __swahw32 - return a word-swapped 32-bit value > + * @x: value to wordswap > + * > + * __swahw32(0x12340000) is 0x00001234 > + */ > +#define __swahw32(x) \ > + (__builtin_constant_p((__u32)(x)) ? \ > + ___constant_swahw32(x) : \ > + __fswahw32(x)) > + > +/** > + * __swahb32 - return a high and low byte-swapped 32-bit value > + * @x: value to byteswap > + * > + * __swahb32(0x12345678) is 0x34127856 > + */ > +#define __swahb32(x) \ > + (__builtin_constant_p((__u32)(x)) ? \ > + ___constant_swahb32(x) : \ > + __fswahb32(x)) > + > +/** > + * __swab16p - return a byteswapped 16-bit value from a pointer > + * @p: pointer to a naturally-aligned 16-bit value > + */ > +static __inline__ __u16 __swab16p(const __u16 *p) > +{ > +#ifdef __arch_swab16p > + return __arch_swab16p(p); > +#else > + return __swab16(*p); > +#endif > +} > + > +/** > + * __swab32p - return a byteswapped 32-bit value from a pointer > + * @p: pointer to a naturally-aligned 32-bit value > + */ > +static __inline__ __u32 __swab32p(const __u32 *p) > +{ > +#ifdef __arch_swab32p > + return __arch_swab32p(p); > +#else > + return __swab32(*p); > +#endif > +} > + > +/** > + * __swab64p - return a byteswapped 64-bit value from a pointer > + * @p: pointer to a naturally-aligned 64-bit value > + */ > +static __inline__ __u64 __swab64p(const __u64 *p) > +{ > +#ifdef __arch_swab64p > + return __arch_swab64p(p); > +#else > + return __swab64(*p); > +#endif > +} > + > +/** > + * __swahw32p - return a wordswapped 32-bit value from a pointer > + * @p: pointer to a naturally-aligned 32-bit value > + * > + * See __swahw32() for details of wordswapping. > + */ > +static __inline__ __u32 __swahw32p(const __u32 *p) > +{ > +#ifdef __arch_swahw32p > + return __arch_swahw32p(p); > +#else > + return __swahw32(*p); > +#endif > +} > + > +/** > + * __swahb32p - return a high and low byteswapped 32-bit value from a pointer > + * @p: pointer to a naturally-aligned 32-bit value > + * > + * See __swahb32() for details of high/low byteswapping. > + */ > +static __inline__ __u32 __swahb32p(const __u32 *p) > +{ > +#ifdef __arch_swahb32p > + return __arch_swahb32p(p); > +#else > + return __swahb32(*p); > +#endif > +} > + > +/** > + * __swab16s - byteswap a 16-bit value in-place > + * @p: pointer to a naturally-aligned 16-bit value > + */ > +static __inline__ void __swab16s(__u16 *p) > +{ > +#ifdef __arch_swab16s > + __arch_swab16s(p); > +#else > + *p = __swab16p(p); > +#endif > +} > +/** > + * __swab32s - byteswap a 32-bit value in-place > + * @p: pointer to a naturally-aligned 32-bit value > + */ > +static __inline__ void __swab32s(__u32 *p) > +{ > +#ifdef __arch_swab32s > + __arch_swab32s(p); > +#else > + *p = __swab32p(p); > +#endif > +} > + > +/** > + * __swab64s - byteswap a 64-bit value in-place > + * @p: pointer to a naturally-aligned 64-bit value > + */ > +static __inline__ void __swab64s(__u64 *p) > +{ > +#ifdef __arch_swab64s > + __arch_swab64s(p); > +#else > + *p = __swab64p(p); > +#endif > +} > + > +/** > + * __swahw32s - wordswap a 32-bit value in-place > + * @p: pointer to a naturally-aligned 32-bit value > + * > + * See __swahw32() for details of wordswapping > + */ > +static __inline__ void __swahw32s(__u32 *p) > +{ > +#ifdef __arch_swahw32s > + __arch_swahw32s(p); > +#else > + *p = __swahw32p(p); > +#endif > +} > + > +/** > + * __swahb32s - high and low byteswap a 32-bit value in-place > + * @p: pointer to a naturally-aligned 32-bit value > + * > + * See __swahb32() for details of high and low byte swapping > + */ > +static __inline__ void __swahb32s(__u32 *p) > +{ > +#ifdef __arch_swahb32s > + __arch_swahb32s(p); > +#else > + *p = __swahb32p(p); > +#endif > +} > + > + > +#endif /* _LINUX_SWAB_H */ > diff --git a/debian/patches/add_asm_posix_types_header_files.diff > b/debian/patches/add_asm_posix_types_header_files.diff > new file mode 100644 > index 0000000..5fe72c1 > --- /dev/null > +++ b/debian/patches/add_asm_posix_types_header_files.diff > @@ -0,0 +1,25 @@ > +Courtesy of linux-libc-dev package from i386 architecture, > +copied from the /usr/include/i386-linux-gnu/ directory. > + > +This is needed because our package source here includes a > +file, include/linux/types.h, also copied from that package. > + > +There are also other related header files that are needed. > + > +Patch by Ryan Niebur > + > +Index: u-boot/tools/Makefile > +=================================================================== > +--- u-boot.orig/tools/Makefile 2013-12-09 21:51:52.943348002 -0800 > ++++ u-boot/tools/Makefile 2013-12-16 09:49:54.797412382 -0800 > +@@ -169,6 +169,10 @@ > + -D__KERNEL_STRICT_NAMES \ > + -D_GNU_SOURCE > + > ++DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) > ++ifneq (,$(findstring hurd,$(DEB_BUILD_GNU_TYPE))$(findstring > kfreebsd,$(DEB_BUILD_GNU_TYPE))) > ++ HOSTCPPFLAGS += -I$(SRCTREE)/debian/include/ > ++endif > + > + all: $(obj).depend $(BINS) $(LOGO-y) subdirs > + > diff --git a/debian/patches/series b/debian/patches/series > index eda14a5..8849da5 100644 > --- a/debian/patches/series > +++ b/debian/patches/series > @@ -8,3 +8,4 @@ guruplug_mvfs_and_mmc.diff > 0001-wandboard-uEnv.txt-bootz-n-fixes.patch > ti_armv7_common-support_raw_initrd.diff > am335x-uenv.txt.diff > +add_asm_posix_types_header_files.diff > -- > 1.8.5.1 -- To UNSUBSCRIBE, email to debian-bsd-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20140218191105.GO5461@prl