From: Tom Rini <trini@kernel.crashing.org>

As of 2.6.10-rc3, the following is needed to allow various userland
packages (sysvinit, dhcp, ppp, libcap, libpcap, lilo) to compile as parts
that userland needs (e.g.  for ioctls) is in files with stuff userland
isn't allowed to see.

This adds __KERNEL__ around <linux/ata.h> and some defines (<linux/ata.h>
isn't needed by userland, and is unhappy right now).  sysvinit and some
other packages need <linux/hdreg.h> for HDIO_DRIVE_CMD and other IOCTL
things.  In <linux/types.h> we were unsafely typedef'ing __le64/__be64 as
__u64 only exists when __GNUC__ && !__STRICT_ANSI__ (causing libcap to
fail, for example).  Finally, <asm/atomic.h> provides routines userland
simply cannot use on all arches, but <linux/filter.h> is needed by iputils
for example.  While not all arches put __KERNEL__ around their header, on
MIPS including this header currently blows up the build.

Signed-off-by: Tom Rini <trini@kernel.crashing.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/include/linux/filter.h |    2 ++
 25-akpm/include/linux/hdreg.h  |    3 ++-
 25-akpm/include/linux/types.h  |    2 ++
 3 files changed, 6 insertions(+), 1 deletion(-)

diff -puN include/linux/filter.h~add-missing-__kernel__-or-other-protections include/linux/filter.h
--- 25/include/linux/filter.h~add-missing-__kernel__-or-other-protections	Fri Dec 10 15:17:34 2004
+++ 25-akpm/include/linux/filter.h	Fri Dec 10 15:17:34 2004
@@ -8,7 +8,9 @@
 #include <linux/compiler.h>
 #include <linux/types.h>
 
+#ifdef __KERNEL__
 #include <asm/atomic.h>
+#endif
 
 /*
  * Current version of the filter code architecture.
diff -puN include/linux/hdreg.h~add-missing-__kernel__-or-other-protections include/linux/hdreg.h
--- 25/include/linux/hdreg.h~add-missing-__kernel__-or-other-protections	Fri Dec 10 15:17:34 2004
+++ 25-akpm/include/linux/hdreg.h	Fri Dec 10 15:17:34 2004
@@ -1,6 +1,7 @@
 #ifndef _LINUX_HDREG_H
 #define _LINUX_HDREG_H
 
+#ifdef __KERNEL__
 #include <linux/ata.h>
 
 /*
@@ -57,7 +58,7 @@
 #define IO			0x02
 #define REL			0x04
 #define TAG_MASK		0xf8
-
+#endif /* __KERNEL__ */
 
 /*
  * Command Header sizes for IOCTL commands
diff -puN include/linux/types.h~add-missing-__kernel__-or-other-protections include/linux/types.h
--- 25/include/linux/types.h~add-missing-__kernel__-or-other-protections	Fri Dec 10 15:17:34 2004
+++ 25-akpm/include/linux/types.h	Fri Dec 10 15:17:34 2004
@@ -157,8 +157,10 @@ typedef __u16 __bitwise __le16;
 typedef __u16 __bitwise __be16;
 typedef __u32 __bitwise __le32;
 typedef __u32 __bitwise __be32;
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
 typedef __u64 __bitwise __le64;
 typedef __u64 __bitwise __be64;
+#endif
 
 struct ustat {
 	__kernel_daddr_t	f_tfree;
_