summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Tilley <lv@gentoo.org>2004-07-09 22:44:48 +0000
committerTravis Tilley <lv@gentoo.org>2004-07-09 22:44:48 +0000
commitdab4a9a2c33a5c557f5d095dddcb48672ed3f47e (patch)
treecbfc9214babc676ab5448178d4b3508b3b8f25ea /sys-kernel
parentsecurity fix #49534 (diff)
downloadhistorical-dab4a9a2c33a5c557f5d095dddcb48672ed3f47e.tar.gz
historical-dab4a9a2c33a5c557f5d095dddcb48672ed3f47e.tar.bz2
historical-dab4a9a2c33a5c557f5d095dddcb48672ed3f47e.zip
new linux26-headers! yaay! now 2.6 headers can be keyworded without forcing users to upgrade and i can unmask the new glibc ebuilds which depend on 2.6 with USE=nptl! ^_^
Diffstat (limited to 'sys-kernel')
-rw-r--r--sys-kernel/linux26-headers/ChangeLog23
-rw-r--r--sys-kernel/linux26-headers/Manifest28
-rw-r--r--sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.11
-rw-r--r--sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.3-r11
-rw-r--r--sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.41
-rw-r--r--sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.51
-rw-r--r--sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.61
-rw-r--r--sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.6-r11
-rw-r--r--sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.7-r11
-rw-r--r--sys-kernel/linux26-headers/files/generate-asm-sparc80
-rw-r--r--sys-kernel/linux26-headers/files/linux26-headers-2.6.0-appCompat.patch622
-rw-r--r--sys-kernel/linux26-headers/files/linux26-headers-2.6.0-fb.patch11
-rw-r--r--sys-kernel/linux26-headers/files/linux26-headers-2.6.0-strict-ansi-fix.patch49
-rw-r--r--sys-kernel/linux26-headers/files/linux26-headers-2.6.0-sysctl_h-compat.patch13
-rw-r--r--sys-kernel/linux26-headers/files/linux26-headers-2.6.3-appCompat.patch597
-rw-r--r--sys-kernel/linux26-headers/files/linux26-headers-2.6.3-strict-ansi-fix.patch145
-rw-r--r--sys-kernel/linux26-headers/files/linux26-headers-2.6.4-appCompat.patch592
-rw-r--r--sys-kernel/linux26-headers/files/linux26-headers-2.6.4-unistd-nptl-fix.patch19
-rw-r--r--sys-kernel/linux26-headers/files/linux26-headers-2.6.6-appCompat.patch883
-rw-r--r--sys-kernel/linux26-headers/files/linux26-headers-2.6.6-tcp_info-DRS-backport.patch12
-rw-r--r--sys-kernel/linux26-headers/files/linux26-headers-2.6.7-appCompat.patch988
-rw-r--r--sys-kernel/linux26-headers/linux26-headers-2.6.1.ebuild149
-rw-r--r--sys-kernel/linux26-headers/linux26-headers-2.6.3-r1.ebuild145
-rw-r--r--sys-kernel/linux26-headers/linux26-headers-2.6.4.ebuild150
-rw-r--r--sys-kernel/linux26-headers/linux26-headers-2.6.5.ebuild150
-rw-r--r--sys-kernel/linux26-headers/linux26-headers-2.6.6-r1.ebuild152
-rw-r--r--sys-kernel/linux26-headers/linux26-headers-2.6.6.ebuild146
-rw-r--r--sys-kernel/linux26-headers/linux26-headers-2.6.7-r1.ebuild140
-rw-r--r--sys-kernel/linux26-headers/metadata.xml11
29 files changed, 5112 insertions, 0 deletions
diff --git a/sys-kernel/linux26-headers/ChangeLog b/sys-kernel/linux26-headers/ChangeLog
new file mode 100644
index 000000000000..bd698f9391e2
--- /dev/null
+++ b/sys-kernel/linux26-headers/ChangeLog
@@ -0,0 +1,23 @@
+# ChangeLog for sys-kernel/linux26-headers
+# Copyright 1999-2004 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/linux26-headers/ChangeLog,v 1.1 2004/07/09 22:44:48 lv Exp $
+
+*linux26-headers-2.6.6 (09 Jul 2004)
+
+ 09 Jul 2004; Travis Tilley <lv@gentoo.org> +metadata.xml,
+ +files/generate-asm-sparc, +files/linux26-headers-2.6.0-appCompat.patch,
+ +files/linux26-headers-2.6.0-fb.patch,
+ +files/linux26-headers-2.6.0-strict-ansi-fix.patch,
+ +files/linux26-headers-2.6.0-sysctl_h-compat.patch,
+ +files/linux26-headers-2.6.3-appCompat.patch,
+ +files/linux26-headers-2.6.3-strict-ansi-fix.patch,
+ +files/linux26-headers-2.6.4-appCompat.patch,
+ +files/linux26-headers-2.6.4-unistd-nptl-fix.patch,
+ +files/linux26-headers-2.6.6-appCompat.patch,
+ +files/linux26-headers-2.6.6-tcp_info-DRS-backport.patch,
+ +files/linux26-headers-2.6.7-appCompat.patch, +linux26-headers-2.6.1.ebuild,
+ +linux26-headers-2.6.3-r1.ebuild, +linux26-headers-2.6.4.ebuild,
+ +linux26-headers-2.6.5.ebuild, +linux26-headers-2.6.6-r1.ebuild,
+ +linux26-headers-2.6.6.ebuild, +linux26-headers-2.6.7-r1.ebuild:
+ moved all 2.6 headers to linux26-headers
+
diff --git a/sys-kernel/linux26-headers/Manifest b/sys-kernel/linux26-headers/Manifest
new file mode 100644
index 000000000000..f9e7e29f39f5
--- /dev/null
+++ b/sys-kernel/linux26-headers/Manifest
@@ -0,0 +1,28 @@
+MD5 027d6e270d1193facdf41969331619c8 linux26-headers-2.6.6-r1.ebuild 4320
+MD5 f2b7161be5f027a81c29e43aaa8f5559 linux26-headers-2.6.4.ebuild 4162
+MD5 1a525580f37deabcdb9a9c0a3ca7cc4b linux26-headers-2.6.6.ebuild 4170
+MD5 e19482fa75253c9b1f766dae4b15df50 linux26-headers-2.6.1.ebuild 4097
+MD5 a475bc2e415b9abc174dd2420ce28863 linux26-headers-2.6.7-r1.ebuild 4023
+MD5 783f6e06e49de0761dab1ed62f86faaf linux26-headers-2.6.5.ebuild 4173
+MD5 cf1a426a2ba138f717c83370f6d49c8c linux26-headers-2.6.3-r1.ebuild 4014
+MD5 71418145ab77a3ba16170c0723610868 ChangeLog 1179
+MD5 608fe99985244b0445f76cee44c9ae14 metadata.xml 290
+MD5 830c6d1dcb1b22b9095e6f16f3ebdf85 files/linux26-headers-2.6.6-tcp_info-DRS-backport.patch 288
+MD5 cb8280b584baf48a15e342e96099eeb9 files/linux26-headers-2.6.6-appCompat.patch 26265
+MD5 c33f70f0dc30a6fce5cfea06233defd4 files/linux26-headers-2.6.3-appCompat.patch 17484
+MD5 7f5b6765680735a897bb2fb9e227f6b6 files/linux26-headers-2.6.0-appCompat.patch 17983
+MD5 aa9ba92e8479bdb5f69b03b5c72be866 files/linux26-headers-2.6.4-unistd-nptl-fix.patch 362
+MD5 ebd650d7c2167aa6f3added403d478b0 files/linux26-headers-2.6.7-appCompat.patch 29628
+MD5 ec3d195f7d40d599802d5c0c5ad8f502 files/linux26-headers-2.6.4-appCompat.patch 17240
+MD5 b3e4e51616a061327b46cbd31132c8c8 files/generate-asm-sparc 1654
+MD5 8a065c0dc3b8fac8747de35f1af75a2c files/linux26-headers-2.6.0-fb.patch 386
+MD5 1f7aaa49614b3055b6110518b1ed23ee files/digest-linux26-headers-2.6.1 66
+MD5 53405777e395f5520722f9fb2398ddd8 files/digest-linux26-headers-2.6.4 66
+MD5 a8c4e44a323fbde21b9de3940e2ca5ef files/digest-linux26-headers-2.6.5 66
+MD5 b737234adedfb6dc585af6bbb40bf2d3 files/digest-linux26-headers-2.6.6 66
+MD5 537c756a05fe1a6819277938d570b70a files/linux26-headers-2.6.0-strict-ansi-fix.patch 1484
+MD5 a73786f0b9dda7e9ebacb91a192384f9 files/linux26-headers-2.6.0-sysctl_h-compat.patch 352
+MD5 1a3b49dce5bc80827496967e767a4a04 files/digest-linux26-headers-2.6.3-r1 66
+MD5 b737234adedfb6dc585af6bbb40bf2d3 files/digest-linux26-headers-2.6.6-r1 66
+MD5 b405a908c2cc1e6ed3e25f030c41f4c4 files/digest-linux26-headers-2.6.7-r1 66
+MD5 598136365858338b26557b7587c6725f files/linux26-headers-2.6.3-strict-ansi-fix.patch 4166
diff --git a/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.1 b/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.1
new file mode 100644
index 000000000000..e9195605e006
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.1
@@ -0,0 +1 @@
+MD5 fa82d1e4be518261b2eeb78eabf9cca7 linux-2.6.1.tar.bz2 33240033
diff --git a/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.3-r1 b/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.3-r1
new file mode 100644
index 000000000000..3cdc70342a8f
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.3-r1
@@ -0,0 +1 @@
+MD5 6063a7e424355ec52e0cb559fb99034d linux-2.6.3.tar.bz2 34271622
diff --git a/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.4 b/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.4
new file mode 100644
index 000000000000..36ca57690dd1
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.4
@@ -0,0 +1 @@
+MD5 335f06eba1e5372ba38a0d2b253629bd linux-2.6.4.tar.bz2 34386912
diff --git a/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.5 b/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.5
new file mode 100644
index 000000000000..2ae7b101da38
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.5
@@ -0,0 +1 @@
+MD5 9a76bf64c1151369b250f967d83077aa linux-2.6.5.tar.bz2 34684611
diff --git a/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.6 b/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.6
new file mode 100644
index 000000000000..fe3698be5a62
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.6
@@ -0,0 +1 @@
+MD5 5218790bc3db41e77a7422969639a9ad linux-2.6.6.tar.bz2 34896138
diff --git a/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.6-r1 b/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.6-r1
new file mode 100644
index 000000000000..fe3698be5a62
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.6-r1
@@ -0,0 +1 @@
+MD5 5218790bc3db41e77a7422969639a9ad linux-2.6.6.tar.bz2 34896138
diff --git a/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.7-r1 b/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.7-r1
new file mode 100644
index 000000000000..fbf6945c9a39
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/digest-linux26-headers-2.6.7-r1
@@ -0,0 +1 @@
+MD5 a74671ea68b0e3c609e8785ed8497c14 linux-2.6.7.tar.bz2 35092228
diff --git a/sys-kernel/linux26-headers/files/generate-asm-sparc b/sys-kernel/linux26-headers/files/generate-asm-sparc
new file mode 100644
index 000000000000..78171c33e979
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/generate-asm-sparc
@@ -0,0 +1,80 @@
+#!/bin/sh -e
+#
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/linux26-headers/files/generate-asm-sparc,v 1.1 2004/07/09 22:44:48 lv Exp $
+#
+# This script generates the files in /usr/include/asm for sparc systems
+# during installation of sys-kernel/linux-headers.
+# Will no longer be needed when full 64 bit support is used on sparc64
+# systems.
+#
+# Shamefully ripped from Debian
+# ----------------------------------------------------------------------
+
+# Idea borrowed from RedHat's kernel package
+
+if [ -n "$1" ]; then
+ if [ ! -d "$1" ]; then
+ echo "$1" does not exist, or is not a directory
+ exit 1
+ fi
+ cd $1
+else
+ cd /usr/include
+fi
+
+if [ ! -d asm-sparc -o ! -d asm-sparc64 ] ; then
+ echo E: asm-sparc and asm-sparc64 must exist, or you will have problems
+ exit 1
+fi
+
+rm -rf asm
+mkdir asm
+
+for h in `( ls asm-sparc; ls asm-sparc64 ) | grep '\.h$' | sort -u`; do
+ name=`echo $h | tr a-z. A-Z_`
+ # common header
+ cat > asm/$h << EOF
+/* All asm/ files are generated and point to the corresponding
+ * file in asm-sparc or asm-sparc64. To regenerate, run "generate-asm"
+ */
+
+#ifndef __SPARCSTUB__${name}__
+#define __SPARCSTUB__${name}__
+
+EOF
+
+ # common for sparc and sparc64
+ if [ -f asm-sparc/$h -a -f asm-sparc64/$h ]; then
+ cat >> asm/$h <<EOF
+#ifdef __arch64__
+#include <asm-sparc64/$h>
+#else
+#include <asm-sparc/$h>
+#endif
+EOF
+
+ # sparc only
+ elif [ -f asm-sparc/$h ]; then
+ cat >> asm/$h <<EOF
+#ifndef __arch64__
+#include <asm-sparc/$h>
+#endif
+EOF
+ # sparc64 only
+ else
+ cat >> asm/$h <<EOF
+#ifdef __arch64__
+#include <asm-sparc64/$h>
+#endif
+EOF
+ fi
+
+ # common footer
+ cat >> asm/$h <<EOF
+
+#endif /* !__SPARCSTUB__${name}__ */
+EOF
+
+done
+
+exit 0
diff --git a/sys-kernel/linux26-headers/files/linux26-headers-2.6.0-appCompat.patch b/sys-kernel/linux26-headers/files/linux26-headers-2.6.0-appCompat.patch
new file mode 100644
index 000000000000..9bd2863dbbdc
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/linux26-headers-2.6.0-appCompat.patch
@@ -0,0 +1,622 @@
+Authors: Tim Yamin <plasmaroo@gentoo.org>
+ Mike Frysinger <vapier@gentoo.org>
+ Martin Schlemmer <azarah@gentoo.org>
+
+This patch neatens up the 2.6.0 headers for user-space usage and allows backward
+compatibility on a variety of applications which are designed for 2.4 headers.
+
+diff -ur linux-2.6.0/include/linux/bitmap.h linux-2.6.0/include/linux.gentoo/bitmap.h
+--- linux-2.6.0/include/linux/bitmap.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/bitmap.h 2003-12-27 19:19:31.000000000 +0000
+@@ -1,6 +1,7 @@
+ #ifndef __LINUX_BITMAP_H
+ #define __LINUX_BITMAP_H
+
++#ifdef __KERNEL__
+ #ifndef __ASSEMBLY__
+
+ #include <linux/config.h>
+@@ -155,5 +156,5 @@
+ #endif
+
+ #endif /* __ASSEMBLY__ */
+-
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_BITMAP_H */
+diff -ur linux-2.6.0/include/linux/buffer_head.h linux-2.6.0/include/linux.gentoo/buffer_head.h
+--- linux-2.6.0/include/linux/buffer_head.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/buffer_head.h 2003-12-27 19:19:31.000000000 +0000
+@@ -34,6 +34,8 @@
+
+ #define MAX_BUF_PER_PAGE (PAGE_CACHE_SIZE / 512)
+
++#ifdef __KERNEL__
++
+ struct page;
+ struct buffer_head;
+ struct address_space;
+@@ -283,6 +285,8 @@
+ __wait_on_buffer(bh);
+ }
+
++#endif /* __KERNEL__ */
++
+ static inline void lock_buffer(struct buffer_head *bh)
+ {
+ while (test_set_buffer_locked(bh))
+diff -ur linux-2.6.0/include/linux/compiler-gcc2.h linux-2.6.0/include/linux.gentoo/compiler-gcc2.h
+--- linux-2.6.0/include/linux/compiler-gcc2.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/compiler-gcc2.h 2003-12-27 19:19:31.000000000 +0000
+@@ -12,7 +12,9 @@
+ # define __builtin_expect(x, expected_value) (x)
+ #endif
+
++#ifndef __attribute_used__
+ #define __attribute_used__ __attribute__((__unused__))
++#endif
+
+ /*
+ * The attribute `pure' is not implemented in GCC versions earlier
+diff -ur linux-2.6.0/include/linux/compiler-gcc3.h linux-2.6.0/include/linux.gentoo/compiler-gcc3.h
+--- linux-2.6.0/include/linux/compiler-gcc3.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/compiler-gcc3.h 2003-12-30 23:34:55.000000000 +0000
+@@ -3,6 +3,8 @@
+ /* These definitions are for GCC v3.x. */
+ #include <linux/compiler-gcc.h>
+
++#ifdef __KERNEL__
++
+ #if __GNUC_MINOR__ >= 1
+ # define inline __inline__ __attribute__((always_inline))
+ # define __inline__ __inline__ __attribute__((always_inline))
+@@ -20,3 +22,5 @@
+ #endif
+
+ #define __attribute_pure__ __attribute__((pure))
++
++#endif /* __KERNEL__ */
+diff -ur linux-2.6.1/include/linux/cpumask.h linux-2.6.1/include/linux.gentoo/cpumask.h
+--- linux-2.6.1/include/linux/cpumask.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.1/include/linux.gentoo/cpumask.h 2003-12-27 19:19:31.000000000 +0000
+@@ -1,6 +1,8 @@
+ #ifndef __LINUX_CPUMASK_H
+ #define __LINUX_CPUMASK_H
+
++#ifdef __KERNEL__
++
+ #include <linux/threads.h>
+ #include <asm/cpumask.h>
+ #include <asm/bug.h>
+@@ -68,4 +70,5 @@
+ cpu < NR_CPUS; \
+ cpu = next_online_cpu(cpu,map))
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_CPUMASK_H */
+diff -ur linux-2.6.0/include/linux/ext2_fs_sb.h linux-2.6.0/include/linux.gentoo/ext2_fs_sb.h
+--- linux-2.6.0/include/linux/ext2_fs_sb.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/ext2_fs_sb.h 2003-12-27 19:19:31.000000000 +0000
+@@ -45,9 +45,9 @@
+ int s_desc_per_block_bits;
+ int s_inode_size;
+ int s_first_ino;
+- u32 s_next_generation;
++ __u32 s_next_generation;
+ unsigned long s_dir_count;
+- u8 *s_debts;
++ __u8 *s_debts;
+ struct percpu_counter s_freeblocks_counter;
+ struct percpu_counter s_freeinodes_counter;
+ struct percpu_counter s_dirs_counter;
+diff -ur linux-2.6.0/include/linux/fb.h linux-2.6.0/include/linux.gentoo/fb.h
+--- linux-2.6.0/include/linux/fb.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/fb.h 2003-12-27 19:19:31.000000000 +0000
+@@ -3,8 +3,8 @@
+
+ #include <linux/tty.h>
+ #include <linux/workqueue.h>
++#include <linux/spinlock.h>
+ #include <asm/types.h>
+-#include <asm/io.h>
+
+ /* Definitions of frame buffers */
+
+@@ -339,8 +339,8 @@
+ __u32 scan_align; /* alignment per scanline */
+ __u32 flags; /* see FB_PIXMAP_* */
+ /* access methods */
+- void (*outbuf)(u8 *dst, u8 *addr, unsigned int size);
+- u8 (*inbuf) (u8 *addr);
++ void (*outbuf)(__u8 *dst, __u8 *addr, unsigned int size);
++ __u8 (*inbuf) (__u8 *addr);
+ spinlock_t lock; /* spinlock */
+ atomic_t count;
+ };
+@@ -348,6 +348,7 @@
+
+ #include <linux/fs.h>
+ #include <linux/init.h>
++#include <asm/io.h>
+
+ struct fb_info;
+ struct vm_area_struct;
+diff -ur linux-2.6.0/include/linux/isdn.h linux-2.6.0/include/linux.gentoo/isdn.h
+--- linux-2.6.0/include/linux/isdn.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/isdn.h 2003-12-27 19:19:31.000000000 +0000
+@@ -14,7 +14,10 @@
+ #define __ISDN_H__
+
+ #include <linux/ioctl.h>
++
++#ifdef __KERNEL__
+ #include <linux/isdn/fsm.h>
++#endif
+
+ #ifdef CONFIG_COBALT_MICRO_SERVER
+ /* Save memory */
+diff -ur linux-2.6.0/include/linux/list.h linux-2.6.0/include/linux.gentoo/list.h
+--- linux-2.6.0/include/linux/list.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/list.h 2003-12-27 19:19:31.000000000 +0000
+@@ -584,7 +584,6 @@
+ pos && ({ n = pos->next; 1; }) && \
+ ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
+ pos = n)
+-#else
+-#warning "don't include kernel headers in userspace"
++
+ #endif /* __KERNEL__ */
+ #endif
+diff -ur linux-2.6.0/include/linux/mod_devicetable.h linux-2.6.0/include/linux.gentoo/mod_devicetable.h
+--- linux-2.6.0/include/linux/mod_devicetable.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/mod_devicetable.h 2003-12-27 19:19:31.000000000 +0000
+@@ -10,7 +10,6 @@
+ #ifdef __KERNEL__
+ #include <linux/types.h>
+ typedef unsigned long kernel_ulong_t;
+-#endif
+
+ #define PCI_ANY_ID (~0)
+
+@@ -147,5 +146,5 @@
+ #define CCW_DEVICE_ID_MATCH_DEVICE_TYPE 0x04
+ #define CCW_DEVICE_ID_MATCH_DEVICE_MODEL 0x08
+
+-
++#endif /* __KERNEL__ */
+ #endif /* LINUX_MOD_DEVICETABLE_H */
+diff -ur linux-2.6.0/include/linux/radix-tree.h linux-2.6.0/include/linux.gentoo/radix-tree.h
+--- linux-2.6.0/include/linux/radix-tree.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/radix-tree.h 2003-12-27 19:19:31.000000000 +0000
+@@ -41,6 +41,8 @@
+ (root)->rnode = NULL; \
+ } while (0)
+
++#ifdef __KERNEL__
++
+ extern int radix_tree_insert(struct radix_tree_root *, unsigned long, void *);
+ extern void *radix_tree_lookup(struct radix_tree_root *, unsigned long);
+ extern void *radix_tree_delete(struct radix_tree_root *, unsigned long);
+@@ -54,4 +56,5 @@
+ preempt_enable();
+ }
+
++#endif /* __KERNEL__ */
+ #endif /* _LINUX_RADIX_TREE_H */
+diff -ur linux-2.6.0/include/linux/smp.h linux-2.6.0/include/linux.gentoo/smp.h
+--- linux-2.6.0/include/linux/smp.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/smp.h 2003-12-27 19:19:31.000000000 +0000
+@@ -6,6 +6,8 @@
+ * Alan Cox. <alan@redhat.com>
+ */
+
++
++#ifdef __KERNEL__
+ #include <linux/config.h>
+
+ #ifdef CONFIG_SMP
+@@ -112,4 +114,5 @@
+ #define put_cpu() preempt_enable()
+ #define put_cpu_no_resched() preempt_enable_no_resched()
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_SMP_H */
+diff -ur linux-2.6.0/include/linux/spinlock.h linux-2.6.0/include/linux.gentoo/spinlock.h
+--- linux-2.6.0/include/linux/spinlock.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/spinlock.h 2003-12-27 19:19:31.000000000 +0000
+@@ -183,6 +183,7 @@
+ #define _raw_write_trylock(lock) ({ (void)(lock); (1); })
+
+ #endif /* !SMP */
++#ifdef __KERNEL__
+
+ /*
+ * Define the various spin_lock and rw_lock methods. Note we define these
+@@ -465,4 +466,5 @@
+ #endif
+ }
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_SPINLOCK_H */
+diff -ur linux-2.6.0/include/linux/time.h linux-2.6.0/include/linux.gentoo/time.h
+--- linux-2.6.0/include/linux/time.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/time.h 2003-12-27 19:19:31.000000000 +0000
+@@ -4,24 +4,31 @@
+ #include <asm/param.h>
+ #include <linux/types.h>
+
++#ifndef _SYS_TIME_H
+ #ifndef _STRUCT_TIMESPEC
++#ifndef __timespec_defined
+ #define _STRUCT_TIMESPEC
+ struct timespec {
+ time_t tv_sec; /* seconds */
+ long tv_nsec; /* nanoseconds */
+ };
++#endif /* __timespec_defined */
+ #endif /* _STRUCT_TIMESPEC */
+
++#ifndef _STRUCT_TIMEVAL
+ struct timeval {
+ time_t tv_sec; /* seconds */
+ suseconds_t tv_usec; /* microseconds */
+ };
++#endif /* _STRUCT_TIMEVAL */
+
+ struct timezone {
+ int tz_minuteswest; /* minutes west of Greenwich */
+ int tz_dsttime; /* type of dst correction */
+ };
+
++#endif /* _SYS_TIME_H */
++
+ #ifdef __KERNEL__
+
+ #include <linux/spinlock.h>
+@@ -281,6 +281,8 @@
+ * machines were long is 32-bit! (However, as time_t is signed, we
+ * will already get problems at other places on 2038-01-19 03:14:08)
+ */
++
++#ifndef _TIME_H
+ static inline unsigned long
+ mktime (unsigned int year, unsigned int mon,
+ unsigned int day, unsigned int hour,
+@@ -298,6 +300,7 @@
+ )*60 + min /* now have minutes */
+ )*60 + sec; /* finally seconds */
+ }
++#endif
+
+ extern struct timespec xtime;
+ extern struct timespec wall_to_monotonic;
+@@ -351,15 +358,19 @@
+ #define ITIMER_VIRTUAL 1
+ #define ITIMER_PROF 2
+
++#ifndef _TIME_H
+ struct itimerspec {
+ struct timespec it_interval; /* timer period */
+ struct timespec it_value; /* timer expiration */
+ };
++#endif /* _TIME_H */
+
++#ifndef _SYS_TIME_H
+ struct itimerval {
+ struct timeval it_interval; /* timer interval */
+ struct timeval it_value; /* current value */
+ };
++#endif /* _SYS_TIME_H */
+
+
+ /*
+diff -ur linux-2.6.0/include/linux/videodev.h linux-2.6.0/include/linux.gentoo/videodev.h
+--- linux-2.6.0/include/linux/videodev.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/videodev.h 2003-12-27 19:19:31.000000000 +0000
+@@ -3,13 +3,13 @@
+
+ #include <linux/types.h>
+ #include <linux/version.h>
+-#include <linux/device.h>
+
+ #define HAVE_V4L2 1
+ #include <linux/videodev2.h>
+
+ #ifdef __KERNEL__
+
++#include <linux/device.h>
+ #include <linux/poll.h>
+ #include <linux/mm.h>
+
+diff -ur linux-2.6.0/include/linux/workqueue.h linux-2.6.0/include/linux.gentoo/workqueue.h
+--- linux-2.6.0/include/linux/workqueue.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/workqueue.h 2003-12-27 19:19:31.000000000 +0000
+@@ -5,6 +5,8 @@
+ #ifndef _LINUX_WORKQUEUE_H
+ #define _LINUX_WORKQUEUE_H
+
++#ifdef __KERNEL__
++
+ #include <linux/timer.h>
+ #include <linux/linkage.h>
+
+@@ -73,5 +75,7 @@
+ return del_timer_sync(&work->timer);
+ }
+
++#endif /* __KERNEL__ */
++
+ #endif
+
+diff -ur linux-2.6.0/include/asm-i386/mpspec.h linux-2.6.0/include/asm-i386/mpspec.h
+--- linux-2.6.0/include/asm-i386/mpspec.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/mpspec.h 2004-01-19 20:01:11.000000000 +0000
+@@ -3,7 +3,7 @@
+
+ #include <linux/cpumask.h>
+ #include <asm/mpspec_def.h>
+-#include <mach_mpspec.h>
++#include <asm/mach-generic/mach_mpspec.h>
+
+ extern int mp_bus_id_to_type [MAX_MP_BUSSES];
+ extern int mp_bus_id_to_node [MAX_MP_BUSSES];
+diff -ur linux-2.6.0/include/asm-i386/processor.h linux-2.6.0/include/asm-i386/processor.h
+--- linux-2.6.0/include/asm-i386/processor.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/processor.h 2004-01-19 20:01:11.000000000 +0000
+@@ -8,7 +8,9 @@
+ #define __ASM_I386_PROCESSOR_H
+
+ #include <asm/vm86.h>
++#ifdef __KERNEL__
+ #include <asm/math_emu.h>
++#endif
+ #include <asm/segment.h>
+ #include <asm/page.h>
+ #include <asm/types.h>
+diff -ur linux-2.6.0/include/asm-i386/semaphore.h linux-2.6.0/include/asm-i386/semaphore.h
+--- linux-2.6.0/include/asm-i386/semaphore.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/semaphore.h 2004-01-19 20:01:11.000000000 +0000
+@@ -3,8 +3,6 @@
+
+ #include <linux/linkage.h>
+
+-#ifdef __KERNEL__
+-
+ /*
+ * SMP- and interrupt-safe semaphores..
+ *
+@@ -214,4 +212,3 @@
+ }
+
+ #endif
+-#endif
+diff -ur linux-2.6.0/include/asm-i386/signal.h linux-2.6.0/include/asm-i386/signal.h
+--- linux-2.6.0/include/asm-i386/signal.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/signal.h 2004-01-19 20:01:11.000000000 +0000
+@@ -26,7 +26,9 @@
+ /* Here we must cater to libcs that poke about in kernel headers. */
+
+ #define NSIG 32
++#ifndef __sigset_t_defined
+ typedef unsigned long sigset_t;
++#endif
+
+ #endif /* __KERNEL__ */
+
+@@ -155,6 +157,7 @@
+ #else
+ /* Here we must cater to libcs that poke about in kernel headers. */
+
++#ifndef _SIGNAL_H
+ struct sigaction {
+ union {
+ __sighandler_t _sa_handler;
+@@ -164,17 +167,20 @@
+ unsigned long sa_flags;
+ void (*sa_restorer)(void);
+ };
++#endif
+
+ #define sa_handler _u._sa_handler
+ #define sa_sigaction _u._sa_sigaction
+
+ #endif /* __KERNEL__ */
+
++#ifndef _SIGNAL_H
+ typedef struct sigaltstack {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
++#endif
+
+ #ifdef __KERNEL__
+ #include <asm/sigcontext.h>
+diff -ur linux-2.6.0/include/asm-i386/smp.h linux-2.6.0/include/asm-i386/smp.h
+--- linux-2.6.0/include/asm-i386/smp.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/smp.h 2004-01-19 20:01:11.000000000 +0000
+@@ -70,7 +70,7 @@
+ #ifdef APIC_DEFINITION
+ extern int hard_smp_processor_id(void);
+ #else
+-#include <mach_apicdef.h>
++#include <asm/mach-generic/mach_apicdef.h>
+ static inline int hard_smp_processor_id(void)
+ {
+ /* we don't want to mark this access volatile - bad code generation */
+diff -ur linux-2.6.0/include/linux/types.h linux-2.6.0/include/linux.gentoo/types.h
+--- linux-2.6.0/include/linux/types.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/types.h 2004-01-19 20:01:11.000000000 +0000
+@@ -19,12 +19,24 @@
+
+ typedef __u32 __kernel_dev_t;
+
++#ifndef _SYS_SELECT_H
+ typedef __kernel_fd_set fd_set;
++#endif
++#ifndef __dev_t_defined
+ typedef __kernel_dev_t dev_t;
++#endif
++#ifndef __ino_t_defined
+ typedef __kernel_ino_t ino_t;
++#endif
++#ifndef __mode_t_defined
+ typedef __kernel_mode_t mode_t;
++#endif
++#ifndef __nlink_t_defined
+ typedef __kernel_nlink_t nlink_t;
++#endif
++#ifndef __off_t_defined
+ typedef __kernel_off_t off_t;
++#endif
+ typedef __kernel_pid_t pid_t;
+ typedef __kernel_daddr_t daddr_t;
+ typedef __kernel_key_t key_t;
+@@ -34,7 +46,9 @@
+
+ #ifdef __KERNEL__
+ typedef __kernel_uid32_t uid_t;
++#define __uid_t_defined
+ typedef __kernel_gid32_t gid_t;
++#define __gid_t_defined
+ typedef __kernel_uid16_t uid16_t;
+ typedef __kernel_gid16_t gid16_t;
+
+@@ -49,7 +63,9 @@
+ */
+ #else
+ typedef __kernel_uid_t uid_t;
++#define __uid_t_defined
+ typedef __kernel_gid_t gid_t;
++#define __gid_t_defined
+ #endif /* __KERNEL__ */
+
+ #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+diff -ur linux-2.6.0/include/asm-generic/siginfo.h linux-2.6.0/include/asm-generic/siginfo.h
+--- linux-2.6.0/include/asm-generic/siginfo.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-generic/siginfo.h 2004-01-19 20:01:11.000000000 +0000
+@@ -4,10 +4,12 @@
+ #include <linux/compiler.h>
+ #include <linux/types.h>
+
++#ifndef _SIGNAL_H
+ typedef union sigval {
+ int sival_int;
+ void *sival_ptr;
+ } sigval_t;
++#endif
+
+ /*
+ * This is the size (including padding) of the part of the
+@@ -31,7 +33,7 @@
+ #endif
+
+ #ifndef HAVE_ARCH_SIGINFO_T
+-
++#ifndef _SIGNAL_H
+ typedef struct siginfo {
+ int si_signo;
+ int si_errno;
+@@ -86,7 +88,7 @@
+ } _sigpoll;
+ } _sifields;
+ } siginfo_t;
+-
++#endif
+ #endif
+
+ /*
+@@ -238,7 +240,7 @@
+ #endif
+
+ #ifndef HAVE_ARCH_SIGEVENT_T
+-
++#ifndef _SIGNAL_H
+ typedef struct sigevent {
+ sigval_t sigev_value;
+ int sigev_signo;
+@@ -253,7 +255,7 @@
+ } _sigev_thread;
+ } _sigev_un;
+ } sigevent_t;
+-
++#endif
+ #endif
+
+ #define sigev_notify_function _sigev_un._sigev_thread._function
+diff -ur linux-2.6.0/include/linux/jiffies.h linux-2.6.0/include/linux.gentoo/jiffies.h
+--- linux-2.6.0/include/linux/jiffies.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/jiffies.h 2004-01-19 20:01:11.000000000 +0000
+@@ -13,15 +13,15 @@
+ * without holding read_lock_irq(&xtime_lock).
+ * get_jiffies_64() will do this for you as appropriate.
+ */
+-extern u64 jiffies_64;
++extern __u64 jiffies_64;
+ extern unsigned long volatile jiffies;
+
+ #if (BITS_PER_LONG < 64)
+-u64 get_jiffies_64(void);
++__u64 get_jiffies_64(void);
+ #else
+-static inline u64 get_jiffies_64(void)
++static inline __u64 get_jiffies_64(void)
+ {
+- return (u64)jiffies;
++ return (__u64)jiffies;
+ }
+ #endif
+
+diff -ur linux-2.6.0/include/linux/i2c.h linux-2.6.0/include/linux.gentoo/i2c.h
+--- linux-2.6.0/include/linux/i2c.h 2004-02-07 13:29:15.099504640 -0500
++++ linux-2.6.0/include/linux.gentoo/i2c.h 2004-02-07 13:35:53.956869104 -0500
+@@ -28,10 +28,18 @@
+ #ifndef _LINUX_I2C_H
+ #define _LINUX_I2C_H
+
+-#include <linux/module.h>
+-#include <linux/types.h>
++#ifdef __KERNEL__
++# include <linux/module.h>
++# include <linux/types.h>
++#else
++# define __KERNEL__
++# include <linux/types.h>
++# undef __KERNEL__
++#endif
+ #include <linux/i2c-id.h>
++#ifdef __KERNEL__
+ #include <linux/device.h> /* for struct device */
++#endif
+ #include <asm/semaphore.h>
+
+ /* --- General options ------------------------------------------------ */
+@@ -109,6 +117,7 @@
+ * events.
+ */
+
++#ifdef __KERNEL__
+ struct i2c_driver {
+ struct module *owner;
+ char name[32];
+@@ -268,6 +277,7 @@
+ {
+ dev_set_drvdata (&dev->dev, data);
+ }
++#endif
+
+ /*flags for the driver struct: */
+ #define I2C_DF_NOTIFY 0x01 /* notify on bus (de/a)ttaches */
+@@ -599,11 +609,13 @@
+ #define i2c_is_isa_adapter(adapptr) \
+ ((adapptr)->algo->id == I2C_ALGO_ISA)
+
++#ifdef __KERNEL__
+ /* Tiny delay function used by the i2c bus drivers */
+ static inline void i2c_delay(signed long timeout)
+ {
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout(timeout);
+ }
++#endif
+
+ #endif /* _LINUX_I2C_H */
diff --git a/sys-kernel/linux26-headers/files/linux26-headers-2.6.0-fb.patch b/sys-kernel/linux26-headers/files/linux26-headers-2.6.0-fb.patch
new file mode 100644
index 000000000000..398240a6390e
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/linux26-headers-2.6.0-fb.patch
@@ -0,0 +1,11 @@
+diff -Naur linux-2.6.0-orig/include/linux/fb.h linux-2.6.0/include/linux/fb.h
+--- linux-2.6.0-orig/include/linux/fb.h 2003-12-18 03:58:39.000000000 +0100
++++ linux-2.6.0/include/linux/fb.h 2004-01-22 19:12:10.765346576 +0100
+@@ -5,6 +5,7 @@
+ #include <linux/workqueue.h>
+ #include <asm/types.h>
+ #include <asm/io.h>
++#include <asm/atomic.h>
+
+ /* Definitions of frame buffers */
+
diff --git a/sys-kernel/linux26-headers/files/linux26-headers-2.6.0-strict-ansi-fix.patch b/sys-kernel/linux26-headers/files/linux26-headers-2.6.0-strict-ansi-fix.patch
new file mode 100644
index 000000000000..ee10aeb6c214
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/linux26-headers-2.6.0-strict-ansi-fix.patch
@@ -0,0 +1,49 @@
+--- linux-2.6.0/include/asm-i386/byteorder.h 2003-07-10 21:11:31.000000000 +0100
++++ linux-2.6.0/include/asm-i386/byteorder.h 2003-12-26 22:58:17.000000000 +0000
+@@ -35,7 +35,7 @@
+ }
+
+
+-static inline __u64 ___arch__swab64(__u64 val)
++static __inline__ __u64 ___arch__swab64(__u64 val)
+ {
+ union {
+ struct { __u32 a,b; } s;
+@@ -43,13 +43,13 @@
+ } v;
+ v.u = val;
+ #ifdef CONFIG_X86_BSWAP
+- asm("bswapl %0 ; bswapl %1 ; xchgl %0,%1"
++ __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.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));
++ __asm__("xchgl %0,%1" : "=r" (v.s.a), "=r" (v.s.b) : "0" (v.s.a), "1" (v.s.b));
+ #endif
+ return v.u;
+ }
+--- linux-2.6.0/include/asm-i386/types.h 2003-07-10 21:11:00.000000000 +0100
++++ linux-2.6.0/include/asm-i386/types.h 2003-12-26 23:09:38.000000000 +0000
+@@ -19,10 +19,14 @@
+ typedef __signed__ int __s32;
+ typedef unsigned int __u32;
+
+-#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+-typedef __signed__ long long __s64;
+-typedef unsigned long long __u64;
+-#endif
++#ifndef __GNUC__
++# ifndef __extension__
++# define __extension__
++# endif /* __extension__ */
++#endif /* __GNUC__ */
++
++__extension__ typedef __signed__ long long __s64;
++__extension__ typedef unsigned long long __u64;
+
+ #endif /* __ASSEMBLY__ */
+
diff --git a/sys-kernel/linux26-headers/files/linux26-headers-2.6.0-sysctl_h-compat.patch b/sys-kernel/linux26-headers/files/linux26-headers-2.6.0-sysctl_h-compat.patch
new file mode 100644
index 000000000000..14b248e4f314
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/linux26-headers-2.6.0-sysctl_h-compat.patch
@@ -0,0 +1,13 @@
+--- 1/include/linux/sysctl.h 2003-05-18 22:12:39.000000000 +0200
++++ 2/include/linux/sysctl.h 2003-05-18 22:13:58.000000000 +0200
+@@ -35,6 +35,10 @@
+ the largest acceptable value for the nlen
+ member of a struct __sysctl_args to have? */
+
++#ifndef __user
++#define __user
++#endif
++
+ struct __sysctl_args {
+ int __user *name;
+ int nlen;
diff --git a/sys-kernel/linux26-headers/files/linux26-headers-2.6.3-appCompat.patch b/sys-kernel/linux26-headers/files/linux26-headers-2.6.3-appCompat.patch
new file mode 100644
index 000000000000..e216a686cd23
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/linux26-headers-2.6.3-appCompat.patch
@@ -0,0 +1,597 @@
+Authors: Tim Yamin <plasmaroo@gentoo.org>
+ Mike Frysinger <vapier@gentoo.org>
+ Martin Schlemmer <azarah@gentoo.org>
+
+This patch neatens up the 2.6.0 headers for user-space usage and allows backward
+compatibility on a variety of applications which are designed for 2.4 headers.
+
+diff -ur linux-2.6.0/include/linux/bitmap.h linux-2.6.0/include/linux.gentoo/bitmap.h
+--- linux-2.6.0/include/linux/bitmap.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/bitmap.h 2003-12-27 19:19:31.000000000 +0000
+@@ -1,6 +1,7 @@
+ #ifndef __LINUX_BITMAP_H
+ #define __LINUX_BITMAP_H
+
++#ifdef __KERNEL__
+ #ifndef __ASSEMBLY__
+
+ #include <linux/config.h>
+@@ -155,5 +156,5 @@
+ #endif
+
+ #endif /* __ASSEMBLY__ */
+-
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_BITMAP_H */
+diff -ur linux-2.6.0/include/linux/buffer_head.h linux-2.6.0/include/linux.gentoo/buffer_head.h
+--- linux-2.6.0/include/linux/buffer_head.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/buffer_head.h 2003-12-27 19:19:31.000000000 +0000
+@@ -34,6 +34,8 @@
+
+ #define MAX_BUF_PER_PAGE (PAGE_CACHE_SIZE / 512)
+
++#ifdef __KERNEL__
++
+ struct page;
+ struct buffer_head;
+ struct address_space;
+@@ -283,6 +285,8 @@
+ __wait_on_buffer(bh);
+ }
+
++#endif /* __KERNEL__ */
++
+ static inline void lock_buffer(struct buffer_head *bh)
+ {
+ while (test_set_buffer_locked(bh))
+diff -ur linux-2.6.0/include/linux/compiler-gcc2.h linux-2.6.0/include/linux.gentoo/compiler-gcc2.h
+--- linux-2.6.0/include/linux/compiler-gcc2.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/compiler-gcc2.h 2003-12-27 19:19:31.000000000 +0000
+@@ -12,7 +12,9 @@
+ # define __builtin_expect(x, expected_value) (x)
+ #endif
+
++#ifndef __attribute_used__
+ #define __attribute_used__ __attribute__((__unused__))
++#endif
+
+ /*
+ * The attribute `pure' is not implemented in GCC versions earlier
+diff -ur linux-2.6.0/include/linux/compiler-gcc3.h linux-2.6.0/include/linux.gentoo/compiler-gcc3.h
+--- linux-2.6.0/include/linux/compiler-gcc3.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/compiler-gcc3.h 2003-12-30 23:34:55.000000000 +0000
+@@ -3,6 +3,8 @@
+ /* These definitions are for GCC v3.x. */
+ #include <linux/compiler-gcc.h>
+
++#ifdef __KERNEL__
++
+ #if __GNUC_MINOR__ >= 1
+ # define inline __inline__ __attribute__((always_inline))
+ # define __inline__ __inline__ __attribute__((always_inline))
+@@ -20,4 +22,6 @@
+ #endif
+
+ #define __attribute_pure__ __attribute__((pure))
+ #define __attribute_const__ __attribute__((__const__))
++
++#endif /* __KERNEL__ */
+diff -ur linux-2.6.1/include/linux/cpumask.h linux-2.6.1/include/linux.gentoo/cpumask.h
+--- linux-2.6.1/include/linux/cpumask.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.1/include/linux.gentoo/cpumask.h 2003-12-27 19:19:31.000000000 +0000
+@@ -1,6 +1,8 @@
+ #ifndef __LINUX_CPUMASK_H
+ #define __LINUX_CPUMASK_H
+
++#ifdef __KERNEL__
++
+ #include <linux/threads.h>
+ #include <asm/cpumask.h>
+ #include <asm/bug.h>
+@@ -68,4 +70,5 @@
+ cpu < NR_CPUS; \
+ cpu = next_online_cpu(cpu,map))
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_CPUMASK_H */
+diff -ur linux-2.6.0/include/linux/ext2_fs_sb.h linux-2.6.0/include/linux.gentoo/ext2_fs_sb.h
+--- linux-2.6.0/include/linux/ext2_fs_sb.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/ext2_fs_sb.h 2003-12-27 19:19:31.000000000 +0000
+@@ -46,9 +46,9 @@
+ int s_inode_size;
+ int s_first_ino;
+ spinlock_t s_next_gen_lock;
+- u32 s_next_generation;
++ __u32 s_next_generation;
+ unsigned long s_dir_count;
+- u8 *s_debts;
++ __u8 *s_debts;
+ struct percpu_counter s_freeblocks_counter;
+ struct percpu_counter s_freeinodes_counter;
+ struct percpu_counter s_dirs_counter;
+diff -ur linux-2.6.0/include/linux/fb.h linux-2.6.0/include/linux.gentoo/fb.h
+--- linux-2.6.0/include/linux/fb.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/fb.h 2003-12-27 19:19:31.000000000 +0000
+@@ -379,8 +379,8 @@
+ u32 access_align; /* alignment per read/write */
+ u32 flags; /* see FB_PIXMAP_* */
+ /* access methods */
+- void (*outbuf)(u8 *dst, u8 *addr, unsigned int size);
+- u8 (*inbuf) (u8 *addr);
++ void (*outbuf)(__u8 *dst, __u8 *addr, unsigned int size);
++ __u8 (*inbuf) (__u8 *addr);
+ };
+
+ /*
+diff -ur linux-2.6.0/include/linux/isdn.h linux-2.6.0/include/linux.gentoo/isdn.h
+--- linux-2.6.0/include/linux/isdn.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/isdn.h 2003-12-27 19:19:31.000000000 +0000
+@@ -14,7 +14,10 @@
+ #define __ISDN_H__
+
+ #include <linux/ioctl.h>
++
++#ifdef __KERNEL__
+ #include <linux/isdn/fsm.h>
++#endif
+
+ #ifdef CONFIG_COBALT_MICRO_SERVER
+ /* Save memory */
+diff -ur linux-2.6.0/include/linux/list.h linux-2.6.0/include/linux.gentoo/list.h
+--- linux-2.6.0/include/linux/list.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/list.h 2003-12-27 19:19:31.000000000 +0000
+@@ -584,7 +584,6 @@
+ pos && ({ n = pos->next; 1; }) && \
+ ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
+ pos = n)
+-#else
+-#warning "don't include kernel headers in userspace"
++
+ #endif /* __KERNEL__ */
+ #endif
+diff -ur linux-2.6.0/include/linux/mod_devicetable.h linux-2.6.0/include/linux.gentoo/mod_devicetable.h
+--- linux-2.6.0/include/linux/mod_devicetable.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/mod_devicetable.h 2003-12-27 19:19:31.000000000 +0000
+@@ -10,7 +10,6 @@
+ #ifdef __KERNEL__
+ #include <linux/types.h>
+ typedef unsigned long kernel_ulong_t;
+-#endif
+
+ #define PCI_ANY_ID (~0)
+
+@@ -147,5 +146,5 @@
+ #define CCW_DEVICE_ID_MATCH_DEVICE_TYPE 0x04
+ #define CCW_DEVICE_ID_MATCH_DEVICE_MODEL 0x08
+
+-
++#endif /* __KERNEL__ */
+ #endif /* LINUX_MOD_DEVICETABLE_H */
+diff -ur linux-2.6.0/include/linux/radix-tree.h linux-2.6.0/include/linux.gentoo/radix-tree.h
+--- linux-2.6.0/include/linux/radix-tree.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/radix-tree.h 2003-12-27 19:19:31.000000000 +0000
+@@ -41,6 +41,8 @@
+ (root)->rnode = NULL; \
+ } while (0)
+
++#ifdef __KERNEL__
++
+ extern int radix_tree_insert(struct radix_tree_root *, unsigned long, void *);
+ extern void *radix_tree_lookup(struct radix_tree_root *, unsigned long);
+ extern void *radix_tree_delete(struct radix_tree_root *, unsigned long);
+@@ -54,4 +56,5 @@
+ preempt_enable();
+ }
+
++#endif /* __KERNEL__ */
+ #endif /* _LINUX_RADIX_TREE_H */
+diff -ur linux-2.6.0/include/linux/smp.h linux-2.6.0/include/linux.gentoo/smp.h
+--- linux-2.6.0/include/linux/smp.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/smp.h 2003-12-27 19:19:31.000000000 +0000
+@@ -6,6 +6,8 @@
+ * Alan Cox. <alan@redhat.com>
+ */
+
++
++#ifdef __KERNEL__
+ #include <linux/config.h>
+
+ #ifdef CONFIG_SMP
+@@ -112,4 +114,5 @@
+ #define put_cpu() preempt_enable()
+ #define put_cpu_no_resched() preempt_enable_no_resched()
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_SMP_H */
+diff -ur linux-2.6.0/include/linux/spinlock.h linux-2.6.0/include/linux.gentoo/spinlock.h
+--- linux-2.6.0/include/linux/spinlock.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/spinlock.h 2003-12-27 19:19:31.000000000 +0000
+@@ -183,6 +183,7 @@
+ #define _raw_write_trylock(lock) ({ (void)(lock); (1); })
+
+ #endif /* !SMP */
++#ifdef __KERNEL__
+
+ /*
+ * Define the various spin_lock and rw_lock methods. Note we define these
+@@ -465,4 +466,5 @@
+ #endif
+ }
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_SPINLOCK_H */
+diff -ur linux-2.6.0/include/linux/time.h linux-2.6.0/include/linux.gentoo/time.h
+--- linux-2.6.0/include/linux/time.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/time.h 2003-12-27 19:19:31.000000000 +0000
+@@ -4,24 +4,31 @@
+ #include <asm/param.h>
+ #include <linux/types.h>
+
++#ifndef _SYS_TIME_H
+ #ifndef _STRUCT_TIMESPEC
++#ifndef __timespec_defined
+ #define _STRUCT_TIMESPEC
+ struct timespec {
+ time_t tv_sec; /* seconds */
+ long tv_nsec; /* nanoseconds */
+ };
++#endif /* __timespec_defined */
+ #endif /* _STRUCT_TIMESPEC */
+
++#ifndef _STRUCT_TIMEVAL
+ struct timeval {
+ time_t tv_sec; /* seconds */
+ suseconds_t tv_usec; /* microseconds */
+ };
++#endif /* _STRUCT_TIMEVAL */
+
+ struct timezone {
+ int tz_minuteswest; /* minutes west of Greenwich */
+ int tz_dsttime; /* type of dst correction */
+ };
+
++#endif /* _SYS_TIME_H */
++
+ #ifdef __KERNEL__
+
+ #include <linux/spinlock.h>
+@@ -281,6 +281,8 @@
+ * machines were long is 32-bit! (However, as time_t is signed, we
+ * will already get problems at other places on 2038-01-19 03:14:08)
+ */
++
++#ifndef _TIME_H
+ static inline unsigned long
+ mktime (unsigned int year, unsigned int mon,
+ unsigned int day, unsigned int hour,
+@@ -298,6 +300,7 @@
+ )*60 + min /* now have minutes */
+ )*60 + sec; /* finally seconds */
+ }
++#endif
+
+ extern struct timespec xtime;
+ extern struct timespec wall_to_monotonic;
+@@ -351,15 +358,19 @@
+ #define ITIMER_VIRTUAL 1
+ #define ITIMER_PROF 2
+
++#ifndef _TIME_H
+ struct itimerspec {
+ struct timespec it_interval; /* timer period */
+ struct timespec it_value; /* timer expiration */
+ };
++#endif /* _TIME_H */
+
++#ifndef _SYS_TIME_H
+ struct itimerval {
+ struct timeval it_interval; /* timer interval */
+ struct timeval it_value; /* current value */
+ };
++#endif /* _SYS_TIME_H */
+
+
+ /*
+diff -ur linux-2.6.0/include/linux/workqueue.h linux-2.6.0/include/linux.gentoo/workqueue.h
+--- linux-2.6.0/include/linux/workqueue.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/workqueue.h 2003-12-27 19:19:31.000000000 +0000
+@@ -5,6 +5,8 @@
+ #ifndef _LINUX_WORKQUEUE_H
+ #define _LINUX_WORKQUEUE_H
+
++#ifdef __KERNEL__
++
+ #include <linux/timer.h>
+ #include <linux/linkage.h>
+
+@@ -73,5 +75,7 @@
+ return del_timer_sync(&work->timer);
+ }
+
++#endif /* __KERNEL__ */
++
+ #endif
+
+diff -ur linux-2.6.0/include/asm-i386/mpspec.h linux-2.6.0/include/asm-i386/mpspec.h
+--- linux-2.6.0/include/asm-i386/mpspec.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/mpspec.h 2004-01-19 20:01:11.000000000 +0000
+@@ -3,7 +3,7 @@
+
+ #include <linux/cpumask.h>
+ #include <asm/mpspec_def.h>
+-#include <mach_mpspec.h>
++#include <asm/mach-generic/mach_mpspec.h>
+
+ extern int mp_bus_id_to_type [MAX_MP_BUSSES];
+ extern int mp_bus_id_to_node [MAX_MP_BUSSES];
+diff -ur linux-2.6.0/include/asm-i386/processor.h linux-2.6.0/include/asm-i386/processor.h
+--- linux-2.6.0/include/asm-i386/processor.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/processor.h 2004-01-19 20:01:11.000000000 +0000
+@@ -8,7 +8,9 @@
+ #define __ASM_I386_PROCESSOR_H
+
+ #include <asm/vm86.h>
++#ifdef __KERNEL__
+ #include <asm/math_emu.h>
++#endif
+ #include <asm/segment.h>
+ #include <asm/page.h>
+ #include <asm/types.h>
+diff -ur linux-2.6.0/include/asm-i386/semaphore.h linux-2.6.0/include/asm-i386/semaphore.h
+--- linux-2.6.0/include/asm-i386/semaphore.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/semaphore.h 2004-01-19 20:01:11.000000000 +0000
+@@ -3,8 +3,6 @@
+
+ #include <linux/linkage.h>
+
+-#ifdef __KERNEL__
+-
+ /*
+ * SMP- and interrupt-safe semaphores..
+ *
+@@ -214,4 +212,3 @@
+ }
+
+ #endif
+-#endif
+diff -ur linux-2.6.0/include/asm-i386/signal.h linux-2.6.0/include/asm-i386/signal.h
+--- linux-2.6.0/include/asm-i386/signal.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/signal.h 2004-01-19 20:01:11.000000000 +0000
+@@ -26,7 +26,9 @@
+ /* Here we must cater to libcs that poke about in kernel headers. */
+
+ #define NSIG 32
++#ifndef __sigset_t_defined
+ typedef unsigned long sigset_t;
++#endif
+
+ #endif /* __KERNEL__ */
+
+@@ -155,6 +157,7 @@
+ #else
+ /* Here we must cater to libcs that poke about in kernel headers. */
+
++#ifndef _SIGNAL_H
+ struct sigaction {
+ union {
+ __sighandler_t _sa_handler;
+@@ -164,17 +167,20 @@
+ unsigned long sa_flags;
+ void (*sa_restorer)(void);
+ };
++#endif
+
+ #define sa_handler _u._sa_handler
+ #define sa_sigaction _u._sa_sigaction
+
+ #endif /* __KERNEL__ */
+
++#ifndef _SIGNAL_H
+ typedef struct sigaltstack {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
++#endif
+
+ #ifdef __KERNEL__
+ #include <asm/sigcontext.h>
+diff -ur linux-2.6.0/include/asm-i386/smp.h linux-2.6.0/include/asm-i386/smp.h
+--- linux-2.6.0/include/asm-i386/smp.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/smp.h 2004-01-19 20:01:11.000000000 +0000
+@@ -70,7 +70,7 @@
+ #ifdef APIC_DEFINITION
+ extern int hard_smp_processor_id(void);
+ #else
+-#include <mach_apicdef.h>
++#include <asm/mach-generic/mach_apicdef.h>
+ static inline int hard_smp_processor_id(void)
+ {
+ /* we don't want to mark this access volatile - bad code generation */
+diff -ur linux-2.6.0/include/linux/types.h linux-2.6.0/include/linux.gentoo/types.h
+--- linux-2.6.0/include/linux/types.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/types.h 2004-01-19 20:01:11.000000000 +0000
+@@ -19,12 +19,24 @@
+
+ typedef __u32 __kernel_dev_t;
+
++#ifndef _SYS_SELECT_H
+ typedef __kernel_fd_set fd_set;
++#endif
++#ifndef __dev_t_defined
+ typedef __kernel_dev_t dev_t;
++#endif
++#ifndef __ino_t_defined
+ typedef __kernel_ino_t ino_t;
++#endif
++#ifndef __mode_t_defined
+ typedef __kernel_mode_t mode_t;
++#endif
++#ifndef __nlink_t_defined
+ typedef __kernel_nlink_t nlink_t;
++#endif
++#ifndef __off_t_defined
+ typedef __kernel_off_t off_t;
++#endif
+ typedef __kernel_pid_t pid_t;
+ typedef __kernel_daddr_t daddr_t;
+ typedef __kernel_key_t key_t;
+@@ -34,7 +46,9 @@
+
+ #ifdef __KERNEL__
+ typedef __kernel_uid32_t uid_t;
++#define __uid_t_defined
+ typedef __kernel_gid32_t gid_t;
++#define __gid_t_defined
+ typedef __kernel_uid16_t uid16_t;
+ typedef __kernel_gid16_t gid16_t;
+
+@@ -49,7 +63,9 @@
+ */
+ #else
+ typedef __kernel_uid_t uid_t;
++#define __uid_t_defined
+ typedef __kernel_gid_t gid_t;
++#define __gid_t_defined
+ #endif /* __KERNEL__ */
+
+ #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+diff -ur linux-2.6.0/include/asm-generic/siginfo.h linux-2.6.0/include/asm-generic/siginfo.h
+--- linux-2.6.0/include/asm-generic/siginfo.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-generic/siginfo.h 2004-01-19 20:01:11.000000000 +0000
+@@ -4,10 +4,12 @@
+ #include <linux/compiler.h>
+ #include <linux/types.h>
+
++#ifndef _SIGNAL_H
+ typedef union sigval {
+ int sival_int;
+ void *sival_ptr;
+ } sigval_t;
++#endif
+
+ /*
+ * This is the size (including padding) of the part of the
+@@ -31,7 +33,7 @@
+ #endif
+
+ #ifndef HAVE_ARCH_SIGINFO_T
+-
++#ifndef _SIGNAL_H
+ typedef struct siginfo {
+ int si_signo;
+ int si_errno;
+@@ -86,7 +88,7 @@
+ } _sigpoll;
+ } _sifields;
+ } siginfo_t;
+-
++#endif
+ #endif
+
+ /*
+@@ -238,7 +240,7 @@
+ #endif
+
+ #ifndef HAVE_ARCH_SIGEVENT_T
+-
++#ifndef _SIGNAL_H
+ typedef struct sigevent {
+ sigval_t sigev_value;
+ int sigev_signo;
+@@ -253,7 +255,7 @@
+ } _sigev_thread;
+ } _sigev_un;
+ } sigevent_t;
+-
++#endif
+ #endif
+
+ #define sigev_notify_function _sigev_un._sigev_thread._function
+diff -ur linux-2.6.0/include/linux/jiffies.h linux-2.6.0/include/linux.gentoo/jiffies.h
+--- linux-2.6.0/include/linux/jiffies.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/jiffies.h 2004-01-19 20:01:11.000000000 +0000
+@@ -13,15 +13,15 @@
+ * without holding read_lock_irq(&xtime_lock).
+ * get_jiffies_64() will do this for you as appropriate.
+ */
+-extern u64 jiffies_64;
++extern __u64 jiffies_64;
+ extern unsigned long volatile jiffies;
+
+ #if (BITS_PER_LONG < 64)
+-u64 get_jiffies_64(void);
++__u64 get_jiffies_64(void);
+ #else
+-static inline u64 get_jiffies_64(void)
++static inline __u64 get_jiffies_64(void)
+ {
+- return (u64)jiffies;
++ return (__u64)jiffies;
+ }
+ #endif
+
+diff -ur linux-2.6.0/include/linux/i2c.h linux-2.6.0/include/linux.gentoo/i2c.h
+--- linux-2.6.0/include/linux/i2c.h 2004-02-07 13:29:15.099504640 -0500
++++ linux-2.6.0/include/linux.gentoo/i2c.h 2004-02-07 13:35:53.956869104 -0500
+@@ -28,10 +28,18 @@
+ #ifndef _LINUX_I2C_H
+ #define _LINUX_I2C_H
+
+-#include <linux/module.h>
+-#include <linux/types.h>
++#ifdef __KERNEL__
++# include <linux/module.h>
++# include <linux/types.h>
++#else
++# define __KERNEL__
++# include <linux/types.h>
++# undef __KERNEL__
++#endif
+ #include <linux/i2c-id.h>
++#ifdef __KERNEL__
+ #include <linux/device.h> /* for struct device */
+ #include <asm/semaphore.h>
++#endif
+
+ /* --- General options ------------------------------------------------ */
+@@ -109,6 +117,7 @@
+ * events.
+ */
+
++#ifdef __KERNEL__
+ struct i2c_driver {
+ struct module *owner;
+ char name[32];
+@@ -268,6 +277,7 @@
+ {
+ dev_set_drvdata (&dev->dev, data);
+ }
++#endif
+
+ /*flags for the driver struct: */
+ #define I2C_DF_NOTIFY 0x01 /* notify on bus (de/a)ttaches */
+@@ -599,11 +609,13 @@
+ #define i2c_is_isa_adapter(adapptr) \
+ ((adapptr)->algo->id == I2C_ALGO_ISA)
+
++#ifdef __KERNEL__
+ /* Tiny delay function used by the i2c bus drivers */
+ static inline void i2c_delay(signed long timeout)
+ {
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout(timeout);
+ }
++#endif
+
+ #endif /* _LINUX_I2C_H */
+--- linux-2.6.3/include/linux/usbdevice_fs.h 2004-02-22 16:52:07.000000000 +0000
++++ linux-2.6.3/include/linux/usbdevice_fs.h 2004-02-22 22:10:45.000000000 +0000
+@@ -31,6 +31,7 @@
+ #ifndef _LINUX_USBDEVICE_FS_H
+ #define _LINUX_USBDEVICE_FS_H
+
++#include <linux/compiler.h>
+ #include <linux/types.h>
+
+ /* --------------------------------------------------------------------- */
diff --git a/sys-kernel/linux26-headers/files/linux26-headers-2.6.3-strict-ansi-fix.patch b/sys-kernel/linux26-headers/files/linux26-headers-2.6.3-strict-ansi-fix.patch
new file mode 100644
index 000000000000..bfcd7269c1d6
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/linux26-headers-2.6.3-strict-ansi-fix.patch
@@ -0,0 +1,145 @@
+--- linux-2.6.0/include/asm-i386/byteorder.h 2003-07-10 21:11:31.000000000 +0100
++++ linux-2.6.0/include/asm-i386/byteorder.h 2003-12-26 22:58:17.000000000 +0000
+@@ -1,6 +1,8 @@
+ #ifndef _I386_BYTEORDER_H
+ #define _I386_BYTEORDER_H
+
++#define __attribute_const__ __attribute__((__const__))
++
+ #include <asm/types.h>
+ #include <linux/compiler.h>
+
+@@ -43,13 +43,13 @@
+ } v;
+ v.u = val;
+ #ifdef CONFIG_X86_BSWAP
+- asm("bswapl %0 ; bswapl %1 ; xchgl %0,%1"
++ __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.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));
++ __asm__("xchgl %0,%1" : "=r" (v.s.a), "=r" (v.s.b) : "0" (v.s.a), "1" (v.s.b));
+ #endif
+ return v.u;
+ }
+--- linux-2.6.0/include/asm-i386/types.h 2003-07-10 21:11:00.000000000 +0100
++++ linux-2.6.0/include/asm-i386/types.h 2003-12-26 23:09:38.000000000 +0000
+@@ -19,10 +19,14 @@
+ typedef __signed__ int __s32;
+ typedef unsigned int __u32;
+
+-#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+-typedef __signed__ long long __s64;
+-typedef unsigned long long __u64;
+-#endif
++#ifndef __GNUC__
++# ifndef __extension__
++# define __extension__
++# endif /* __extension__ */
++#endif /* __GNUC__ */
++
++__extension__ typedef __signed__ long long __s64;
++__extension__ typedef unsigned long long __u64;
+
+ #endif /* __ASSEMBLY__ */
+
+--- linux-2.6.3/include/linux/byteorder/swab.h 2004-02-20 00:20:05.000000000 +0000
++++ linux-2.6.3/include/linux/byteorder/swab.h 2004-02-22 16:47:24.000000000 +0000
+@@ -15,6 +15,7 @@
+ *
+ */
+
++#define __attribute_const__ __attribute__((__const__))
+ #include <linux/compiler.h>
+
+ /* casts are necessary for constants, because we never know how for sure
+--- linux-2.6.3/include/asm-x86_64/byteorder.h 2004-02-17 19:58:49.000000000 -0800
++++ linux-2.6.3/include/asm-x86_64/byteorder.h 2004-02-28 18:49:20.000000000 -0800
+@@ -1,6 +1,8 @@
+ #ifndef _X86_64_BYTEORDER_H
+ #define _X86_64_BYTEORDER_H
+
++#define __attribute_const__ __attribute__((__const__))
++
+ #include <asm/types.h>
+ #include <linux/compiler.h>
+
+--- linux-2.6.3/include/asm-x86_64/semaphore.h 2004-02-17 19:57:11.000000000 -0800
++++ linux-2.6.3/include/asm-x86_64/semaphore.h 2004-02-28 18:49:20.000000000 -0800
+@@ -3,8 +3,6 @@
+
+ #include <linux/linkage.h>
+
+-#ifdef __KERNEL__
+-
+ /*
+ * SMP- and interrupt-safe semaphores..
+ *
+@@ -215,5 +213,4 @@
+ :"D" (sem)
+ :"memory");
+ }
+-#endif /* __KERNEL__ */
+ #endif
+--- linux-2.6.3/include/asm-x86_64/signal.h 2004-02-17 19:57:12.000000000 -0800
++++ linux-2.6.3/include/asm-x86_64/signal.h 2004-02-28 18:49:20.000000000 -0800
+@@ -32,7 +32,9 @@
+ /* Here we must cater to libcs that poke about in kernel headers. */
+
+ #define NSIG 32
++#ifndef __sigset_t_defined
+ typedef unsigned long sigset_t;
++#endif
+
+ #endif /* __KERNEL__ */
+ #endif
+@@ -142,22 +144,26 @@
+ #define SIG_IGN ((__sighandler_t)1) /* ignore signal */
+ #define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
+
++#ifndef _SIGNAL_H /* added by KMO */
+ struct sigaction {
+ __sighandler_t sa_handler;
+ unsigned long sa_flags;
+ void (*sa_restorer)(void);
+ sigset_t sa_mask; /* mask last for extensibility */
+ };
++#endif /* added by KMO */
+
+ struct k_sigaction {
+ struct sigaction sa;
+ };
+
++#ifndef _SIGNAL_H /* added by KMO */
+ typedef struct sigaltstack {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
++#endif /* added by KMO */
+
+ #ifdef __KERNEL__
+ #include <asm/sigcontext.h>
+--- linux-2.6.3/include/asm-x86_64/types.h 2004-02-17 19:59:16.000000000 -0800
++++ linux-2.6.3/include/asm-x86_64/types.h 2004-02-28 18:49:21.000000000 -0800
+@@ -19,8 +19,14 @@
+ typedef __signed__ int __s32;
+ typedef unsigned int __u32;
+
+-typedef __signed__ long long __s64;
+-typedef unsigned long long __u64;
++#ifndef __GNUC__
++# ifndef __extension__
++# define __extension__
++# endif /* __extension__ */
++#endif /* __GNUC__ */
++
++__extension__ typedef __signed__ long long __s64;
++__extension__ typedef unsigned long long __u64;
+
+ #endif /* __ASSEMBLY__ */
+
diff --git a/sys-kernel/linux26-headers/files/linux26-headers-2.6.4-appCompat.patch b/sys-kernel/linux26-headers/files/linux26-headers-2.6.4-appCompat.patch
new file mode 100644
index 000000000000..907bbd6e6ac5
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/linux26-headers-2.6.4-appCompat.patch
@@ -0,0 +1,592 @@
+Authors: Tim Yamin <plasmaroo@gentoo.org>
+ Mike Frysinger <vapier@gentoo.org>
+ Martin Schlemmer <azarah@gentoo.org>
+
+This patch neatens up the 2.6.0 headers for user-space usage and allows backward
+compatibility on a variety of applications which are designed for 2.4 headers.
+
+diff -ur linux-2.6.0/include/linux/bitmap.h linux-2.6.0/include/linux.gentoo/bitmap.h
+--- linux-2.6.0/include/linux/bitmap.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/bitmap.h 2003-12-27 19:19:31.000000000 +0000
+@@ -1,6 +1,7 @@
+ #ifndef __LINUX_BITMAP_H
+ #define __LINUX_BITMAP_H
+
++#ifdef __KERNEL__
+ #ifndef __ASSEMBLY__
+
+ #include <linux/config.h>
+@@ -155,5 +156,5 @@
+ #endif
+
+ #endif /* __ASSEMBLY__ */
+-
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_BITMAP_H */
+diff -ur linux-2.6.0/include/linux/buffer_head.h linux-2.6.0/include/linux.gentoo/buffer_head.h
+--- linux-2.6.0/include/linux/buffer_head.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/buffer_head.h 2003-12-27 19:19:31.000000000 +0000
+@@ -34,6 +34,8 @@
+
+ #define MAX_BUF_PER_PAGE (PAGE_CACHE_SIZE / 512)
+
++#ifdef __KERNEL__
++
+ struct page;
+ struct buffer_head;
+ struct address_space;
+@@ -283,6 +285,8 @@
+ __wait_on_buffer(bh);
+ }
+
++#endif /* __KERNEL__ */
++
+ static inline void lock_buffer(struct buffer_head *bh)
+ {
+ while (test_set_buffer_locked(bh))
+diff -ur linux-2.6.0/include/linux/compiler-gcc2.h linux-2.6.0/include/linux.gentoo/compiler-gcc2.h
+--- linux-2.6.0/include/linux/compiler-gcc2.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/compiler-gcc2.h 2003-12-27 19:19:31.000000000 +0000
+@@ -12,7 +12,9 @@
+ # define __builtin_expect(x, expected_value) (x)
+ #endif
+
++#ifndef __attribute_used__
+ #define __attribute_used__ __attribute__((__unused__))
++#endif
+
+ /*
+ * The attribute `pure' is not implemented in GCC versions earlier
+diff -ur linux-2.6.1/include/linux/cpumask.h linux-2.6.1/include/linux.gentoo/cpumask.h
+--- linux-2.6.1/include/linux/cpumask.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.1/include/linux.gentoo/cpumask.h 2003-12-27 19:19:31.000000000 +0000
+@@ -1,6 +1,8 @@
+ #ifndef __LINUX_CPUMASK_H
+ #define __LINUX_CPUMASK_H
+
++#ifdef __KERNEL__
++
+ #include <linux/threads.h>
+ #include <asm/cpumask.h>
+ #include <asm/bug.h>
+@@ -68,4 +70,5 @@
+ cpu < NR_CPUS; \
+ cpu = next_online_cpu(cpu,map))
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_CPUMASK_H */
+diff -ur linux-2.6.0/include/linux/ext2_fs_sb.h linux-2.6.0/include/linux.gentoo/ext2_fs_sb.h
+--- linux-2.6.0/include/linux/ext2_fs_sb.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/ext2_fs_sb.h 2003-12-27 19:19:31.000000000 +0000
+@@ -46,9 +46,9 @@
+ int s_inode_size;
+ int s_first_ino;
+ spinlock_t s_next_gen_lock;
+- u32 s_next_generation;
++ __u32 s_next_generation;
+ unsigned long s_dir_count;
+- u8 *s_debts;
++ __u8 *s_debts;
+ struct percpu_counter s_freeblocks_counter;
+ struct percpu_counter s_freeinodes_counter;
+ struct percpu_counter s_dirs_counter;
+diff -ur linux-2.6.0/include/linux/list.h linux-2.6.0/include/linux.gentoo/list.h
+--- linux-2.6.0/include/linux/list.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/list.h 2003-12-27 19:19:31.000000000 +0000
+@@ -584,7 +584,6 @@
+ pos && ({ n = pos->next; 1; }) && \
+ ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
+ pos = n)
+-#else
+-#warning "don't include kernel headers in userspace"
++
+ #endif /* __KERNEL__ */
+ #endif
+diff -ur linux-2.6.0/include/linux/mod_devicetable.h linux-2.6.0/include/linux.gentoo/mod_devicetable.h
+--- linux-2.6.0/include/linux/mod_devicetable.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/mod_devicetable.h 2003-12-27 19:19:31.000000000 +0000
+@@ -10,7 +10,6 @@
+ #ifdef __KERNEL__
+ #include <linux/types.h>
+ typedef unsigned long kernel_ulong_t;
+-#endif
+
+ #define PCI_ANY_ID (~0)
+
+@@ -147,5 +146,5 @@
+ #define CCW_DEVICE_ID_MATCH_DEVICE_TYPE 0x04
+ #define CCW_DEVICE_ID_MATCH_DEVICE_MODEL 0x08
+
+-
++#endif /* __KERNEL__ */
+ #endif /* LINUX_MOD_DEVICETABLE_H */
+diff -ur linux-2.6.0/include/linux/radix-tree.h linux-2.6.0/include/linux.gentoo/radix-tree.h
+--- linux-2.6.0/include/linux/radix-tree.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/radix-tree.h 2003-12-27 19:19:31.000000000 +0000
+@@ -41,6 +41,8 @@
+ (root)->rnode = NULL; \
+ } while (0)
+
++#ifdef __KERNEL__
++
+ extern int radix_tree_insert(struct radix_tree_root *, unsigned long, void *);
+ extern void *radix_tree_lookup(struct radix_tree_root *, unsigned long);
+ extern void *radix_tree_delete(struct radix_tree_root *, unsigned long);
+@@ -54,4 +56,5 @@
+ preempt_enable();
+ }
+
++#endif /* __KERNEL__ */
+ #endif /* _LINUX_RADIX_TREE_H */
+diff -ur linux-2.6.0/include/linux/smp.h linux-2.6.0/include/linux.gentoo/smp.h
+--- linux-2.6.0/include/linux/smp.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/smp.h 2003-12-27 19:19:31.000000000 +0000
+@@ -6,6 +6,8 @@
+ * Alan Cox. <alan@redhat.com>
+ */
+
++
++#ifdef __KERNEL__
+ #include <linux/config.h>
+
+ #ifdef CONFIG_SMP
+@@ -112,4 +114,5 @@
+ #define put_cpu() preempt_enable()
+ #define put_cpu_no_resched() preempt_enable_no_resched()
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_SMP_H */
+diff -ur linux-2.6.0/include/linux/spinlock.h linux-2.6.0/include/linux.gentoo/spinlock.h
+--- linux-2.6.0/include/linux/spinlock.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/spinlock.h 2003-12-27 19:19:31.000000000 +0000
+@@ -183,6 +183,7 @@
+ #define _raw_write_trylock(lock) ({ (void)(lock); (1); })
+
+ #endif /* !SMP */
++#ifdef __KERNEL__
+
+ /*
+ * Define the various spin_lock and rw_lock methods. Note we define these
+@@ -465,4 +466,5 @@
+ #endif
+ }
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_SPINLOCK_H */
+diff -ur linux-2.6.0/include/linux/time.h linux-2.6.0/include/linux.gentoo/time.h
+--- linux-2.6.0/include/linux/time.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/time.h 2003-12-27 19:19:31.000000000 +0000
+@@ -4,24 +4,31 @@
+ #include <asm/param.h>
+ #include <linux/types.h>
+
++#ifndef _SYS_TIME_H
+ #ifndef _STRUCT_TIMESPEC
++#ifndef __timespec_defined
+ #define _STRUCT_TIMESPEC
+ struct timespec {
+ time_t tv_sec; /* seconds */
+ long tv_nsec; /* nanoseconds */
+ };
++#endif /* __timespec_defined */
+ #endif /* _STRUCT_TIMESPEC */
+
++#ifndef _STRUCT_TIMEVAL
+ struct timeval {
+ time_t tv_sec; /* seconds */
+ suseconds_t tv_usec; /* microseconds */
+ };
++#endif /* _STRUCT_TIMEVAL */
+
+ struct timezone {
+ int tz_minuteswest; /* minutes west of Greenwich */
+ int tz_dsttime; /* type of dst correction */
+ };
+
++#endif /* _SYS_TIME_H */
++
+ #ifdef __KERNEL__
+
+ #include <linux/spinlock.h>
+@@ -281,6 +281,8 @@
+ * machines were long is 32-bit! (However, as time_t is signed, we
+ * will already get problems at other places on 2038-01-19 03:14:08)
+ */
++
++#ifndef _TIME_H
+ static inline unsigned long
+ mktime (unsigned int year, unsigned int mon,
+ unsigned int day, unsigned int hour,
+@@ -298,6 +300,7 @@
+ )*60 + min /* now have minutes */
+ )*60 + sec; /* finally seconds */
+ }
++#endif
+
+ extern struct timespec xtime;
+ extern struct timespec wall_to_monotonic;
+@@ -351,15 +358,19 @@
+ #define ITIMER_VIRTUAL 1
+ #define ITIMER_PROF 2
+
++#ifndef _TIME_H
+ struct itimerspec {
+ struct timespec it_interval; /* timer period */
+ struct timespec it_value; /* timer expiration */
+ };
++#endif /* _TIME_H */
+
++#ifndef _SYS_TIME_H
+ struct itimerval {
+ struct timeval it_interval; /* timer interval */
+ struct timeval it_value; /* current value */
+ };
++#endif /* _SYS_TIME_H */
+
+
+ /*
+diff -ur linux-2.6.0/include/linux/workqueue.h linux-2.6.0/include/linux.gentoo/workqueue.h
+--- linux-2.6.0/include/linux/workqueue.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/workqueue.h 2003-12-27 19:19:31.000000000 +0000
+@@ -5,6 +5,8 @@
+ #ifndef _LINUX_WORKQUEUE_H
+ #define _LINUX_WORKQUEUE_H
+
++#ifdef __KERNEL__
++
+ #include <linux/timer.h>
+ #include <linux/linkage.h>
+
+@@ -73,5 +75,7 @@
+ return del_timer_sync(&work->timer);
+ }
+
++#endif /* __KERNEL__ */
++
+ #endif
+
+diff -ur linux-2.6.0/include/asm-i386/mpspec.h linux-2.6.0/include/asm-i386/mpspec.h
+--- linux-2.6.0/include/asm-i386/mpspec.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/mpspec.h 2004-01-19 20:01:11.000000000 +0000
+@@ -3,7 +3,7 @@
+
+ #include <linux/cpumask.h>
+ #include <asm/mpspec_def.h>
+-#include <mach_mpspec.h>
++#include <asm/mach-generic/mach_mpspec.h>
+
+ extern int mp_bus_id_to_type [MAX_MP_BUSSES];
+ extern int mp_bus_id_to_node [MAX_MP_BUSSES];
+diff -ur linux-2.6.0/include/asm-i386/processor.h linux-2.6.0/include/asm-i386/processor.h
+--- linux-2.6.0/include/asm-i386/processor.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/processor.h 2004-01-19 20:01:11.000000000 +0000
+@@ -8,7 +8,9 @@
+ #define __ASM_I386_PROCESSOR_H
+
+ #include <asm/vm86.h>
++#ifdef __KERNEL__
+ #include <asm/math_emu.h>
++#endif
+ #include <asm/segment.h>
+ #include <asm/page.h>
+ #include <asm/types.h>
+diff -ur linux-2.6.0/include/asm-i386/semaphore.h linux-2.6.0/include/asm-i386/semaphore.h
+--- linux-2.6.0/include/asm-i386/semaphore.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/semaphore.h 2004-01-19 20:01:11.000000000 +0000
+@@ -3,8 +3,6 @@
+
+ #include <linux/linkage.h>
+
+-#ifdef __KERNEL__
+-
+ /*
+ * SMP- and interrupt-safe semaphores..
+ *
+@@ -214,4 +212,3 @@
+ }
+
+ #endif
+-#endif
+diff -ur linux-2.6.0/include/asm-i386/signal.h linux-2.6.0/include/asm-i386/signal.h
+--- linux-2.6.0/include/asm-i386/signal.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/signal.h 2004-01-19 20:01:11.000000000 +0000
+@@ -26,7 +26,9 @@
+ /* Here we must cater to libcs that poke about in kernel headers. */
+
+ #define NSIG 32
++#ifndef __sigset_t_defined
+ typedef unsigned long sigset_t;
++#endif
+
+ #endif /* __KERNEL__ */
+
+@@ -155,6 +157,7 @@
+ #else
+ /* Here we must cater to libcs that poke about in kernel headers. */
+
++#ifndef _SIGNAL_H
+ struct sigaction {
+ union {
+ __sighandler_t _sa_handler;
+@@ -164,17 +167,20 @@
+ unsigned long sa_flags;
+ void (*sa_restorer)(void);
+ };
++#endif
+
+ #define sa_handler _u._sa_handler
+ #define sa_sigaction _u._sa_sigaction
+
+ #endif /* __KERNEL__ */
+
++#ifndef _SIGNAL_H
+ typedef struct sigaltstack {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
++#endif
+
+ #ifdef __KERNEL__
+ #include <asm/sigcontext.h>
+diff -ur linux-2.6.0/include/asm-i386/smp.h linux-2.6.0/include/asm-i386/smp.h
+--- linux-2.6.0/include/asm-i386/smp.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/smp.h 2004-01-19 20:01:11.000000000 +0000
+@@ -70,7 +70,7 @@
+ #ifdef APIC_DEFINITION
+ extern int hard_smp_processor_id(void);
+ #else
+-#include <mach_apicdef.h>
++#include <asm/mach-generic/mach_apicdef.h>
+ static inline int hard_smp_processor_id(void)
+ {
+ /* we don't want to mark this access volatile - bad code generation */
+diff -ur linux-2.6.0/include/linux/types.h linux-2.6.0/include/linux.gentoo/types.h
+--- linux-2.6.0/include/linux/types.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/types.h 2004-01-19 20:01:11.000000000 +0000
+@@ -19,12 +19,24 @@
+
+ typedef __u32 __kernel_dev_t;
+
++#ifndef _SYS_SELECT_H
+ typedef __kernel_fd_set fd_set;
++#endif
++#ifndef __dev_t_defined
+ typedef __kernel_dev_t dev_t;
++#endif
++#ifndef __ino_t_defined
+ typedef __kernel_ino_t ino_t;
++#endif
++#ifndef __mode_t_defined
+ typedef __kernel_mode_t mode_t;
++#endif
++#ifndef __nlink_t_defined
+ typedef __kernel_nlink_t nlink_t;
++#endif
++#ifndef __off_t_defined
+ typedef __kernel_off_t off_t;
++#endif
+ typedef __kernel_pid_t pid_t;
+ typedef __kernel_daddr_t daddr_t;
+ typedef __kernel_key_t key_t;
+@@ -34,7 +46,9 @@
+
+ #ifdef __KERNEL__
+ typedef __kernel_uid32_t uid_t;
++#define __uid_t_defined
+ typedef __kernel_gid32_t gid_t;
++#define __gid_t_defined
+ typedef __kernel_uid16_t uid16_t;
+ typedef __kernel_gid16_t gid16_t;
+
+@@ -49,7 +63,9 @@
+ */
+ #else
+ typedef __kernel_uid_t uid_t;
++#define __uid_t_defined
+ typedef __kernel_gid_t gid_t;
++#define __gid_t_defined
+ #endif /* __KERNEL__ */
+
+ #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+diff -ur linux-2.6.0/include/asm-generic/siginfo.h linux-2.6.0/include/asm-generic/siginfo.h
+--- linux-2.6.0/include/asm-generic/siginfo.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-generic/siginfo.h 2004-01-19 20:01:11.000000000 +0000
+@@ -4,10 +4,12 @@
+ #include <linux/compiler.h>
+ #include <linux/types.h>
+
++#ifndef _SIGNAL_H
+ typedef union sigval {
+ int sival_int;
+ void *sival_ptr;
+ } sigval_t;
++#endif
+
+ /*
+ * This is the size (including padding) of the part of the
+@@ -31,7 +33,7 @@
+ #endif
+
+ #ifndef HAVE_ARCH_SIGINFO_T
+-
++#ifndef _SIGNAL_H
+ typedef struct siginfo {
+ int si_signo;
+ int si_errno;
+@@ -86,7 +88,7 @@
+ } _sigpoll;
+ } _sifields;
+ } siginfo_t;
+-
++#endif
+ #endif
+
+ /*
+@@ -238,7 +240,7 @@
+ #endif
+
+ #ifndef HAVE_ARCH_SIGEVENT_T
+-
++#ifndef _SIGNAL_H
+ typedef struct sigevent {
+ sigval_t sigev_value;
+ int sigev_signo;
+@@ -253,7 +255,7 @@
+ } _sigev_thread;
+ } _sigev_un;
+ } sigevent_t;
+-
++#endif
+ #endif
+
+ #define sigev_notify_function _sigev_un._sigev_thread._function
+diff -ur linux-2.6.0/include/linux/jiffies.h linux-2.6.0/include/linux.gentoo/jiffies.h
+--- linux-2.6.0/include/linux/jiffies.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/jiffies.h 2004-01-19 20:01:11.000000000 +0000
+@@ -13,15 +13,15 @@
+ * without holding read_lock_irq(&xtime_lock).
+ * get_jiffies_64() will do this for you as appropriate.
+ */
+-extern u64 jiffies_64;
++extern __u64 jiffies_64;
+ extern unsigned long volatile jiffies;
+
+ #if (BITS_PER_LONG < 64)
+-u64 get_jiffies_64(void);
++__u64 get_jiffies_64(void);
+ #else
+-static inline u64 get_jiffies_64(void)
++static inline __u64 get_jiffies_64(void)
+ {
+- return (u64)jiffies;
++ return (__u64)jiffies;
+ }
+ #endif
+
+diff -ur linux-2.6.0/include/linux/i2c.h linux-2.6.0/include/linux.gentoo/i2c.h
+--- linux-2.6.0/include/linux/i2c.h 2004-02-07 13:29:15.099504640 -0500
++++ linux-2.6.0/include/linux.gentoo/i2c.h 2004-02-07 13:35:53.956869104 -0500
+@@ -28,10 +28,18 @@
+ #ifndef _LINUX_I2C_H
+ #define _LINUX_I2C_H
+
+-#include <linux/module.h>
+-#include <linux/types.h>
++#ifdef __KERNEL__
++# include <linux/module.h>
++# include <linux/types.h>
++#else
++# define __KERNEL__
++# include <linux/types.h>
++# undef __KERNEL__
++#endif
+ #include <linux/i2c-id.h>
++#ifdef __KERNEL__
+ #include <linux/device.h> /* for struct device */
+ #include <asm/semaphore.h>
++#endif
+
+ /* --- General options ------------------------------------------------ */
+@@ -109,6 +117,7 @@
+ * events.
+ */
+
++#ifdef __KERNEL__
+ struct i2c_driver {
+ struct module *owner;
+ char name[32];
+@@ -268,6 +277,7 @@
+ {
+ dev_set_drvdata (&dev->dev, data);
+ }
++#endif
+
+ /*flags for the driver struct: */
+ #define I2C_DF_NOTIFY 0x01 /* notify on bus (de/a)ttaches */
+@@ -599,11 +609,13 @@
+ #define i2c_is_isa_adapter(adapptr) \
+ ((adapptr)->algo->id == I2C_ALGO_ISA)
+
++#ifdef __KERNEL__
+ /* Tiny delay function used by the i2c bus drivers */
+ static inline void i2c_delay(signed long timeout)
+ {
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout(timeout);
+ }
++#endif
+
+ #endif /* _LINUX_I2C_H */
+--- linux-2.6.3/include/linux/usbdevice_fs.h 2004-02-22 16:52:07.000000000 +0000
++++ linux-2.6.3/include/linux/usbdevice_fs.h 2004-02-22 22:10:45.000000000 +0000
+@@ -31,6 +31,7 @@
+ #ifndef _LINUX_USBDEVICE_FS_H
+ #define _LINUX_USBDEVICE_FS_H
+
++#include <linux/compiler.h>
+ #include <linux/types.h>
+
+ /* --------------------------------------------------------------------- */
+
+diff -ur linux-2.6.4/include/asm-i386/ipc.h linux-2.6.4-gentoo/include/asm-i386/ipc.h
+--- linux-2.6.4/include/asm-i386/ipc.h 2004-03-13 13:05:04.000026816 +0000
++++ linux-2.6.4-gentoo/include/asm-i386/ipc.h 2004-03-13 13:11:56.486319368 +0000
+@@ -6,6 +6,8 @@
+ *
+ * See arch/i386/kernel/sys_i386.c for ugly details..
+ */
++
++#include <linux/compiler.h>
+ struct ipc_kludge {
+ struct msgbuf __user *msgp;
+ long msgtyp;
+diff -ur linux-2.6.4/include/linux/compiler-gcc3.h linux-2.6.4-gentoo/include/linux/compiler-gcc3.h
+--- linux-2.6.4/include/linux/compiler-gcc3.h 2004-03-13 13:04:57.718981680 +0000
++++ linux-2.6.4-gentoo/include/linux/compiler-gcc3.h 2004-03-13 13:15:55.937917192 +0000
+@@ -3,6 +3,8 @@
+ /* These definitions are for GCC v3.x. */
+ #include <linux/compiler-gcc.h>
+
++#ifdef __KERNEL__
++
+ #if __GNUC_MINOR__ >= 1
+ # define inline __inline__ __attribute__((always_inline))
+ # define __inline__ __inline__ __attribute__((always_inline))
+@@ -25,3 +27,5 @@
+ #if __GNUC_MINOR__ >= 1
+ #define noinline __attribute__((noinline))
+ #endif
++
++#endif /* __KERNEL__ */
+diff -ur linux-2.6.4/include/linux/mroute.h linux-2.6.4-gentoo/include/linux/mroute.h
+--- linux-2.6.4/include/linux/mroute.h 2004-03-13 13:04:54.084534200 +0000
++++ linux-2.6.4-gentoo/include/linux/mroute.h 2004-03-13 13:14:04.356880088 +0000
+@@ -1,6 +1,7 @@
+ #ifndef __LINUX_MROUTE_H
+ #define __LINUX_MROUTE_H
+
++#include <linux/types.h>
+ #include <linux/sockios.h>
+ #include <linux/in.h>
+
diff --git a/sys-kernel/linux26-headers/files/linux26-headers-2.6.4-unistd-nptl-fix.patch b/sys-kernel/linux26-headers/files/linux26-headers-2.6.4-unistd-nptl-fix.patch
new file mode 100644
index 000000000000..8e418666d66d
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/linux26-headers-2.6.4-unistd-nptl-fix.patch
@@ -0,0 +1,19 @@
+--- unistd-2.6.4.h 2004-04-12 08:33:06.000000000 -0400
++++ unistd.h 2004-08-04 21:58:41.947303328 -0400
+@@ -713,6 +713,8 @@
+
+ #endif /* __KERNEL_SYSCALLS__ */
+
++
++#ifdef __KERNEL__
+ #ifndef __ASSEMBLY__
+
+ #include <linux/linkage.h>
+@@ -731,6 +733,7 @@
+ size_t sigsetsize);
+
+ #endif /* __ASSEMBLY__ */
++#endif /* __KERNEL */
+
+ #endif /* __NO_STUBS */
+
diff --git a/sys-kernel/linux26-headers/files/linux26-headers-2.6.6-appCompat.patch b/sys-kernel/linux26-headers/files/linux26-headers-2.6.6-appCompat.patch
new file mode 100644
index 000000000000..85b8947455eb
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/linux26-headers-2.6.6-appCompat.patch
@@ -0,0 +1,883 @@
+Authors: Tim Yamin <plasmaroo@gentoo.org>
+ Mike Frysinger <vapier@gentoo.org>
+ Martin Schlemmer <azarah@gentoo.org>
+
+This patch neatens up the 2.6.0 headers for user-space usage and allows backward
+compatibility on a variety of applications which are designed for 2.4 headers.
+
+diff -ur linux-2.6.0/include/linux/bitmap.h linux-2.6.0/include/linux.gentoo/bitmap.h
+--- linux-2.6.0/include/linux/bitmap.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/bitmap.h 2003-12-27 19:19:31.000000000 +0000
+@@ -1,6 +1,7 @@
+ #ifndef __LINUX_BITMAP_H
+ #define __LINUX_BITMAP_H
+
++#ifdef __KERNEL__
+ #ifndef __ASSEMBLY__
+
+ #include <linux/config.h>
+@@ -155,5 +156,5 @@
+ #endif
+
+ #endif /* __ASSEMBLY__ */
+-
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_BITMAP_H */
+diff -ur linux-2.6.0/include/linux/buffer_head.h linux-2.6.0/include/linux.gentoo/buffer_head.h
+--- linux-2.6.0/include/linux/buffer_head.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/buffer_head.h 2003-12-27 19:19:31.000000000 +0000
+@@ -34,6 +34,8 @@
+
+ #define MAX_BUF_PER_PAGE (PAGE_CACHE_SIZE / 512)
+
++#ifdef __KERNEL__
++
+ struct page;
+ struct buffer_head;
+ struct address_space;
+@@ -283,6 +285,8 @@
+ __wait_on_buffer(bh);
+ }
+
++#endif /* __KERNEL__ */
++
+ static inline void lock_buffer(struct buffer_head *bh)
+ {
+ while (test_set_buffer_locked(bh))
+diff -ur linux-2.6.0/include/linux/compiler-gcc2.h linux-2.6.0/include/linux.gentoo/compiler-gcc2.h
+--- linux-2.6.0/include/linux/compiler-gcc2.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/compiler-gcc2.h 2003-12-27 19:19:31.000000000 +0000
+@@ -12,7 +12,9 @@
+ # define __builtin_expect(x, expected_value) (x)
+ #endif
+
++#ifndef __attribute_used__
+ #define __attribute_used__ __attribute__((__unused__))
++#endif
+
+ /*
+ * The attribute `pure' is not implemented in GCC versions earlier
+diff -ur linux-2.6.1/include/linux/cpumask.h linux-2.6.1/include/linux.gentoo/cpumask.h
+--- linux-2.6.1/include/linux/cpumask.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.1/include/linux.gentoo/cpumask.h 2003-12-27 19:19:31.000000000 +0000
+@@ -1,6 +1,8 @@
+ #ifndef __LINUX_CPUMASK_H
+ #define __LINUX_CPUMASK_H
+
++#ifdef __KERNEL__
++
+ #include <linux/threads.h>
+ #include <asm/cpumask.h>
+ #include <asm/bug.h>
+@@ -68,4 +70,5 @@
+ cpu < NR_CPUS; \
+ cpu = next_online_cpu(cpu,map))
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_CPUMASK_H */
+diff -ur linux-2.6.0/include/linux/ext2_fs_sb.h linux-2.6.0/include/linux.gentoo/ext2_fs_sb.h
+--- linux-2.6.0/include/linux/ext2_fs_sb.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/ext2_fs_sb.h 2003-12-27 19:19:31.000000000 +0000
+@@ -46,9 +46,9 @@
+ int s_inode_size;
+ int s_first_ino;
+ spinlock_t s_next_gen_lock;
+- u32 s_next_generation;
++ __u32 s_next_generation;
+ unsigned long s_dir_count;
+- u8 *s_debts;
++ __u8 *s_debts;
+ struct percpu_counter s_freeblocks_counter;
+ struct percpu_counter s_freeinodes_counter;
+ struct percpu_counter s_dirs_counter;
+diff -ur linux-2.6.0/include/linux/list.h linux-2.6.0/include/linux.gentoo/list.h
+--- linux-2.6.0/include/linux/list.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/list.h 2003-12-27 19:19:31.000000000 +0000
+@@ -584,7 +584,6 @@
+ pos && ({ n = pos->next; 1; }) && \
+ ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
+ pos = n)
+-#else
+-#warning "don't include kernel headers in userspace"
++
+ #endif /* __KERNEL__ */
+ #endif
+diff -ur linux-2.6.0/include/linux/mod_devicetable.h linux-2.6.0/include/linux.gentoo/mod_devicetable.h
+--- linux-2.6.0/include/linux/mod_devicetable.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/mod_devicetable.h 2003-12-27 19:19:31.000000000 +0000
+@@ -10,7 +10,6 @@
+ #ifdef __KERNEL__
+ #include <linux/types.h>
+ typedef unsigned long kernel_ulong_t;
+-#endif
+
+ #define PCI_ANY_ID (~0)
+
+@@ -147,5 +146,5 @@
+ #define CCW_DEVICE_ID_MATCH_DEVICE_TYPE 0x04
+ #define CCW_DEVICE_ID_MATCH_DEVICE_MODEL 0x08
+
+-
++#endif /* __KERNEL__ */
+ #endif /* LINUX_MOD_DEVICETABLE_H */
+diff -ur linux-2.6.6/include/linux/radix-tree.h linux-2.6.6/include/linux.gentoo/radix-tree.h
+--- linux-2.6.6/include/linux/radix-tree.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.6/include/linux.gentoo/radix-tree.h 2003-12-27 19:19:31.000000000 +0000
+@@ -44,6 +44,8 @@
+ (root)->rnode = NULL; \
+ } while (0)
+
++#ifdef __KERNEL__
++
+ int radix_tree_insert(struct radix_tree_root *, unsigned long, void *);
+ void *radix_tree_lookup(struct radix_tree_root *, unsigned long);
+ void *radix_tree_delete(struct radix_tree_root *, unsigned long);
+@@ -68,4 +70,5 @@
+ preempt_enable();
+ }
+
++#endif /* __KERNEL__ */
+ #endif /* _LINUX_RADIX_TREE_H */
+diff -ur linux-2.6.0/include/linux/smp.h linux-2.6.0/include/linux.gentoo/smp.h
+--- linux-2.6.0/include/linux/smp.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/smp.h 2003-12-27 19:19:31.000000000 +0000
+@@ -6,6 +6,8 @@
+ * Alan Cox. <alan@redhat.com>
+ */
+
++
++#ifdef __KERNEL__
+ #include <linux/config.h>
+
+ #ifdef CONFIG_SMP
+@@ -112,4 +114,5 @@
+ #define put_cpu() preempt_enable()
+ #define put_cpu_no_resched() preempt_enable_no_resched()
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_SMP_H */
+diff -ur linux-2.6.0/include/linux/spinlock.h linux-2.6.0/include/linux.gentoo/spinlock.h
+--- linux-2.6.0/include/linux/spinlock.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/spinlock.h 2003-12-27 19:19:31.000000000 +0000
+@@ -183,6 +183,7 @@
+ #define _raw_write_trylock(lock) ({ (void)(lock); (1); })
+
+ #endif /* !SMP */
++#ifdef __KERNEL__
+
+ /*
+ * Define the various spin_lock and rw_lock methods. Note we define these
+@@ -465,4 +466,5 @@
+ #endif
+ }
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_SPINLOCK_H */
+diff -ur linux-2.6.0/include/linux/time.h linux-2.6.0/include/linux.gentoo/time.h
+--- linux-2.6.0/include/linux/time.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/time.h 2003-12-27 19:19:31.000000000 +0000
+@@ -4,24 +4,31 @@
+ #include <asm/param.h>
+ #include <linux/types.h>
+
++#ifndef _SYS_TIME_H
+ #ifndef _STRUCT_TIMESPEC
++#ifndef __timespec_defined
+ #define _STRUCT_TIMESPEC
+ struct timespec {
+ time_t tv_sec; /* seconds */
+ long tv_nsec; /* nanoseconds */
+ };
++#endif /* __timespec_defined */
+ #endif /* _STRUCT_TIMESPEC */
+
++#ifndef _STRUCT_TIMEVAL
+ struct timeval {
+ time_t tv_sec; /* seconds */
+ suseconds_t tv_usec; /* microseconds */
+ };
++#endif /* _STRUCT_TIMEVAL */
+
+ struct timezone {
+ int tz_minuteswest; /* minutes west of Greenwich */
+ int tz_dsttime; /* type of dst correction */
+ };
+
++#endif /* _SYS_TIME_H */
++
+ #ifdef __KERNEL__
+
+ #include <linux/spinlock.h>
+@@ -281,6 +281,8 @@
+ * machines were long is 32-bit! (However, as time_t is signed, we
+ * will already get problems at other places on 2038-01-19 03:14:08)
+ */
++
++#ifndef _TIME_H
+ static inline unsigned long
+ mktime (unsigned int year, unsigned int mon,
+ unsigned int day, unsigned int hour,
+@@ -298,6 +300,7 @@
+ )*60 + min /* now have minutes */
+ )*60 + sec; /* finally seconds */
+ }
++#endif
+
+ extern struct timespec xtime;
+ extern struct timespec wall_to_monotonic;
+@@ -351,15 +358,19 @@
+ #define ITIMER_VIRTUAL 1
+ #define ITIMER_PROF 2
+
++#ifndef _TIME_H
+ struct itimerspec {
+ struct timespec it_interval; /* timer period */
+ struct timespec it_value; /* timer expiration */
+ };
++#endif /* _TIME_H */
+
++#ifndef _SYS_TIME_H
+ struct itimerval {
+ struct timeval it_interval; /* timer interval */
+ struct timeval it_value; /* current value */
+ };
++#endif /* _SYS_TIME_H */
+
+
+ /*
+diff -ur linux-2.6.0/include/linux/workqueue.h linux-2.6.0/include/linux.gentoo/workqueue.h
+--- linux-2.6.0/include/linux/workqueue.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/workqueue.h 2003-12-27 19:19:31.000000000 +0000
+@@ -5,6 +5,8 @@
+ #ifndef _LINUX_WORKQUEUE_H
+ #define _LINUX_WORKQUEUE_H
+
++#ifdef __KERNEL__
++
+ #include <linux/timer.h>
+ #include <linux/linkage.h>
+
+@@ -73,5 +75,7 @@
+ return del_timer_sync(&work->timer);
+ }
+
++#endif /* __KERNEL__ */
++
+ #endif
+
+diff -ur linux-2.6.0/include/asm-i386/mpspec.h linux-2.6.0/include/asm-i386/mpspec.h
+--- linux-2.6.0/include/asm-i386/mpspec.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/mpspec.h 2004-01-19 20:01:11.000000000 +0000
+@@ -3,7 +3,7 @@
+
+ #include <linux/cpumask.h>
+ #include <asm/mpspec_def.h>
+-#include <mach_mpspec.h>
++#include <asm/mach-generic/mach_mpspec.h>
+
+ extern int mp_bus_id_to_type [MAX_MP_BUSSES];
+ extern int mp_bus_id_to_node [MAX_MP_BUSSES];
+diff -ur linux-2.6.0/include/asm-i386/processor.h linux-2.6.0/include/asm-i386/processor.h
+--- linux-2.6.0/include/asm-i386/processor.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/processor.h 2004-01-19 20:01:11.000000000 +0000
+@@ -8,7 +8,9 @@
+ #define __ASM_I386_PROCESSOR_H
+
+ #include <asm/vm86.h>
++#ifdef __KERNEL__
+ #include <asm/math_emu.h>
++#endif
+ #include <asm/segment.h>
+ #include <asm/page.h>
+ #include <asm/types.h>
+diff -ur linux-2.6.0/include/asm-i386/semaphore.h linux-2.6.0/include/asm-i386/semaphore.h
+--- linux-2.6.0/include/asm-i386/semaphore.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/semaphore.h 2004-01-19 20:01:11.000000000 +0000
+@@ -3,8 +3,6 @@
+
+ #include <linux/linkage.h>
+
+-#ifdef __KERNEL__
+-
+ /*
+ * SMP- and interrupt-safe semaphores..
+ *
+@@ -214,4 +212,3 @@
+ }
+
+ #endif
+-#endif
+diff -ur linux-2.6.0/include/asm-i386/signal.h linux-2.6.0/include/asm-i386/signal.h
+--- linux-2.6.0/include/asm-i386/signal.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/signal.h 2004-01-19 20:01:11.000000000 +0000
+@@ -26,7 +26,9 @@
+ /* Here we must cater to libcs that poke about in kernel headers. */
+
+ #define NSIG 32
++#ifndef __sigset_t_defined
+ typedef unsigned long sigset_t;
++#endif
+
+ #endif /* __KERNEL__ */
+
+@@ -155,6 +157,7 @@
+ #else
+ /* Here we must cater to libcs that poke about in kernel headers. */
+
++#ifndef _SIGNAL_H
+ struct sigaction {
+ union {
+ __sighandler_t _sa_handler;
+@@ -164,17 +167,20 @@
+ unsigned long sa_flags;
+ void (*sa_restorer)(void);
+ };
++#endif
+
+ #define sa_handler _u._sa_handler
+ #define sa_sigaction _u._sa_sigaction
+
+ #endif /* __KERNEL__ */
+
++#ifndef _SIGNAL_H
+ typedef struct sigaltstack {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
++#endif
+
+ #ifdef __KERNEL__
+ #include <asm/sigcontext.h>
+diff -ur linux-2.6.0/include/asm-i386/smp.h linux-2.6.0/include/asm-i386/smp.h
+--- linux-2.6.0/include/asm-i386/smp.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/smp.h 2004-01-19 20:01:11.000000000 +0000
+@@ -70,7 +70,7 @@
+ #ifdef APIC_DEFINITION
+ extern int hard_smp_processor_id(void);
+ #else
+-#include <mach_apicdef.h>
++#include <asm/mach-generic/mach_apicdef.h>
+ static inline int hard_smp_processor_id(void)
+ {
+ /* we don't want to mark this access volatile - bad code generation */
+diff -ur linux-2.6.0/include/linux/types.h linux-2.6.0/include/linux.gentoo/types.h
+--- linux-2.6.0/include/linux/types.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/types.h 2004-01-19 20:01:11.000000000 +0000
+@@ -19,12 +19,24 @@
+
+ typedef __u32 __kernel_dev_t;
+
++#ifndef _SYS_SELECT_H
+ typedef __kernel_fd_set fd_set;
++#endif
++#ifndef __dev_t_defined
+ typedef __kernel_dev_t dev_t;
++#endif
++#ifndef __ino_t_defined
+ typedef __kernel_ino_t ino_t;
++#endif
++#ifndef __mode_t_defined
+ typedef __kernel_mode_t mode_t;
++#endif
++#ifndef __nlink_t_defined
+ typedef __kernel_nlink_t nlink_t;
++#endif
++#ifndef __off_t_defined
+ typedef __kernel_off_t off_t;
++#endif
+ typedef __kernel_pid_t pid_t;
+ typedef __kernel_daddr_t daddr_t;
+ typedef __kernel_key_t key_t;
+@@ -34,7 +46,9 @@
+
+ #ifdef __KERNEL__
+ typedef __kernel_uid32_t uid_t;
++#define __uid_t_defined
+ typedef __kernel_gid32_t gid_t;
++#define __gid_t_defined
+ typedef __kernel_uid16_t uid16_t;
+ typedef __kernel_gid16_t gid16_t;
+
+@@ -49,7 +63,9 @@
+ */
+ #else
+ typedef __kernel_uid_t uid_t;
++#define __uid_t_defined
+ typedef __kernel_gid_t gid_t;
++#define __gid_t_defined
+ #endif /* __KERNEL__ */
+
+ #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+diff -ur linux-2.6.0/include/asm-generic/siginfo.h linux-2.6.0/include/asm-generic/siginfo.h
+--- linux-2.6.0/include/asm-generic/siginfo.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-generic/siginfo.h 2004-01-19 20:01:11.000000000 +0000
+@@ -4,10 +4,12 @@
+ #include <linux/compiler.h>
+ #include <linux/types.h>
+
++#ifndef _SIGNAL_H
+ typedef union sigval {
+ int sival_int;
+ void *sival_ptr;
+ } sigval_t;
++#endif
+
+ /*
+ * This is the size (including padding) of the part of the
+@@ -31,7 +33,7 @@
+ #endif
+
+ #ifndef HAVE_ARCH_SIGINFO_T
+-
++#ifndef _SIGNAL_H
+ typedef struct siginfo {
+ int si_signo;
+ int si_errno;
+@@ -86,7 +88,7 @@
+ } _sigpoll;
+ } _sifields;
+ } siginfo_t;
+-
++#endif
+ #endif
+
+ /*
+@@ -238,7 +240,7 @@
+ #endif
+
+ #ifndef HAVE_ARCH_SIGEVENT_T
+-
++#ifndef _SIGNAL_H
+ typedef struct sigevent {
+ sigval_t sigev_value;
+ int sigev_signo;
+@@ -253,7 +255,7 @@
+ } _sigev_thread;
+ } _sigev_un;
+ } sigevent_t;
+-
++#endif
+ #endif
+
+ #define sigev_notify_function _sigev_un._sigev_thread._function
+diff -ur linux-2.6.0/include/linux/jiffies.h linux-2.6.0/include/linux.gentoo/jiffies.h
+--- linux-2.6.0/include/linux/jiffies.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/jiffies.h 2004-01-19 20:01:11.000000000 +0000
+@@ -13,15 +13,15 @@
+ * without holding read_lock_irq(&xtime_lock).
+ * get_jiffies_64() will do this for you as appropriate.
+ */
+-extern u64 jiffies_64;
++extern __u64 jiffies_64;
+ extern unsigned long volatile jiffies;
+
+ #if (BITS_PER_LONG < 64)
+-u64 get_jiffies_64(void);
++__u64 get_jiffies_64(void);
+ #else
+-static inline u64 get_jiffies_64(void)
++static inline __u64 get_jiffies_64(void)
+ {
+- return (u64)jiffies;
++ return (__u64)jiffies;
+ }
+ #endif
+
+diff -ur linux-2.6.0/include/linux/i2c.h linux-2.6.0/include/linux.gentoo/i2c.h
+--- linux-2.6.0/include/linux/i2c.h 2004-02-07 13:29:15.099504640 -0500
++++ linux-2.6.0/include/linux.gentoo/i2c.h 2004-02-07 13:35:53.956869104 -0500
+@@ -28,10 +28,18 @@
+ #ifndef _LINUX_I2C_H
+ #define _LINUX_I2C_H
+
+-#include <linux/module.h>
+-#include <linux/types.h>
++#ifdef __KERNEL__
++# include <linux/module.h>
++# include <linux/types.h>
++#else
++# define __KERNEL__
++# include <linux/types.h>
++# undef __KERNEL__
++#endif
+ #include <linux/i2c-id.h>
++#ifdef __KERNEL__
+ #include <linux/device.h> /* for struct device */
+ #include <asm/semaphore.h>
++#endif
+
+ /* --- General options ------------------------------------------------ */
+@@ -109,6 +117,7 @@
+ * events.
+ */
+
++#ifdef __KERNEL__
+ struct i2c_driver {
+ struct module *owner;
+ char name[32];
+@@ -268,6 +277,7 @@
+ {
+ dev_set_drvdata (&dev->dev, data);
+ }
++#endif
+
+ /*flags for the driver struct: */
+ #define I2C_DF_NOTIFY 0x01 /* notify on bus (de/a)ttaches */
+@@ -599,11 +609,13 @@
+ #define i2c_is_isa_adapter(adapptr) \
+ ((adapptr)->algo->id == I2C_ALGO_ISA)
+
++#ifdef __KERNEL__
+ /* Tiny delay function used by the i2c bus drivers */
+ static inline void i2c_delay(signed long timeout)
+ {
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout(timeout);
+ }
++#endif
+
+ #endif /* _LINUX_I2C_H */
+diff -ur linux-2.6.3/include/linux/usbdevice_fs.h linux-2.6.3/include/linux/usbdevice_fs.h
+--- linux-2.6.3/include/linux/usbdevice_fs.h 2004-02-22 16:52:07.000000000 +0000
++++ linux-2.6.3/include/linux/usbdevice_fs.h 2004-02-22 22:10:45.000000000 +0000
+@@ -31,6 +31,7 @@
+ #ifndef _LINUX_USBDEVICE_FS_H
+ #define _LINUX_USBDEVICE_FS_H
+
++#include <linux/compiler.h>
+ #include <linux/types.h>
+
+ /* --------------------------------------------------------------------- */
+
+diff -ur linux-2.6.4/include/asm-i386/ipc.h linux-2.6.4-gentoo/include/asm-i386/ipc.h
+--- linux-2.6.4/include/asm-i386/ipc.h 2004-03-13 13:05:04.000026816 +0000
++++ linux-2.6.4-gentoo/include/asm-i386/ipc.h 2004-03-13 13:11:56.486319368 +0000
+@@ -6,6 +6,8 @@
+ *
+ * See arch/i386/kernel/sys_i386.c for ugly details..
+ */
++
++#include <linux/compiler.h>
+ struct ipc_kludge {
+ struct msgbuf __user *msgp;
+ long msgtyp;
+diff -ur linux-2.6.4/include/linux/compiler-gcc3.h linux-2.6.4-gentoo/include/linux/compiler-gcc3.h
+--- linux-2.6.4/include/linux/compiler-gcc3.h 2004-03-13 13:04:57.718981680 +0000
++++ linux-2.6.4-gentoo/include/linux/compiler-gcc3.h 2004-03-13 13:15:55.937917192 +0000
+@@ -3,6 +3,8 @@
+ /* These definitions are for GCC v3.x. */
+ #include <linux/compiler-gcc.h>
+
++#ifdef __KERNEL__
++
+ #if __GNUC_MINOR__ >= 1
+ # define inline __inline__ __attribute__((always_inline))
+ # define __inline__ __inline__ __attribute__((always_inline))
+@@ -25,3 +27,5 @@
+ #if __GNUC_MINOR__ >= 1
+ #define noinline __attribute__((noinline))
+ #endif
++
++#endif /* __KERNEL__ */
+diff -ur linux-2.6.4/include/linux/mroute.h linux-2.6.4-gentoo/include/linux/mroute.h
+--- linux-2.6.4/include/linux/mroute.h 2004-03-13 13:04:54.084534200 +0000
++++ linux-2.6.4-gentoo/include/linux/mroute.h 2004-03-13 13:14:04.356880088 +0000
+@@ -1,6 +1,7 @@
+ #ifndef __LINUX_MROUTE_H
+ #define __LINUX_MROUTE_H
+
++#include <linux/types.h>
+ #include <linux/sockios.h>
+ #include <linux/in.h>
+
+diff -ur linux-2.6.6/include/asm-ppc/signal.h linux-2.6.6-gentoo/include/asm-ppc/signal.h
+--- linux-2.6.6/include/asm-ppc/signal.h 2004-06-02 18:30:17.329072696 +0100
++++ linux-2.6.6-gentoo/include/asm-ppc/signal.h 2004-06-02 18:35:04.093477880 +0100
+@@ -17,9 +17,11 @@
+
+ typedef unsigned long old_sigset_t; /* at least 32 bits */
+
++#ifndef __sigset_t_defined
+ typedef struct {
+ unsigned long sig[_NSIG_WORDS];
+ } sigset_t;
++#endif
+
+ #define SIGHUP 1
+ #define SIGINT 2
+@@ -125,28 +127,51 @@
+ #define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
+
+ struct old_sigaction {
++#ifdef __USE_POSIX199309
++# ifdef sa_handler
++# undef sa_handler
++# endif
++# ifdef sa_sigaction
++# undef sa_sigaction
++# endif
++ union
++ {
++ /* Used if SA_SIGINFO is not set. */
++ __sighandler_t sa_handler;
++ /* Used if SA_SIGINFO is set. */
++ void (*sa_sigaction) (int, siginfo_t *, void *);
++ }
++ __sigaction_handler;
++# define sa_handler __sigaction_handler.sa_handler
++# define sa_sigaction __sigaction_handler.sa_sigaction
++#else
+ __sighandler_t sa_handler;
++#endif
+ old_sigset_t sa_mask;
+ unsigned long sa_flags;
+ void (*sa_restorer)(void);
+ };
+
++#ifndef _SIGNAL_H
+ struct sigaction {
+ __sighandler_t sa_handler;
+ unsigned long sa_flags;
+ void (*sa_restorer)(void);
+ sigset_t sa_mask; /* mask last for extensibility */
+ };
++#endif
+
+ struct k_sigaction {
+ struct sigaction sa;
+ };
+
++#ifndef _SIGNAL_H
+ typedef struct sigaltstack {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
++#endif
+
+ #ifdef __KERNEL__
+ #include <asm/sigcontext.h>
+diff -ur linux-2.6.6/include/asm-x86_64/processor.h linux-2.6.6-gentoo/include/asm-x86_64/processor.h
+--- linux-2.6.6/include/asm-x86_64/processor.h 2004-06-02 19:25:24.000000000 +0100
++++ linux-2.6.6-gentoo/include/asm-x86_64/processor.h 2004-06-02 19:24:31.000000000 +0100
+@@ -189,17 +189,17 @@
+ #define INVALID_IO_BITMAP_OFFSET 0x8000
+
+ struct i387_fxsave_struct {
+- u16 cwd;
+- u16 swd;
+- u16 twd;
+- u16 fop;
+- u64 rip;
+- u64 rdp;
+- u32 mxcsr;
+- u32 mxcsr_mask;
+- u32 st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
+- u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg = 128 bytes */
+- u32 padding[24];
++ __u16 cwd;
++ __u16 swd;
++ __u16 twd;
++ __u16 fop;
++ __u64 rip;
++ __u64 rdp;
++ __u32 mxcsr;
++ __u32 mxcsr_mask;
++ __u32 st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
++ __u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg = 128 bytes */
++ __u32 padding[24];
+ } __attribute__ ((aligned (16)));
+
+ union i387_union {
+@@ -207,16 +207,16 @@
+ };
+
+ struct tss_struct {
+- u32 reserved1;
+- u64 rsp0;
+- u64 rsp1;
+- u64 rsp2;
+- u64 reserved2;
+- u64 ist[7];
+- u32 reserved3;
+- u32 reserved4;
+- u16 reserved5;
+- u16 io_bitmap_base;
++ __u32 reserved1;
++ __u64 rsp0;
++ __u64 rsp1;
++ __u64 rsp2;
++ __u64 reserved2;
++ __u64 ist[7];
++ __u32 reserved3;
++ __u32 reserved4;
++ __u16 reserved5;
++ __u16 io_bitmap_base;
+ /*
+ * The extra 1 is there because the CPU will access an
+ * additional byte beyond the end of the IO permission
+@@ -252,7 +252,7 @@
+ int ioperm;
+ unsigned long *io_bitmap_ptr;
+ /* cached TLS descriptors. */
+- u64 tls_array[GDT_ENTRY_TLS_ENTRIES];
++ __u64 tls_array[GDT_ENTRY_TLS_ENTRIES];
+ };
+
+ #define INIT_THREAD {}
+diff -ur linux-2.6.6/include/asm-x86_64/system.h linux-2.6.6-gentoo/include/asm-x86_64/system.h
+--- linux-2.6.6/include/asm-x86_64/system.h 2004-06-02 19:25:27.000000000 +0100
++++ linux-2.6.6-gentoo/include/asm-x86_64/system.h 2004-06-02 19:25:17.000000000 +0100
+@@ -5,6 +5,30 @@
+ #include <linux/kernel.h>
+ #include <asm/segment.h>
+
++/*
++ * Alternative inline assembly with input.
++ *
++ * Pecularities:
++ * No memory clobber here.
++ * Argument numbers start with 1.
++ * Best is to use constraints that are fixed size (like (%1) ... "r")
++ * If you use variable sized constraints like "m" or "g" in the
++ * replacement maake sure to pad to the worst case length.
++ */
++#define alternative_input(oldinstr, newinstr, feature, input) \
++ asm volatile ("661:\n\t" oldinstr "\n662:\n" \
++ ".section .altinstructions,\"a\"\n" \
++ " .align 8\n" \
++ " .quad 661b\n" /* label */ \
++ " .quad 663f\n" /* new instruction */ \
++ " .byte %c0\n" /* feature bit */ \
++ " .byte 662b-661b\n" /* sourcelen */ \
++ " .byte 664f-663f\n" /* replacementlen */ \
++ ".previous\n" \
++ ".section .altinstr_replacement,\"ax\"\n" \
++ "663:\n\t" newinstr "\n664:\n" /* replacement */ \
++ ".previous" :: "i" (feature), input)
++
+ #ifdef __KERNEL__
+
+ #ifdef CONFIG_SMP
+@@ -114,30 +138,6 @@
+ ".previous" :: "i" (feature) : "memory")
+
+ /*
+- * Alternative inline assembly with input.
+- *
+- * Pecularities:
+- * No memory clobber here.
+- * Argument numbers start with 1.
+- * Best is to use constraints that are fixed size (like (%1) ... "r")
+- * If you use variable sized constraints like "m" or "g" in the
+- * replacement maake sure to pad to the worst case length.
+- */
+-#define alternative_input(oldinstr, newinstr, feature, input) \
+- asm volatile ("661:\n\t" oldinstr "\n662:\n" \
+- ".section .altinstructions,\"a\"\n" \
+- " .align 8\n" \
+- " .quad 661b\n" /* label */ \
+- " .quad 663f\n" /* new instruction */ \
+- " .byte %c0\n" /* feature bit */ \
+- " .byte 662b-661b\n" /* sourcelen */ \
+- " .byte 664f-663f\n" /* replacementlen */ \
+- ".previous\n" \
+- ".section .altinstr_replacement,\"ax\"\n" \
+- "663:\n\t" newinstr "\n664:\n" /* replacement */ \
+- ".previous" :: "i" (feature), input)
+-
+-/*
+ * Clear and set 'TS' bit respectively
+ */
+ #define clts() __asm__ __volatile__ ("clts")
+diff -ur linux-2.6.6/include/linux/socket.h linux-2.6.6-gentoo/include/linux/socket.h
+--- linux-2.6.6/include/linux/socket.h 2004-05-25 17:47:07.000000000 +0100
++++ linux-2.6.6-gentoo/include/linux/socket.h 2004-06-02 21:19:49.000000000 +0100
+@@ -16,6 +16,10 @@
+ /* _SS_MAXSIZE value minus size of ss_family */
+ } __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */
+
++#ifndef _SYS_SOCKET_H
++typedef unsigned short sa_family_t;
++#endif
++
+ #if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
+
+ #include <linux/config.h> /* for CONFIG_COMPAT */
+@@ -26,8 +30,6 @@
+ #include <linux/types.h> /* pid_t */
+ #include <linux/compiler.h> /* __user */
+
+-typedef unsigned short sa_family_t;
+-
+ /*
+ * 1003.1g requires sa_family_t and that sa_data is char.
+ */
+diff -ur linux-2.6.6/include/linux/audit.h linux-2.6.6-gentoo/include/linux/audit.h
+--- linux-2.6.6/include/linux/audit.h 2004-05-25 17:47:07.000000000 +0100
++++ linux-2.6.6-gentoo/include/linux/audit.h 2004-06-02 21:19:21.000000000 +0100
+@@ -97,6 +97,7 @@
+ #define AUDIT_FAIL_PANIC 2
+
+ #ifndef __KERNEL__
++#include <linux/netlink.h>
+ struct audit_message {
+ struct nlmsghdr nlh;
+ char data[1200];
+diff -ur linux-2.6.6/include/asm-x86_64/sigcontext.h linux-2.6.6-gentoo/include/asm-x86_64/sigcontext.h
+--- linux-2.6.6/include/asm-x86_64/sigcontext.h 2004-05-25 17:47:07.000000000 +0100
++++ linux-2.6.6-gentoo/include/asm-x86_64/sigcontext.h 2004-06-02 22:04:52.000000000 +0100
+@@ -6,6 +6,8 @@
+ /* FXSAVE frame */
+ /* Note: reserved1/2 may someday contain valuable data. Always save/restore
+ them when you change signal frames. */
++
++#ifndef _SIGNAL_H
+ struct _fpstate {
+ __u16 cwd;
+ __u16 swd;
+@@ -52,3 +54,4 @@
+ };
+
+ #endif
++#endif
+diff -ur linux-2.6.6/include/linux/gfp.h linux-2.6.6-gentoo/include/linux/gfp.h
+--- linux-2.6.6/include/linux/gfp.h 2004-04-04 04:36:52.000000000 +0100
++++ linux-2.6.6-gentoo/include/linux/gfp.h 2004-05-11 19:51:06.412779200 +0100
+@@ -48,6 +48,7 @@
+
+ #define GFP_DMA __GFP_DMA
+
++#ifdef __KERNEL__
+
+ /*
+ * There is only one page-allocator function, and two main namespaces to
+@@ -96,4 +97,5 @@
+
+ void page_alloc_init(void);
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_GFP_H */
+diff -ur linux-2.6.6/include/linux/percpu.h linux-2.6.6-gentoo/include/linux/percpu.h
+--- linux-2.6.6/include/linux/percpu.h 2004-04-04 04:38:14.000000000 +0100
++++ linux-2.6.6-gentoo/include/linux/percpu.h 2004-05-11 19:33:00.987788880 +0100
+@@ -1,5 +1,6 @@
+ #ifndef __LINUX_PERCPU_H
+ #define __LINUX_PERCPU_H
++#include <linux/gfp.h>
+ #include <linux/spinlock.h> /* For preempt_disable() */
+ #include <linux/slab.h> /* For kmalloc() */
+ #include <linux/smp.h>
+diff -ur linux-2.6.6/include/linux/percpu_counter.h linux-2.6.6-gentoo/include/linux/percpu_counter.h
+--- linux-2.6.6/include/linux/percpu_counter.h 2004-04-04 04:37:23.000000000 +0100
++++ linux-2.6.6-gentoo/include/linux/percpu_counter.h 2004-05-11 19:46:31.423583912 +0100
+@@ -4,6 +4,7 @@
+ * WARNING: these things are HUGE. 4 kbytes per counter on 32-way P4.
+ */
+
++#include <linux/preempt.h>
+ #include <linux/config.h>
+ #include <linux/spinlock.h>
+ #include <linux/smp.h>
+
diff --git a/sys-kernel/linux26-headers/files/linux26-headers-2.6.6-tcp_info-DRS-backport.patch b/sys-kernel/linux26-headers/files/linux26-headers-2.6.6-tcp_info-DRS-backport.patch
new file mode 100644
index 000000000000..de250198d11c
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/linux26-headers-2.6.6-tcp_info-DRS-backport.patch
@@ -0,0 +1,12 @@
+--- linux-2.6.6/include/linux/tcp.h 2004-06-22 10:14:17 -07:00
++++ linux-2.6.7/include/linux/tcp.h 2004-06-22 10:14:17 -07:00
+@@ -183,6 +183,9 @@
+ __u32 tcpi_snd_cwnd;
+ __u32 tcpi_advmss;
+ __u32 tcpi_reordering;
++
++ __u32 tcpi_rcv_rtt;
++ __u32 tcpi_rcv_space;
+ };
+
+ #ifdef __KERNEL__
diff --git a/sys-kernel/linux26-headers/files/linux26-headers-2.6.7-appCompat.patch b/sys-kernel/linux26-headers/files/linux26-headers-2.6.7-appCompat.patch
new file mode 100644
index 000000000000..6b01dee8f017
--- /dev/null
+++ b/sys-kernel/linux26-headers/files/linux26-headers-2.6.7-appCompat.patch
@@ -0,0 +1,988 @@
+Authors: Tim Yamin <plasmaroo@gentoo.org>
+ Mike Frysinger <vapier@gentoo.org>
+ Martin Schlemmer <azarah@gentoo.org>
+
+This patch neatens up the 2.6.0 headers for user-space usage and allows backward
+compatibility on a variety of applications which are designed for 2.4 headers.
+
+diff -ur linux-2.6.0/include/linux/bitmap.h linux-2.6.0/include/linux.gentoo/bitmap.h
+--- linux-2.6.0/include/linux/bitmap.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/bitmap.h 2003-12-27 19:19:31.000000000 +0000
+@@ -1,6 +1,7 @@
+ #ifndef __LINUX_BITMAP_H
+ #define __LINUX_BITMAP_H
+
++#ifdef __KERNEL__
+ #ifndef __ASSEMBLY__
+
+ #include <linux/config.h>
+@@ -155,5 +156,5 @@
+ #endif
+
+ #endif /* __ASSEMBLY__ */
+-
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_BITMAP_H */
+diff -ur linux-2.6.0/include/linux/buffer_head.h linux-2.6.0/include/linux.gentoo/buffer_head.h
+--- linux-2.6.0/include/linux/buffer_head.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/buffer_head.h 2003-12-27 19:19:31.000000000 +0000
+@@ -34,6 +34,8 @@
+
+ #define MAX_BUF_PER_PAGE (PAGE_CACHE_SIZE / 512)
+
++#ifdef __KERNEL__
++
+ struct page;
+ struct buffer_head;
+ struct address_space;
+@@ -283,6 +285,8 @@
+ __wait_on_buffer(bh);
+ }
+
++#endif /* __KERNEL__ */
++
+ static inline void lock_buffer(struct buffer_head *bh)
+ {
+ while (test_set_buffer_locked(bh))
+diff -ur linux-2.6.0/include/linux/compiler-gcc2.h linux-2.6.0/include/linux.gentoo/compiler-gcc2.h
+--- linux-2.6.0/include/linux/compiler-gcc2.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/compiler-gcc2.h 2003-12-27 19:19:31.000000000 +0000
+@@ -12,7 +12,9 @@
+ # define __builtin_expect(x, expected_value) (x)
+ #endif
+
++#ifndef __attribute_used__
+ #define __attribute_used__ __attribute__((__unused__))
++#endif
+
+ /*
+ * The attribute `pure' is not implemented in GCC versions earlier
+diff -ur linux-2.6.1/include/linux/cpumask.h linux-2.6.1/include/linux.gentoo/cpumask.h
+--- linux-2.6.1/include/linux/cpumask.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.1/include/linux.gentoo/cpumask.h 2003-12-27 19:19:31.000000000 +0000
+@@ -1,6 +1,8 @@
+ #ifndef __LINUX_CPUMASK_H
+ #define __LINUX_CPUMASK_H
+
++#ifdef __KERNEL__
++
+ #include <linux/threads.h>
+ #include <asm/cpumask.h>
+ #include <asm/bug.h>
+@@ -68,4 +70,5 @@
+ cpu < NR_CPUS; \
+ cpu = next_online_cpu(cpu,map))
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_CPUMASK_H */
+diff -ur linux-2.6.0/include/linux/ext2_fs_sb.h linux-2.6.0/include/linux.gentoo/ext2_fs_sb.h
+--- linux-2.6.0/include/linux/ext2_fs_sb.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/ext2_fs_sb.h 2003-12-27 19:19:31.000000000 +0000
+@@ -46,9 +46,9 @@
+ int s_inode_size;
+ int s_first_ino;
+ spinlock_t s_next_gen_lock;
+- u32 s_next_generation;
++ __u32 s_next_generation;
+ unsigned long s_dir_count;
+- u8 *s_debts;
++ __u8 *s_debts;
+ struct percpu_counter s_freeblocks_counter;
+ struct percpu_counter s_freeinodes_counter;
+ struct percpu_counter s_dirs_counter;
+diff -ur linux-2.6.0/include/linux/mod_devicetable.h linux-2.6.0/include/linux.gentoo/mod_devicetable.h
+--- linux-2.6.0/include/linux/mod_devicetable.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/mod_devicetable.h 2003-12-27 19:19:31.000000000 +0000
+@@ -10,7 +10,6 @@
+ #ifdef __KERNEL__
+ #include <linux/types.h>
+ typedef unsigned long kernel_ulong_t;
+-#endif
+
+ #define PCI_ANY_ID (~0)
+
+@@ -147,5 +146,5 @@
+ #define CCW_DEVICE_ID_MATCH_DEVICE_TYPE 0x04
+ #define CCW_DEVICE_ID_MATCH_DEVICE_MODEL 0x08
+
+-
++#endif /* __KERNEL__ */
+ #endif /* LINUX_MOD_DEVICETABLE_H */
+diff -ur linux-2.6.6/include/linux/radix-tree.h linux-2.6.6/include/linux.gentoo/radix-tree.h
+--- linux-2.6.6/include/linux/radix-tree.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.6/include/linux.gentoo/radix-tree.h 2003-12-27 19:19:31.000000000 +0000
+@@ -44,6 +44,8 @@
+ (root)->rnode = NULL; \
+ } while (0)
+
++#ifdef __KERNEL__
++
+ int radix_tree_insert(struct radix_tree_root *, unsigned long, void *);
+ void *radix_tree_lookup(struct radix_tree_root *, unsigned long);
+ void *radix_tree_delete(struct radix_tree_root *, unsigned long);
+@@ -68,4 +70,5 @@
+ preempt_enable();
+ }
+
++#endif /* __KERNEL__ */
+ #endif /* _LINUX_RADIX_TREE_H */
+diff -ur linux-2.6.0/include/linux/smp.h linux-2.6.0/include/linux.gentoo/smp.h
+--- linux-2.6.0/include/linux/smp.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/smp.h 2003-12-27 19:19:31.000000000 +0000
+@@ -6,6 +6,8 @@
+ * Alan Cox. <alan@redhat.com>
+ */
+
++
++#ifdef __KERNEL__
+ #include <linux/config.h>
+
+ #ifdef CONFIG_SMP
+@@ -112,4 +114,5 @@
+ #define put_cpu() preempt_enable()
+ #define put_cpu_no_resched() preempt_enable_no_resched()
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_SMP_H */
+diff -ur linux-2.6.0/include/linux/spinlock.h linux-2.6.0/include/linux.gentoo/spinlock.h
+--- linux-2.6.0/include/linux/spinlock.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/spinlock.h 2003-12-27 19:19:31.000000000 +0000
+@@ -183,6 +183,7 @@
+ #define _raw_write_trylock(lock) ({ (void)(lock); (1); })
+
+ #endif /* !SMP */
++#ifdef __KERNEL__
+
+ /*
+ * Define the various spin_lock and rw_lock methods. Note we define these
+@@ -465,4 +466,5 @@
+ #endif
+ }
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_SPINLOCK_H */
+diff -ur linux-2.6.0/include/linux/time.h linux-2.6.0/include/linux.gentoo/time.h
+--- linux-2.6.0/include/linux/time.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/time.h 2003-12-27 19:19:31.000000000 +0000
+@@ -4,24 +4,31 @@
+ #include <asm/param.h>
+ #include <linux/types.h>
+
++#ifndef _SYS_TIME_H
+ #ifndef _STRUCT_TIMESPEC
++#ifndef __timespec_defined
+ #define _STRUCT_TIMESPEC
+ struct timespec {
+ time_t tv_sec; /* seconds */
+ long tv_nsec; /* nanoseconds */
+ };
++#endif /* __timespec_defined */
+ #endif /* _STRUCT_TIMESPEC */
+
++#ifndef _STRUCT_TIMEVAL
+ struct timeval {
+ time_t tv_sec; /* seconds */
+ suseconds_t tv_usec; /* microseconds */
+ };
++#endif /* _STRUCT_TIMEVAL */
+
+ struct timezone {
+ int tz_minuteswest; /* minutes west of Greenwich */
+ int tz_dsttime; /* type of dst correction */
+ };
+
++#endif /* _SYS_TIME_H */
++
+ #ifdef __KERNEL__
+
+ #include <linux/spinlock.h>
+@@ -281,6 +281,8 @@
+ * machines were long is 32-bit! (However, as time_t is signed, we
+ * will already get problems at other places on 2038-01-19 03:14:08)
+ */
++
++#ifndef _TIME_H
+ static inline unsigned long
+ mktime (unsigned int year, unsigned int mon,
+ unsigned int day, unsigned int hour,
+@@ -298,6 +300,7 @@
+ )*60 + min /* now have minutes */
+ )*60 + sec; /* finally seconds */
+ }
++#endif
+
+ extern struct timespec xtime;
+ extern struct timespec wall_to_monotonic;
+@@ -351,15 +358,19 @@
+ #define ITIMER_VIRTUAL 1
+ #define ITIMER_PROF 2
+
++#ifndef _TIME_H
+ struct itimerspec {
+ struct timespec it_interval; /* timer period */
+ struct timespec it_value; /* timer expiration */
+ };
++#endif /* _TIME_H */
+
++#ifndef _SYS_TIME_H
+ struct itimerval {
+ struct timeval it_interval; /* timer interval */
+ struct timeval it_value; /* current value */
+ };
++#endif /* _SYS_TIME_H */
+
+
+ /*
+diff -ur linux-2.6.0/include/linux/workqueue.h linux-2.6.0/include/linux.gentoo/workqueue.h
+--- linux-2.6.0/include/linux/workqueue.h 2003-12-27 19:22:38.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/workqueue.h 2003-12-27 19:19:31.000000000 +0000
+@@ -5,6 +5,8 @@
+ #ifndef _LINUX_WORKQUEUE_H
+ #define _LINUX_WORKQUEUE_H
+
++#ifdef __KERNEL__
++
+ #include <linux/timer.h>
+ #include <linux/linkage.h>
+
+@@ -73,5 +75,7 @@
+ return del_timer_sync(&work->timer);
+ }
+
++#endif /* __KERNEL__ */
++
+ #endif
+
+diff -ur linux-2.6.0/include/asm-i386/mpspec.h linux-2.6.0/include/asm-i386/mpspec.h
+--- linux-2.6.0/include/asm-i386/mpspec.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/mpspec.h 2004-01-19 20:01:11.000000000 +0000
+@@ -3,7 +3,7 @@
+
+ #include <linux/cpumask.h>
+ #include <asm/mpspec_def.h>
+-#include <mach_mpspec.h>
++#include <asm/mach-generic/mach_mpspec.h>
+
+ extern int mp_bus_id_to_type [MAX_MP_BUSSES];
+ extern int mp_bus_id_to_node [MAX_MP_BUSSES];
+diff -ur linux-2.6.0/include/asm-i386/processor.h linux-2.6.0/include/asm-i386/processor.h
+--- linux-2.6.0/include/asm-i386/processor.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/processor.h 2004-01-19 20:01:11.000000000 +0000
+@@ -8,7 +8,9 @@
+ #define __ASM_I386_PROCESSOR_H
+
+ #include <asm/vm86.h>
++#ifdef __KERNEL__
+ #include <asm/math_emu.h>
++#endif
+ #include <asm/segment.h>
+ #include <asm/page.h>
+ #include <asm/types.h>
+diff -ur linux-2.6.0/include/asm-i386/semaphore.h linux-2.6.0/include/asm-i386/semaphore.h
+--- linux-2.6.0/include/asm-i386/semaphore.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/semaphore.h 2004-01-19 20:01:11.000000000 +0000
+@@ -3,8 +3,6 @@
+
+ #include <linux/linkage.h>
+
+-#ifdef __KERNEL__
+-
+ /*
+ * SMP- and interrupt-safe semaphores..
+ *
+@@ -214,4 +212,3 @@
+ }
+
+ #endif
+-#endif
+diff -ur linux-2.6.0/include/asm-i386/signal.h linux-2.6.0/include/asm-i386/signal.h
+--- linux-2.6.0/include/asm-i386/signal.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/signal.h 2004-01-19 20:01:11.000000000 +0000
+@@ -26,7 +26,9 @@
+ /* Here we must cater to libcs that poke about in kernel headers. */
+
+ #define NSIG 32
++#ifndef __sigset_t_defined
+ typedef unsigned long sigset_t;
++#endif
+
+ #endif /* __KERNEL__ */
+
+@@ -155,6 +157,7 @@
+ #else
+ /* Here we must cater to libcs that poke about in kernel headers. */
+
++#ifndef _SIGNAL_H
+ struct sigaction {
+ union {
+ __sighandler_t _sa_handler;
+@@ -164,17 +167,20 @@
+ unsigned long sa_flags;
+ void (*sa_restorer)(void);
+ };
++#endif
+
+ #define sa_handler _u._sa_handler
+ #define sa_sigaction _u._sa_sigaction
+
+ #endif /* __KERNEL__ */
+
++#ifndef _SIGNAL_H
+ typedef struct sigaltstack {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
++#endif
+
+ #ifdef __KERNEL__
+ #include <asm/sigcontext.h>
+diff -ur linux-2.6.0/include/asm-i386/smp.h linux-2.6.0/include/asm-i386/smp.h
+--- linux-2.6.0/include/asm-i386/smp.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-i386/smp.h 2004-01-19 20:01:11.000000000 +0000
+@@ -70,7 +70,7 @@
+ #ifdef APIC_DEFINITION
+ extern int hard_smp_processor_id(void);
+ #else
+-#include <mach_apicdef.h>
++#include <asm/mach-generic/mach_apicdef.h>
+ static inline int hard_smp_processor_id(void)
+ {
+ /* we don't want to mark this access volatile - bad code generation */
+diff -ur linux-2.6.0/include/linux/types.h linux-2.6.0/include/linux.gentoo/types.h
+--- linux-2.6.0/include/linux/types.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/types.h 2004-01-19 20:01:11.000000000 +0000
+@@ -19,12 +19,24 @@
+
+ typedef __u32 __kernel_dev_t;
+
++#ifndef _SYS_SELECT_H
+ typedef __kernel_fd_set fd_set;
++#endif
++#ifndef __dev_t_defined
+ typedef __kernel_dev_t dev_t;
++#endif
++#ifndef __ino_t_defined
+ typedef __kernel_ino_t ino_t;
++#endif
++#ifndef __mode_t_defined
+ typedef __kernel_mode_t mode_t;
++#endif
++#ifndef __nlink_t_defined
+ typedef __kernel_nlink_t nlink_t;
++#endif
++#ifndef __off_t_defined
+ typedef __kernel_off_t off_t;
++#endif
+ typedef __kernel_pid_t pid_t;
+ typedef __kernel_daddr_t daddr_t;
+ typedef __kernel_key_t key_t;
+@@ -34,7 +46,9 @@
+
+ #ifdef __KERNEL__
+ typedef __kernel_uid32_t uid_t;
++#define __uid_t_defined
+ typedef __kernel_gid32_t gid_t;
++#define __gid_t_defined
+ typedef __kernel_uid16_t uid16_t;
+ typedef __kernel_gid16_t gid16_t;
+
+@@ -49,7 +63,9 @@
+ */
+ #else
+ typedef __kernel_uid_t uid_t;
++#define __uid_t_defined
+ typedef __kernel_gid_t gid_t;
++#define __gid_t_defined
+ #endif /* __KERNEL__ */
+
+ #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+diff -ur linux-2.6.0/include/asm-generic/siginfo.h linux-2.6.0/include/asm-generic/siginfo.h
+--- linux-2.6.0/include/asm-generic/siginfo.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/asm-generic/siginfo.h 2004-01-19 20:01:11.000000000 +0000
+@@ -4,10 +4,12 @@
+ #include <linux/compiler.h>
+ #include <linux/types.h>
+
++#ifndef _SIGNAL_H
+ typedef union sigval {
+ int sival_int;
+ void *sival_ptr;
+ } sigval_t;
++#endif
+
+ /*
+ * This is the size (including padding) of the part of the
+@@ -31,7 +33,7 @@
+ #endif
+
+ #ifndef HAVE_ARCH_SIGINFO_T
+-
++#ifndef _SIGNAL_H
+ typedef struct siginfo {
+ int si_signo;
+ int si_errno;
+@@ -86,7 +88,7 @@
+ } _sigpoll;
+ } _sifields;
+ } siginfo_t;
+-
++#endif
+ #endif
+
+ /*
+@@ -238,7 +240,7 @@
+ #endif
+
+ #ifndef HAVE_ARCH_SIGEVENT_T
+-
++#ifndef _SIGNAL_H
+ typedef struct sigevent {
+ sigval_t sigev_value;
+ int sigev_signo;
+@@ -253,7 +255,7 @@
+ } _sigev_thread;
+ } _sigev_un;
+ } sigevent_t;
+-
++#endif
+ #endif
+
+ #define sigev_notify_function _sigev_un._sigev_thread._function
+diff -ur linux-2.6.0/include/linux/jiffies.h linux-2.6.0/include/linux.gentoo/jiffies.h
+--- linux-2.6.0/include/linux/jiffies.h 2004-01-19 20:18:36.000000000 +0000
++++ linux-2.6.0/include/linux.gentoo/jiffies.h 2004-01-19 20:01:11.000000000 +0000
+@@ -13,15 +13,15 @@
+ * without holding read_lock_irq(&xtime_lock).
+ * get_jiffies_64() will do this for you as appropriate.
+ */
+-extern u64 jiffies_64;
++extern __u64 jiffies_64;
+ extern unsigned long volatile jiffies;
+
+ #if (BITS_PER_LONG < 64)
+-u64 get_jiffies_64(void);
++__u64 get_jiffies_64(void);
+ #else
+-static inline u64 get_jiffies_64(void)
++static inline __u64 get_jiffies_64(void)
+ {
+- return (u64)jiffies;
++ return (__u64)jiffies;
+ }
+ #endif
+
+diff -ur linux-2.6.7/include/linux/i2c.h linux-2.6.7-gentoo/include/linux/i2c.h
+--- linux-2.6.7/include/linux/i2c.h 2004-02-07 13:29:15.099504640 -0500
++++ linux-2.6.7-gentoo/include/linux/i2c.h 2004-02-07 13:35:53.956869104 -0500
+@@ -28,10 +28,18 @@
+ #ifndef _LINUX_I2C_H
+ #define _LINUX_I2C_H
+
+-#include <linux/module.h>
+-#include <linux/types.h>
++#ifdef __KERNEL__
++# include <linux/module.h>
++# include <linux/types.h>
++#else
++# define __KERNEL__
++# include <linux/types.h>
++# undef __KERNEL__
++#endif
+ #include <linux/i2c-id.h>
++#ifdef __KERNEL__
+ #include <linux/device.h> /* for struct device */
+ #include <asm/semaphore.h>
++#endif
+
+ /* --- General options ------------------------------------------------ */
+@@ -109,6 +117,7 @@
+ * events.
+ */
+
++#ifdef __KERNEL__
+ struct i2c_driver {
+ struct module *owner;
+ char name[32];
+@@ -268,6 +277,7 @@
+ {
+ dev_set_drvdata (&dev->dev, data);
+ }
++#endif
+
+ /*flags for the driver struct: */
+ #define I2C_DF_NOTIFY 0x01 /* notify on bus (de/a)ttaches */
+diff -ur linux-2.6.3/include/linux/usbdevice_fs.h linux-2.6.3/include/linux/usbdevice_fs.h
+--- linux-2.6.3/include/linux/usbdevice_fs.h 2004-02-22 16:52:07.000000000 +0000
++++ linux-2.6.3/include/linux/usbdevice_fs.h 2004-02-22 22:10:45.000000000 +0000
+@@ -31,6 +31,7 @@
+ #ifndef _LINUX_USBDEVICE_FS_H
+ #define _LINUX_USBDEVICE_FS_H
+
++#include <linux/compiler.h>
+ #include <linux/types.h>
+
+ /* --------------------------------------------------------------------- */
+
+diff -ur linux-2.6.4/include/asm-i386/ipc.h linux-2.6.4-gentoo/include/asm-i386/ipc.h
+--- linux-2.6.4/include/asm-i386/ipc.h 2004-03-13 13:05:04.000026816 +0000
++++ linux-2.6.4-gentoo/include/asm-i386/ipc.h 2004-03-13 13:11:56.486319368 +0000
+@@ -6,6 +6,8 @@
+ *
+ * See arch/i386/kernel/sys_i386.c for ugly details..
+ */
++
++#include <linux/compiler.h>
+ struct ipc_kludge {
+ struct msgbuf __user *msgp;
+ long msgtyp;
+diff -ur linux-2.6.4/include/linux/compiler-gcc3.h linux-2.6.4-gentoo/include/linux/compiler-gcc3.h
+--- linux-2.6.4/include/linux/compiler-gcc3.h 2004-03-13 13:04:57.718981680 +0000
++++ linux-2.6.4-gentoo/include/linux/compiler-gcc3.h 2004-03-13 13:15:55.937917192 +0000
+@@ -3,6 +3,8 @@
+ /* These definitions are for GCC v3.x. */
+ #include <linux/compiler-gcc.h>
+
++#ifdef __KERNEL__
++
+ #if __GNUC_MINOR__ >= 1
+ # define inline __inline__ __attribute__((always_inline))
+ # define __inline__ __inline__ __attribute__((always_inline))
+@@ -25,3 +27,5 @@
+ #if __GNUC_MINOR__ >= 1
+ #define noinline __attribute__((noinline))
+ #endif
++
++#endif /* __KERNEL__ */
+diff -ur linux-2.6.4/include/linux/mroute.h linux-2.6.4-gentoo/include/linux/mroute.h
+--- linux-2.6.4/include/linux/mroute.h 2004-03-13 13:04:54.084534200 +0000
++++ linux-2.6.4-gentoo/include/linux/mroute.h 2004-03-13 13:14:04.356880088 +0000
+@@ -1,6 +1,7 @@
+ #ifndef __LINUX_MROUTE_H
+ #define __LINUX_MROUTE_H
+
++#include <linux/types.h>
+ #include <linux/sockios.h>
+ #include <linux/in.h>
+
+diff -ur linux-2.6.6/include/asm-ppc/signal.h linux-2.6.6-gentoo/include/asm-ppc/signal.h
+--- linux-2.6.6/include/asm-ppc/signal.h 2004-06-02 18:30:17.329072696 +0100
++++ linux-2.6.6-gentoo/include/asm-ppc/signal.h 2004-06-02 18:35:04.093477880 +0100
+@@ -17,9 +17,11 @@
+
+ typedef unsigned long old_sigset_t; /* at least 32 bits */
+
++#ifndef __sigset_t_defined
+ typedef struct {
+ unsigned long sig[_NSIG_WORDS];
+ } sigset_t;
++#endif
+
+ #define SIGHUP 1
+ #define SIGINT 2
+@@ -125,28 +127,51 @@
+ #define SIG_ERR ((__sighandler_t)-1) /* error return from signal */
+
+ struct old_sigaction {
++#ifdef __USE_POSIX199309
++# ifdef sa_handler
++# undef sa_handler
++# endif
++# ifdef sa_sigaction
++# undef sa_sigaction
++# endif
++ union
++ {
++ /* Used if SA_SIGINFO is not set. */
++ __sighandler_t sa_handler;
++ /* Used if SA_SIGINFO is set. */
++ void (*sa_sigaction) (int, siginfo_t *, void *);
++ }
++ __sigaction_handler;
++# define sa_handler __sigaction_handler.sa_handler
++# define sa_sigaction __sigaction_handler.sa_sigaction
++#else
+ __sighandler_t sa_handler;
++#endif
+ old_sigset_t sa_mask;
+ unsigned long sa_flags;
+ void (*sa_restorer)(void);
+ };
+
++#ifndef _SIGNAL_H
+ struct sigaction {
+ __sighandler_t sa_handler;
+ unsigned long sa_flags;
+ void (*sa_restorer)(void);
+ sigset_t sa_mask; /* mask last for extensibility */
+ };
++#endif
+
+ struct k_sigaction {
+ struct sigaction sa;
+ };
+
++#ifndef _SIGNAL_H
+ typedef struct sigaltstack {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
++#endif
+
+ #ifdef __KERNEL__
+ #include <asm/sigcontext.h>
+diff -ur linux-2.6.6/include/asm-x86_64/processor.h linux-2.6.6-gentoo/include/asm-x86_64/processor.h
+--- linux-2.6.6/include/asm-x86_64/processor.h 2004-06-02 19:25:24.000000000 +0100
++++ linux-2.6.6-gentoo/include/asm-x86_64/processor.h 2004-06-02 19:24:31.000000000 +0100
+@@ -189,17 +189,17 @@
+ #define INVALID_IO_BITMAP_OFFSET 0x8000
+
+ struct i387_fxsave_struct {
+- u16 cwd;
+- u16 swd;
+- u16 twd;
+- u16 fop;
+- u64 rip;
+- u64 rdp;
+- u32 mxcsr;
+- u32 mxcsr_mask;
+- u32 st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
+- u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg = 128 bytes */
+- u32 padding[24];
++ __u16 cwd;
++ __u16 swd;
++ __u16 twd;
++ __u16 fop;
++ __u64 rip;
++ __u64 rdp;
++ __u32 mxcsr;
++ __u32 mxcsr_mask;
++ __u32 st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
++ __u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg = 128 bytes */
++ __u32 padding[24];
+ } __attribute__ ((aligned (16)));
+
+ union i387_union {
+@@ -207,16 +207,16 @@
+ };
+
+ struct tss_struct {
+- u32 reserved1;
+- u64 rsp0;
+- u64 rsp1;
+- u64 rsp2;
+- u64 reserved2;
+- u64 ist[7];
+- u32 reserved3;
+- u32 reserved4;
+- u16 reserved5;
+- u16 io_bitmap_base;
++ __u32 reserved1;
++ __u64 rsp0;
++ __u64 rsp1;
++ __u64 rsp2;
++ __u64 reserved2;
++ __u64 ist[7];
++ __u32 reserved3;
++ __u32 reserved4;
++ __u16 reserved5;
++ __u16 io_bitmap_base;
+ /*
+ * The extra 1 is there because the CPU will access an
+ * additional byte beyond the end of the IO permission
+@@ -252,7 +252,7 @@
+ int ioperm;
+ unsigned long *io_bitmap_ptr;
+ /* cached TLS descriptors. */
+- u64 tls_array[GDT_ENTRY_TLS_ENTRIES];
++ __u64 tls_array[GDT_ENTRY_TLS_ENTRIES];
+ } __attribute__((aligned(16)));
+
+ #define INIT_THREAD {}
+diff -ur linux-2.6.6/include/asm-x86_64/system.h linux-2.6.6-gentoo/include/asm-x86_64/system.h
+--- linux-2.6.6/include/asm-x86_64/system.h 2004-06-02 19:25:27.000000000 +0100
++++ linux-2.6.6-gentoo/include/asm-x86_64/system.h 2004-06-02 19:25:17.000000000 +0100
+@@ -5,6 +5,30 @@
+ #include <linux/kernel.h>
+ #include <asm/segment.h>
+
++/*
++ * Alternative inline assembly with input.
++ *
++ * Pecularities:
++ * No memory clobber here.
++ * Argument numbers start with 1.
++ * Best is to use constraints that are fixed size (like (%1) ... "r")
++ * If you use variable sized constraints like "m" or "g" in the
++ * replacement maake sure to pad to the worst case length.
++ */
++#define alternative_input(oldinstr, newinstr, feature, input) \
++ asm volatile ("661:\n\t" oldinstr "\n662:\n" \
++ ".section .altinstructions,\"a\"\n" \
++ " .align 8\n" \
++ " .quad 661b\n" /* label */ \
++ " .quad 663f\n" /* new instruction */ \
++ " .byte %c0\n" /* feature bit */ \
++ " .byte 662b-661b\n" /* sourcelen */ \
++ " .byte 664f-663f\n" /* replacementlen */ \
++ ".previous\n" \
++ ".section .altinstr_replacement,\"ax\"\n" \
++ "663:\n\t" newinstr "\n664:\n" /* replacement */ \
++ ".previous" :: "i" (feature), input)
++
+ #ifdef __KERNEL__
+
+ #ifdef CONFIG_SMP
+@@ -114,30 +138,6 @@
+ ".previous" :: "i" (feature) : "memory")
+
+ /*
+- * Alternative inline assembly with input.
+- *
+- * Pecularities:
+- * No memory clobber here.
+- * Argument numbers start with 1.
+- * Best is to use constraints that are fixed size (like (%1) ... "r")
+- * If you use variable sized constraints like "m" or "g" in the
+- * replacement maake sure to pad to the worst case length.
+- */
+-#define alternative_input(oldinstr, newinstr, feature, input) \
+- asm volatile ("661:\n\t" oldinstr "\n662:\n" \
+- ".section .altinstructions,\"a\"\n" \
+- " .align 8\n" \
+- " .quad 661b\n" /* label */ \
+- " .quad 663f\n" /* new instruction */ \
+- " .byte %c0\n" /* feature bit */ \
+- " .byte 662b-661b\n" /* sourcelen */ \
+- " .byte 664f-663f\n" /* replacementlen */ \
+- ".previous\n" \
+- ".section .altinstr_replacement,\"ax\"\n" \
+- "663:\n\t" newinstr "\n664:\n" /* replacement */ \
+- ".previous" :: "i" (feature), input)
+-
+-/*
+ * Clear and set 'TS' bit respectively
+ */
+ #define clts() __asm__ __volatile__ ("clts")
+diff -ur linux-2.6.6/include/linux/socket.h linux-2.6.6-gentoo/include/linux/socket.h
+--- linux-2.6.6/include/linux/socket.h 2004-05-25 17:47:07.000000000 +0100
++++ linux-2.6.6-gentoo/include/linux/socket.h 2004-06-02 21:19:49.000000000 +0100
+@@ -16,6 +16,10 @@
+ /* _SS_MAXSIZE value minus size of ss_family */
+ } __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */
+
++#ifndef _SYS_SOCKET_H
++typedef unsigned short sa_family_t;
++#endif
++
+ #if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
+
+ #include <linux/config.h> /* for CONFIG_COMPAT */
+@@ -26,8 +30,6 @@
+ #include <linux/types.h> /* pid_t */
+ #include <linux/compiler.h> /* __user */
+
+-typedef unsigned short sa_family_t;
+-
+ /*
+ * 1003.1g requires sa_family_t and that sa_data is char.
+ */
+diff -ur linux-2.6.6/include/linux/audit.h linux-2.6.6-gentoo/include/linux/audit.h
+--- linux-2.6.6/include/linux/audit.h 2004-05-25 17:47:07.000000000 +0100
++++ linux-2.6.6-gentoo/include/linux/audit.h 2004-06-02 21:19:21.000000000 +0100
+@@ -97,6 +97,7 @@
+ #define AUDIT_FAIL_PANIC 2
+
+ #ifndef __KERNEL__
++#include <linux/netlink.h>
+ struct audit_message {
+ struct nlmsghdr nlh;
+ char data[1200];
+diff -ur linux-2.6.6/include/asm-x86_64/sigcontext.h linux-2.6.6-gentoo/include/asm-x86_64/sigcontext.h
+--- linux-2.6.6/include/asm-x86_64/sigcontext.h 2004-05-25 17:47:07.000000000 +0100
++++ linux-2.6.6-gentoo/include/asm-x86_64/sigcontext.h 2004-06-02 22:04:52.000000000 +0100
+@@ -6,6 +6,8 @@
+ /* FXSAVE frame */
+ /* Note: reserved1/2 may someday contain valuable data. Always save/restore
+ them when you change signal frames. */
++
++#ifndef _SIGNAL_H
+ struct _fpstate {
+ __u16 cwd;
+ __u16 swd;
+@@ -52,3 +54,4 @@
+ };
+
+ #endif
++#endif
+diff -ur linux-2.6.6/include/linux/gfp.h linux-2.6.6-gentoo/include/linux/gfp.h
+--- linux-2.6.6/include/linux/gfp.h 2004-04-04 04:36:52.000000000 +0100
++++ linux-2.6.6-gentoo/include/linux/gfp.h 2004-05-11 19:51:06.412779200 +0100
+@@ -48,6 +48,7 @@
+
+ #define GFP_DMA __GFP_DMA
+
++#ifdef __KERNEL__
+
+ /*
+ * There is only one page-allocator function, and two main namespaces to
+@@ -96,4 +97,5 @@
+
+ void page_alloc_init(void);
+
++#endif /* __KERNEL__ */
+ #endif /* __LINUX_GFP_H */
+diff -ur linux-2.6.6/include/linux/percpu.h linux-2.6.6-gentoo/include/linux/percpu.h
+--- linux-2.6.6/include/linux/percpu.h 2004-04-04 04:38:14.000000000 +0100
++++ linux-2.6.6-gentoo/include/linux/percpu.h 2004-05-11 19:33:00.987788880 +0100
+@@ -1,5 +1,6 @@
+ #ifndef __LINUX_PERCPU_H
+ #define __LINUX_PERCPU_H
++#include <linux/gfp.h>
+ #include <linux/spinlock.h> /* For preempt_disable() */
+ #include <linux/slab.h> /* For kmalloc() */
+ #include <linux/smp.h>
+diff -ur linux-2.6.6/include/linux/percpu_counter.h linux-2.6.6-gentoo/include/linux/percpu_counter.h
+--- linux-2.6.6/include/linux/percpu_counter.h 2004-04-04 04:37:23.000000000 +0100
++++ linux-2.6.6-gentoo/include/linux/percpu_counter.h 2004-05-11 19:46:31.423583912 +0100
+@@ -4,6 +4,7 @@
+ * WARNING: these things are HUGE. 4 kbytes per counter on 32-way P4.
+ */
+
++#include <linux/preempt.h>
+ #include <linux/config.h>
+ #include <linux/spinlock.h>
+ #include <linux/smp.h>
+
+diff -ur linux-2.6.7/include/linux/list.h linux-2.6.7-gentoo/include/linux/list.h
+--- linux-2.6.7/include/linux/list.h 2004-06-18 18:09:41.000000000 +0100
++++ linux-2.6.7-gentoo/list.h 2004-06-18 18:35:51.994982432 +0100
+@@ -1,8 +1,6 @@
+ #ifndef _LINUX_LIST_H
+ #define _LINUX_LIST_H
+
+-#ifdef __KERNEL__
+-
+ #include <linux/stddef.h>
+ #include <linux/prefetch.h>
+ #include <asm/system.h>
+@@ -678,7 +676,5 @@
+ pos && ({ n = pos->next; 1; }) && \
+ ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
+ pos = n)
+-#else
+-#warning "don't include kernel headers in userspace"
+-#endif /* __KERNEL__ */
++
+ #endif
+diff -ur linux-2.6.7/include/linux/netfilter_ipv4/ip_tables.h linux-2.6.7-gentoo/netfilter_ipv4/ip_tables.h
+--- linux-2.6.7/include/linux/netfilter_ipv4/ip_tables.h 2004-06-16 06:19:29.000000000 +0100
++++ linux-2.6.7-gentoo/netfilter_ipv4/ip_tables.h 2004-06-18 18:24:58.310357600 +0100
+@@ -22,6 +22,10 @@
+ #include <linux/ip.h>
+ #include <linux/skbuff.h>
+ #endif
++#ifndef DECLARE_MUTEX
++# include <asm/semaphore.h>
++#endif
++#include <linux/compiler.h>
+ #include <linux/netfilter_ipv4.h>
+
+ #define IPT_FUNCTION_MAXNAMELEN 30
+diff -ur linux-2.6.7/include/linux/pid.h linux-2.6.7-gentoo/include/linux/pid.h
+--- linux-2.6.7/include/linux/pid.h 2004-06-16 06:19:02.000000000 +0100
++++ linux-2.6.7-gentoo/pid.h 2004-06-18 18:38:37.252859416 +0100
+@@ -1,6 +1,8 @@
+ #ifndef _LINUX_PID_H
+ #define _LINUX_PID_H
+
++#include <asm/atomic.h>
++
+ enum pid_type
+ {
+ PIDTYPE_PID,
+@@ -29,6 +31,8 @@
+ #define pid_task(elem, type) \
+ list_entry(elem, struct task_struct, pids[type].pid_chain)
+
++#ifdef __KERNEL__
++
+ /*
+ * attach_pid() and link_pid() must be called with the tasklist_lock
+ * write-held.
+@@ -61,4 +64,5 @@
+ elem = elem->next, prefetch(elem->next), \
+ task = pid_task(elem, type))
+
++#endif /* __KERNEL__ */
+ #endif /* _LINUX_PID_H */
+diff -ur linux-2.6.7/include/linux/netfilter_ipv6/ip6_tables.h linux-2.6.7/include/linux/netfilter_ipv6/ip6_tables.h
+--- linux-2.6.7/include/linux/netfilter_ipv6/ip6_tables.h 2004-06-16 06:20:04.000000000 +0100
++++ linux-2.6.7-gentoo/netfilter_ipv6/ip6_tables.h 2004-06-18 18:46:47.451337920 +0100
+@@ -22,6 +22,10 @@
+ #include <linux/ipv6.h>
+ #include <linux/skbuff.h>
+ #endif
++#ifndef DECLARE_MUTEX
++# include <asm/semaphore.h>
++#endif
++#include <linux/compiler.h>
+ #include <linux/netfilter_ipv6.h>
+
+ #define IP6T_FUNCTION_MAXNAMELEN 30
+diff -ur linux-2.6.7/include/linux/wait.h linux-2.6.7-gentoo/include/linux/wait.h
+--- linux-2.6.7/include/linux/wait.h 2004-06-16 06:19:31.000000000 +0100
++++ linux-2.6.7-gentoo/wait.h 2004-06-18 18:35:03.760315216 +0100
+@@ -8,10 +8,9 @@
+ #define __WALL 0x40000000 /* Wait on all children, regardless of type */
+ #define __WCLONE 0x80000000 /* Wait only on non-SIGCHLD children */
+
+-#ifdef __KERNEL__
+-
+ #include <linux/config.h>
+ #include <linux/list.h>
++#include <linux/pid.h>
+ #include <linux/stddef.h>
+ #include <linux/spinlock.h>
+ #include <asm/system.h>
+@@ -258,6 +257,4 @@
+ INIT_LIST_HEAD(&wait->task_list); \
+ } while (0)
+
+-#endif /* __KERNEL__ */
+-
+ #endif
+diff -ur linux-2.6.7/include/linux/fd.h linux-2.6.7-gentoo/include/linux/fd.h
+--- linux-2.6.7/include/linux/fd.h 2004-06-12 12:11:54.000000000 +0100
++++ linux-2.6.7-gentoo/include/linux/fd.h 2004-06-18 20:53:39.000000000 +0100
+@@ -1,6 +1,7 @@
+ #ifndef _LINUX_FD_H
+ #define _LINUX_FD_H
+
++#include <linux/compiler.h>
+ #include <linux/ioctl.h>
+
+ /* New file layout: Now the ioctl definitions immediately follow the
+diff -ur linux-2.6.7/include/linux/compiler.h linux-2.6.7-gentoo/include/linux/compiler.h
+--- linux-2.6.7/include/linux/compiler.h 2004-06-12 12:11:54.000000000 +0100
++++ linux-2.6.7-gentoo/include/linux/compiler.h 2004-06-24 09:48:32.478502752 +0100
+@@ -15,6 +15,18 @@
+ # define __chk_user_ptr(x) (void)0
+ #endif
+
++#if (__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
++#define inline __inline__
++#define __inline__ __inline__
++#define __inline __inline__
++#ifndef asm
++# define asm __asm__
++#endif
++#ifndef volatile
++# define volatile __volatile__
++#endif
++#endif
++
+ #ifdef __KERNEL__
+
+ #ifndef __ASSEMBLY__
diff --git a/sys-kernel/linux26-headers/linux26-headers-2.6.1.ebuild b/sys-kernel/linux26-headers/linux26-headers-2.6.1.ebuild
new file mode 100644
index 000000000000..bd1850ae1544
--- /dev/null
+++ b/sys-kernel/linux26-headers/linux26-headers-2.6.1.ebuild
@@ -0,0 +1,149 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/linux26-headers/linux26-headers-2.6.1.ebuild,v 1.1 2004/07/09 22:44:48 lv Exp $
+
+ETYPE="headers"
+inherit kernel eutils
+
+OKV="${PV/_/-}"
+KV="${OKV}"
+S=${WORKDIR}/linux-${OKV}
+EXTRAVERSION=""
+
+# What's in this kernel?
+
+# INCLUDED:
+# 1) linux sources from kernel.org
+
+DESCRIPTION="Linux ${OKV} headers from kernel.org"
+SRC_URI="mirror://kernel/linux/kernel/v2.6/linux-${OKV}.tar.bz2"
+HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/"
+LICENSE="GPL-2"
+SLOT="0"
+PROVIDE="virtual/kernel virtual/os-headers"
+KEYWORDS="-*"
+
+DEPEND="!virtual/os-headers"
+
+
+pkg_setup() {
+ # Figure out what architecture we are, and set ARCH appropriately
+ ARCH="$(uname -m)"
+ ARCH="$(echo ${ARCH} | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)"
+ [ "$ARCH" == "sparc" -a "$PROFILE_ARCH" == "sparc64" ] && ARCH=sparc64
+
+
+ # Archs which have their own separate header packages, add a check here
+ # and redirect the user to them
+ case "${ARCH}" in
+ mips|mips64|hppa)
+ eerror "These headers are not appropriate for your architecture."
+ eerror "Please use sys-kernel/${ARCH/64/}-headers instead."
+ die
+ ;;
+ esac
+}
+
+src_unpack() {
+
+ unpack ${A}
+ cd ${S}
+
+ # Do Stuff
+ kernel_universal_unpack
+
+ # User-space patches for various things
+ epatch ${FILESDIR}/${PN}-2.6.0-appCompat.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-strict-ansi-fix.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-sysctl_h-compat.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-fb.patch
+
+}
+
+src_compile() {
+
+ # Compile the default configuration
+ MY_ARCH=${ARCH}
+ unset ${ARCH}
+ make defconfig
+ ARCH=${MY_ARCH}
+
+ # If this is sparc, then generate asm_offsets.h
+ if use sparc; then
+ make ARCH=${ARCH} dep || die "Failed to run 'make dep'"
+ fi
+
+}
+
+src_install() {
+
+ # XXX Bug in Kernel.eclass requires this fix for now.
+ # XXX Remove when kernel.eclass is fixed.
+ # XXX 2.4 kernels symlink 'asm' to 'asm-${ARCH}' in include/
+ # XXX 2.6 kernels don't, however. So we fix this here so kernel.eclass can find the include/asm folder
+ if [ "`KV_to_int ${OKV}`" -ge "`KV_to_int 2.6.0`" ]; then
+ ln -sf ${S}/include/asm-${ARCH} ${S}/include/asm
+ fi
+
+
+ # Do normal src_install stuff
+ kernel_src_install
+
+ # If this is sparc, then we need to place asm_offsets.h in the proper location(s)
+ if use sparc; then
+
+ # We don't need /usr/include/asm, generate-asm-sparc will take care of this
+ rm -Rf ${D}/usr/include/asm
+
+ # We do need empty directories, though...
+ dodir /usr/include/asm
+ dodir /usr/include/asm-sparc
+
+ # Copy asm-sparc
+ cp -ax ${S}/include/asm-sparc/* ${D}/usr/include/asm-sparc
+
+ # If this is sparc64, then we need asm-sparc64 stuff too
+ if [ "${PROFILE_ARCH}" = "sparc64" ]; then
+ dodir /usr/include/asm-sparc64
+ cp -ax ${S}/include/asm-sparc64/* ${D}/usr/include/asm-sparc64
+ fi
+
+ # Check if generate-asm-sparc exists
+ if [ -a "${FILESDIR}/generate-asm-sparc" ]; then
+
+ # Copy generate-asm-sparc into the sandox
+ cp ${FILESDIR}/generate-asm-sparc ${WORKDIR}/generate-asm-sparc
+
+ # Just in case generate-asm-sparc isn't executable, make it so
+ if [ ! -x "${WORKDIR}/generate-asm-sparc" ]; then
+ chmod +x ${WORKDIR}/generate-asm-sparc
+ fi
+
+ # Generate /usr/include/asm for sparc systems
+ ${WORKDIR}/generate-asm-sparc ${D}/usr/include
+ else
+ eerror "${FILESDIR}/generate-asm-sparc doesn't exist!"
+ die
+ fi
+ fi
+
+ # If this is 2.5 or 2.6 headers, then we need asm-generic too
+ if [ "`KV_to_int ${OKV}`" -ge "`KV_to_int 2.6.0`" ]; then
+ dodir /usr/include/asm-generic
+ cp -ax ${S}/include/asm-generic/* ${D}/usr/include/asm-generic
+ fi
+}
+
+pkg_preinst() {
+ kernel_pkg_preinst
+}
+
+pkg_postinst() {
+ kernel_pkg_postinst
+
+ einfo "Kernel headers are usually only used when recompiling glibc, as such, following the installation"
+ einfo "of newer headers, it is advised that you re-merge glibc as follows:"
+ einfo "emerge glibc"
+ einfo "Failure to do so will cause glibc to not make use of newer features present in the updated kernel"
+ einfo "headers."
+}
diff --git a/sys-kernel/linux26-headers/linux26-headers-2.6.3-r1.ebuild b/sys-kernel/linux26-headers/linux26-headers-2.6.3-r1.ebuild
new file mode 100644
index 000000000000..1d9adc477888
--- /dev/null
+++ b/sys-kernel/linux26-headers/linux26-headers-2.6.3-r1.ebuild
@@ -0,0 +1,145 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/linux26-headers/linux26-headers-2.6.3-r1.ebuild,v 1.1 2004/07/09 22:44:48 lv Exp $
+
+ETYPE="headers"
+inherit kernel eutils
+
+OKV="${PV/_/-}"
+KV="${OKV}"
+S=${WORKDIR}/linux-${OKV}
+EXTRAVERSION=""
+
+# What's in this kernel?
+
+# INCLUDED:
+# 1) linux sources from kernel.org
+
+DESCRIPTION="Linux ${OKV} headers from kernel.org"
+SRC_URI="mirror://kernel/linux/kernel/v2.6/linux-${OKV}.tar.bz2"
+HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/"
+LICENSE="GPL-2"
+SLOT="0"
+PROVIDE="virtual/kernel virtual/os-headers"
+KEYWORDS="-*"
+
+DEPEND="!virtual/os-headers"
+
+
+pkg_setup() {
+ # Figure out what architecture we are, and set ARCH appropriately
+ ARCH="$(uname -m)"
+ ARCH="$(echo ${ARCH} | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)"
+ [ "$ARCH" == "sparc" -a "$PROFILE_ARCH" == "sparc64" ] && ARCH=sparc64
+
+
+ # Archs which have their own separate header packages, add a check here
+ # and redirect the user to them
+ case "${ARCH}" in
+ mips|mips64|hppa)
+ eerror "These headers are not appropriate for your architecture."
+ eerror "Please use sys-kernel/${ARCH/64/}-headers instead."
+ die
+ ;;
+ esac
+}
+
+src_unpack() {
+
+ unpack ${A}
+ cd ${S}
+
+ # Do Stuff
+ kernel_universal_unpack
+
+ # User-space patches for various things
+ epatch ${FILESDIR}/${P}-appCompat.patch
+ epatch ${FILESDIR}/${P}-strict-ansi-fix.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-sysctl_h-compat.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-fb.patch
+
+}
+
+src_compile() {
+
+ # Compile the default configuration
+ MY_ARCH=${ARCH}
+ unset ${ARCH}
+ make defconfig
+ ARCH=${MY_ARCH}
+
+ # If this is sparc, then generate asm_offsets.h
+ if use sparc; then
+ make ARCH=${ARCH} dep || die "Failed to run 'make dep'"
+ fi
+
+}
+
+src_install() {
+
+ # XXX Bug in Kernel.eclass requires this fix for now.
+ # XXX Remove when kernel.eclass is fixed.
+ # XXX 2.4 kernels symlink 'asm' to 'asm-${ARCH}' in include/
+ # XXX 2.6 kernels don't, however. So we fix this here so kernel.eclass can find the include/asm folder
+ if [ "`KV_to_int ${OKV}`" -ge "`KV_to_int 2.6.0`" ]; then
+ ln -sf ${S}/include/asm-${ARCH} ${S}/include/asm
+ fi
+
+
+ # Do normal src_install stuff
+ kernel_src_install
+
+ # If this is sparc, then we need to place asm_offsets.h in the proper location(s)
+ if [ "${PROFILE_ARCH}" = "sparc64" ]; then
+
+ # We don't need /usr/include/asm, generate-asm-sparc will take care of this
+ rm -Rf ${D}/usr/include/asm
+
+ # We do need empty directories, though...
+ dodir /usr/include/asm
+ dodir /usr/include/asm-sparc
+ dodir /usr/include/asm-sparc64
+
+ # Copy asm-sparc and asm-sparc64
+ cp -ax ${S}/include/asm-sparc/* ${D}/usr/include/asm-sparc
+ cp -ax ${S}/include/asm-sparc64/* ${D}/usr/include/asm-sparc64
+
+ # Check if generate-asm-sparc exists
+ if [ -a "${FILESDIR}/generate-asm-sparc" ]; then
+
+ # Copy generate-asm-sparc into the sandox
+ cp ${FILESDIR}/generate-asm-sparc ${WORKDIR}/generate-asm-sparc
+
+ # Just in case generate-asm-sparc isn't executable, make it so
+ if [ ! -x "${WORKDIR}/generate-asm-sparc" ]; then
+ chmod +x ${WORKDIR}/generate-asm-sparc
+ fi
+
+ # Generate /usr/include/asm for sparc systems
+ ${WORKDIR}/generate-asm-sparc ${D}/usr/include
+ else
+ eerror "${FILESDIR}/generate-asm-sparc doesn't exist!"
+ die
+ fi
+ fi
+
+ # If this is 2.5 or 2.6 headers, then we need asm-generic too
+ if [ "`KV_to_int ${OKV}`" -ge "`KV_to_int 2.6.0`" ]; then
+ dodir /usr/include/asm-generic
+ cp -ax ${S}/include/asm-generic/* ${D}/usr/include/asm-generic
+ fi
+}
+
+pkg_preinst() {
+ kernel_pkg_preinst
+}
+
+pkg_postinst() {
+ kernel_pkg_postinst
+
+ einfo "Kernel headers are usually only used when recompiling glibc, as such, following the installation"
+ einfo "of newer headers, it is advised that you re-merge glibc as follows:"
+ einfo "emerge glibc"
+ einfo "Failure to do so will cause glibc to not make use of newer features present in the updated kernel"
+ einfo "headers."
+}
diff --git a/sys-kernel/linux26-headers/linux26-headers-2.6.4.ebuild b/sys-kernel/linux26-headers/linux26-headers-2.6.4.ebuild
new file mode 100644
index 000000000000..2dd12aff96f6
--- /dev/null
+++ b/sys-kernel/linux26-headers/linux26-headers-2.6.4.ebuild
@@ -0,0 +1,150 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/linux26-headers/linux26-headers-2.6.4.ebuild,v 1.1 2004/07/09 22:44:48 lv Exp $
+
+ETYPE="headers"
+inherit kernel eutils
+
+OKV="${PV/_/-}"
+KV="${OKV}"
+S=${WORKDIR}/linux-${OKV}
+EXTRAVERSION=""
+
+# What's in this kernel?
+
+# INCLUDED:
+# 1) linux sources from kernel.org
+
+DESCRIPTION="Linux ${OKV} headers from kernel.org"
+SRC_URI="mirror://kernel/linux/kernel/v2.6/linux-${OKV}.tar.bz2"
+HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/"
+LICENSE="GPL-2"
+SLOT="0"
+PROVIDE="virtual/kernel virtual/os-headers"
+KEYWORDS="-*"
+
+DEPEND="!virtual/os-headers"
+
+
+pkg_setup() {
+ # Figure out what architecture we are, and set ARCH appropriately
+ ARCH="$(uname -m)"
+ ARCH="$(echo ${ARCH} | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)"
+ [ "$ARCH" == "sparc" -a "$PROFILE_ARCH" == "sparc64" ] && ARCH=sparc64
+
+
+ # Archs which have their own separate header packages, add a check here
+ # and redirect the user to them
+ case "${ARCH}" in
+ mips|mips64|hppa)
+ eerror "These headers are not appropriate for your architecture."
+ eerror "Please use sys-kernel/${ARCH/64/}-headers instead."
+ die
+ ;;
+ esac
+}
+
+src_unpack() {
+
+ unpack ${A}
+ cd ${S}
+
+ # Do Stuff
+ kernel_universal_unpack
+
+ # User-space patches for various things
+ epatch ${FILESDIR}/${P}-appCompat.patch
+ epatch ${FILESDIR}/${PN}-2.6.3-strict-ansi-fix.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-sysctl_h-compat.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-fb.patch
+
+ # Needed to compile NPTL on amd64
+ if use amd64; then
+ cd ${S}/include/asm-x86_64/
+ epatch ${FILESDIR}/${PN}-2.6.4-unistd-nptl-fix.patch
+ fi
+}
+
+src_compile() {
+
+ # Compile the default configuration
+ MY_ARCH=${ARCH}
+ unset ${ARCH}
+ make defconfig
+ ARCH=${MY_ARCH}
+
+ # If this is sparc, then generate asm_offsets.h
+ if use sparc; then
+ make ARCH=${ARCH} dep || die "Failed to run 'make dep'"
+ fi
+
+}
+
+src_install() {
+
+ # XXX Bug in Kernel.eclass requires this fix for now.
+ # XXX Remove when kernel.eclass is fixed.
+ # XXX 2.4 kernels symlink 'asm' to 'asm-${ARCH}' in include/
+ # XXX 2.6 kernels don't, however. So we fix this here so kernel.eclass can find the include/asm folder
+ if [ "`KV_to_int ${OKV}`" -ge "`KV_to_int 2.6.0`" ]; then
+ ln -sf ${S}/include/asm-${ARCH} ${S}/include/asm
+ fi
+
+
+ # Do normal src_install stuff
+ kernel_src_install
+
+ # If this is sparc, then we need to place asm_offsets.h in the proper location(s)
+ if [ "${PROFILE_ARCH}" = "sparc64" ]; then
+
+ # We don't need /usr/include/asm, generate-asm-sparc will take care of this
+ rm -Rf ${D}/usr/include/asm
+
+ # We do need empty directories, though...
+ dodir /usr/include/asm
+ dodir /usr/include/asm-sparc
+ dodir /usr/include/asm-sparc64
+
+ # Copy asm-sparc and asm-sparc64
+ cp -ax ${S}/include/asm-sparc/* ${D}/usr/include/asm-sparc
+ cp -ax ${S}/include/asm-sparc64/* ${D}/usr/include/asm-sparc64
+
+ # Check if generate-asm-sparc exists
+ if [ -a "${FILESDIR}/generate-asm-sparc" ]; then
+
+ # Copy generate-asm-sparc into the sandox
+ cp ${FILESDIR}/generate-asm-sparc ${WORKDIR}/generate-asm-sparc
+
+ # Just in case generate-asm-sparc isn't executable, make it so
+ if [ ! -x "${WORKDIR}/generate-asm-sparc" ]; then
+ chmod +x ${WORKDIR}/generate-asm-sparc
+ fi
+
+ # Generate /usr/include/asm for sparc systems
+ ${WORKDIR}/generate-asm-sparc ${D}/usr/include
+ else
+ eerror "${FILESDIR}/generate-asm-sparc doesn't exist!"
+ die
+ fi
+ fi
+
+ # If this is 2.5 or 2.6 headers, then we need asm-generic too
+ if [ "`KV_to_int ${OKV}`" -ge "`KV_to_int 2.6.0`" ]; then
+ dodir /usr/include/asm-generic
+ cp -ax ${S}/include/asm-generic/* ${D}/usr/include/asm-generic
+ fi
+}
+
+pkg_preinst() {
+ kernel_pkg_preinst
+}
+
+pkg_postinst() {
+ kernel_pkg_postinst
+
+ einfo "Kernel headers are usually only used when recompiling glibc, as such, following the installation"
+ einfo "of newer headers, it is advised that you re-merge glibc as follows:"
+ einfo "emerge glibc"
+ einfo "Failure to do so will cause glibc to not make use of newer features present in the updated kernel"
+ einfo "headers."
+}
diff --git a/sys-kernel/linux26-headers/linux26-headers-2.6.5.ebuild b/sys-kernel/linux26-headers/linux26-headers-2.6.5.ebuild
new file mode 100644
index 000000000000..47ee4fe004c5
--- /dev/null
+++ b/sys-kernel/linux26-headers/linux26-headers-2.6.5.ebuild
@@ -0,0 +1,150 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/linux26-headers/linux26-headers-2.6.5.ebuild,v 1.1 2004/07/09 22:44:48 lv Exp $
+
+ETYPE="headers"
+inherit kernel eutils
+
+OKV="${PV/_/-}"
+KV="${OKV}"
+S=${WORKDIR}/linux-${OKV}
+EXTRAVERSION=""
+
+# What's in this kernel?
+
+# INCLUDED:
+# 1) linux sources from kernel.org
+
+DESCRIPTION="Linux ${OKV} headers from kernel.org"
+SRC_URI="mirror://kernel/linux/kernel/v2.6/linux-${OKV}.tar.bz2"
+HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/"
+LICENSE="GPL-2"
+SLOT="0"
+PROVIDE="virtual/kernel virtual/os-headers"
+KEYWORDS="-* arm"
+
+DEPEND="!virtual/os-headers"
+
+
+pkg_setup() {
+ # Figure out what architecture we are, and set ARCH appropriately
+ ARCH="$(uname -m)"
+ ARCH="$(echo ${ARCH} | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)"
+ [ "$ARCH" == "sparc" -a "$PROFILE_ARCH" == "sparc64" ] && ARCH=sparc64
+
+
+ # Archs which have their own separate header packages, add a check here
+ # and redirect the user to them
+ case "${ARCH}" in
+ mips|mips64|hppa)
+ eerror "These headers are not appropriate for your architecture."
+ eerror "Please use sys-kernel/${ARCH/64/}-headers instead."
+ die
+ ;;
+ esac
+}
+
+src_unpack() {
+
+ unpack ${A}
+ cd ${S}
+
+ # Do Stuff
+ kernel_universal_unpack
+
+ # User-space patches for various things
+ epatch ${FILESDIR}/${PN}-2.6.4-appCompat.patch
+ epatch ${FILESDIR}/${PN}-2.6.3-strict-ansi-fix.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-sysctl_h-compat.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-fb.patch
+
+ # Needed to compile NPTL on amd64
+ if use amd64; then
+ cd ${S}/include/asm-x86_64/
+ epatch ${FILESDIR}/${PN}-2.6.4-unistd-nptl-fix.patch
+ fi
+}
+
+src_compile() {
+
+ # Compile the default configuration
+ MY_ARCH=${ARCH}
+ unset ${ARCH}
+ make defconfig
+ ARCH=${MY_ARCH}
+
+ # If this is sparc, then generate asm_offsets.h
+ if use sparc; then
+ make ARCH=${ARCH} dep || die "Failed to run 'make dep'"
+ fi
+
+}
+
+src_install() {
+
+ # XXX Bug in Kernel.eclass requires this fix for now.
+ # XXX Remove when kernel.eclass is fixed.
+ # XXX 2.4 kernels symlink 'asm' to 'asm-${ARCH}' in include/
+ # XXX 2.6 kernels don't, however. So we fix this here so kernel.eclass can find the include/asm folder
+ if [ "`KV_to_int ${OKV}`" -ge "`KV_to_int 2.6.0`" ]; then
+ ln -sf ${S}/include/asm-${ARCH} ${S}/include/asm
+ fi
+
+
+ # Do normal src_install stuff
+ kernel_src_install
+
+ # If this is sparc, then we need to place asm_offsets.h in the proper location(s)
+ if [ "${PROFILE_ARCH}" = "sparc64" ]; then
+
+ # We don't need /usr/include/asm, generate-asm-sparc will take care of this
+ rm -Rf ${D}/usr/include/asm
+
+ # We do need empty directories, though...
+ dodir /usr/include/asm
+ dodir /usr/include/asm-sparc
+ dodir /usr/include/asm-sparc64
+
+ # Copy asm-sparc and asm-sparc64
+ cp -ax ${S}/include/asm-sparc/* ${D}/usr/include/asm-sparc
+ cp -ax ${S}/include/asm-sparc64/* ${D}/usr/include/asm-sparc64
+
+ # Check if generate-asm-sparc exists
+ if [ -a "${FILESDIR}/generate-asm-sparc" ]; then
+
+ # Copy generate-asm-sparc into the sandox
+ cp ${FILESDIR}/generate-asm-sparc ${WORKDIR}/generate-asm-sparc
+
+ # Just in case generate-asm-sparc isn't executable, make it so
+ if [ ! -x "${WORKDIR}/generate-asm-sparc" ]; then
+ chmod +x ${WORKDIR}/generate-asm-sparc
+ fi
+
+ # Generate /usr/include/asm for sparc systems
+ ${WORKDIR}/generate-asm-sparc ${D}/usr/include
+ else
+ eerror "${FILESDIR}/generate-asm-sparc doesn't exist!"
+ die
+ fi
+ fi
+
+ # If this is 2.5 or 2.6 headers, then we need asm-generic too
+ if [ "`KV_to_int ${OKV}`" -ge "`KV_to_int 2.6.0`" ]; then
+ dodir /usr/include/asm-generic
+ cp -ax ${S}/include/asm-generic/* ${D}/usr/include/asm-generic
+ fi
+}
+
+pkg_preinst() {
+ kernel_pkg_preinst
+}
+
+pkg_postinst() {
+ kernel_pkg_postinst
+
+ einfo "Kernel headers are usually only used when recompiling glibc, as such, following the installation"
+ einfo "of newer headers, it is advised that you re-merge glibc as follows:"
+ einfo "emerge glibc"
+ einfo "Failure to do so will cause glibc to not make use of newer features present in the updated kernel"
+ einfo "headers."
+}
diff --git a/sys-kernel/linux26-headers/linux26-headers-2.6.6-r1.ebuild b/sys-kernel/linux26-headers/linux26-headers-2.6.6-r1.ebuild
new file mode 100644
index 000000000000..2f228f11ccaf
--- /dev/null
+++ b/sys-kernel/linux26-headers/linux26-headers-2.6.6-r1.ebuild
@@ -0,0 +1,152 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/linux26-headers/linux26-headers-2.6.6-r1.ebuild,v 1.1 2004/07/09 22:44:48 lv Exp $
+
+ETYPE="headers"
+inherit kernel eutils
+
+OKV="${PV/_/-}"
+KV="${OKV}"
+S=${WORKDIR}/linux-${OKV}
+EXTRAVERSION=""
+
+# What's in this kernel?
+
+# INCLUDED:
+# 1) linux sources from kernel.org
+
+DESCRIPTION="Linux ${OKV} headers from kernel.org"
+SRC_URI="mirror://kernel/linux/kernel/v2.6/linux-${OKV}.tar.bz2"
+HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/"
+LICENSE="GPL-2"
+SLOT="0"
+PROVIDE="virtual/kernel virtual/os-headers"
+KEYWORDS="-* arm amd64"
+
+DEPEND="!virtual/os-headers"
+
+pkg_setup() {
+ # Figure out what architecture we are, and set ARCH appropriately
+ ARCH="$(uname -m)"
+ ARCH="$(echo ${ARCH} | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)"
+ [ "$ARCH" == "sparc" -a "$PROFILE_ARCH" == "sparc64" ] && ARCH=sparc64
+
+ # Archs which have their own separate header packages, add a check here
+ # and redirect the user to them
+ case "${ARCH}" in
+ mips|mips64)
+ eerror "These headers are not appropriate for your architecture."
+ eerror "Please use sys-kernel/${ARCH/64/}-headers instead."
+ die
+ ;;
+ esac
+}
+
+src_unpack() {
+
+ unpack ${A}
+ cd ${S}
+
+ # Do Stuff
+ kernel_universal_unpack
+
+ # User-space patches for various things
+ epatch ${FILESDIR}/${PN}-2.6.6-appCompat.patch
+ epatch ${FILESDIR}/${PN}-2.6.3-strict-ansi-fix.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-sysctl_h-compat.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-fb.patch
+
+ # Needed to compile NPTL on amd64
+ if use amd64; then
+ cd ${S}/include/asm-x86_64/
+ epatch ${FILESDIR}/${PN}-2.6.4-unistd-nptl-fix.patch
+ cd ${S}
+ fi
+
+ # 2.6.7 structure change backport to get iproute2 to compile on
+ # 2.6.6 headers
+
+ epatch ${FILESDIR}/${P}-tcp_info-DRS-backport.patch
+}
+
+src_compile() {
+
+ # Compile the default configuration
+ MY_ARCH=${ARCH}
+ unset ${ARCH}
+ make defconfig
+ ARCH=${MY_ARCH}
+
+ # If this is sparc, then generate asm_offsets.h
+ if use sparc; then
+ make ARCH=${ARCH} dep || die "Failed to run 'make dep'"
+ fi
+
+}
+
+src_install() {
+ # XXX Bug in Kernel.eclass requires this fix for now.
+ # XXX Remove when kernel.eclass is fixed.
+ # XXX 2.4 kernels symlink 'asm' to 'asm-${ARCH}' in include/
+ # XXX 2.6 kernels don't, however. So we fix this here so kernel.eclass can find the include/asm folder
+ if [ "`KV_to_int ${OKV}`" -ge "`KV_to_int 2.6.0`" ]; then
+ ln -sf ${S}/include/asm-${ARCH} ${S}/include/asm
+ fi
+
+ # Do normal src_install stuff
+ kernel_src_install
+
+ # If this is sparc, then we need to place asm_offsets.h in the proper location(s)
+ if [ "${PROFILE_ARCH}" = "sparc64" ]; then
+
+ # We don't need /usr/include/asm, generate-asm-sparc will take care of this
+ rm -Rf ${D}/usr/include/asm
+
+ # We do need empty directories, though...
+ dodir /usr/include/asm
+ dodir /usr/include/asm-sparc
+ dodir /usr/include/asm-sparc64
+
+ # Copy asm-sparc and asm-sparc64
+ cp -ax ${S}/include/asm-sparc/* ${D}/usr/include/asm-sparc
+ cp -ax ${S}/include/asm-sparc64/* ${D}/usr/include/asm-sparc64
+
+ # Check if generate-asm-sparc exists
+ if [ -a "${FILESDIR}/generate-asm-sparc" ]; then
+
+ # Copy generate-asm-sparc into the sandox
+ cp ${FILESDIR}/generate-asm-sparc ${WORKDIR}/generate-asm-sparc
+
+ # Just in case generate-asm-sparc isn't executable, make it so
+ if [ ! -x "${WORKDIR}/generate-asm-sparc" ]; then
+ chmod +x ${WORKDIR}/generate-asm-sparc
+ fi
+
+ # Generate /usr/include/asm for sparc systems
+ ${WORKDIR}/generate-asm-sparc ${D}/usr/include
+ else
+ eerror "${FILESDIR}/generate-asm-sparc doesn't exist!"
+ die
+ fi
+ fi
+
+ # If this is 2.5 or 2.6 headers, then we need asm-generic too
+ if [ "`KV_to_int ${OKV}`" -ge "`KV_to_int 2.6.0`" ]; then
+ dodir /usr/include/asm-generic
+ cp -ax ${S}/include/asm-generic/* ${D}/usr/include/asm-generic
+ fi
+}
+
+pkg_preinst() {
+ kernel_pkg_preinst
+}
+
+pkg_postinst() {
+ kernel_pkg_postinst
+
+ einfo "Kernel headers are usually only used when recompiling glibc, as such, following the installation"
+ einfo "of newer headers, it is advised that you re-merge glibc as follows:"
+ einfo "emerge glibc"
+ einfo "Failure to do so will cause glibc to not make use of newer features present in the updated kernel"
+ einfo "headers."
+}
diff --git a/sys-kernel/linux26-headers/linux26-headers-2.6.6.ebuild b/sys-kernel/linux26-headers/linux26-headers-2.6.6.ebuild
new file mode 100644
index 000000000000..c44785253a67
--- /dev/null
+++ b/sys-kernel/linux26-headers/linux26-headers-2.6.6.ebuild
@@ -0,0 +1,146 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/linux26-headers/linux26-headers-2.6.6.ebuild,v 1.1 2004/07/09 22:44:48 lv Exp $
+
+ETYPE="headers"
+inherit kernel eutils
+
+OKV="${PV/_/-}"
+KV="${OKV}"
+S=${WORKDIR}/linux-${OKV}
+EXTRAVERSION=""
+
+# What's in this kernel?
+
+# INCLUDED:
+# 1) linux sources from kernel.org
+
+DESCRIPTION="Linux ${OKV} headers from kernel.org"
+SRC_URI="mirror://kernel/linux/kernel/v2.6/linux-${OKV}.tar.bz2"
+HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/"
+LICENSE="GPL-2"
+SLOT="0"
+PROVIDE="virtual/kernel virtual/os-headers"
+KEYWORDS="-* arm amd64"
+
+DEPEND="!virtual/os-headers"
+
+pkg_setup() {
+ # Figure out what architecture we are, and set ARCH appropriately
+ ARCH="$(uname -m)"
+ ARCH="$(echo ${ARCH} | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)"
+ [ "$ARCH" == "sparc" -a "$PROFILE_ARCH" == "sparc64" ] && ARCH=sparc64
+
+ # Archs which have their own separate header packages, add a check here
+ # and redirect the user to them
+ case "${ARCH}" in
+ mips|mips64)
+ eerror "These headers are not appropriate for your architecture."
+ eerror "Please use sys-kernel/${ARCH/64/}-headers instead."
+ die
+ ;;
+ esac
+}
+
+src_unpack() {
+
+ unpack ${A}
+ cd ${S}
+
+ # Do Stuff
+ kernel_universal_unpack
+
+ # User-space patches for various things
+ epatch ${FILESDIR}/${PN}-2.6.6-appCompat.patch
+ epatch ${FILESDIR}/${PN}-2.6.3-strict-ansi-fix.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-sysctl_h-compat.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-fb.patch
+
+ # Needed to compile NPTL on amd64
+ if use amd64; then
+ cd ${S}/include/asm-x86_64/
+ epatch ${FILESDIR}/${PN}-2.6.4-unistd-nptl-fix.patch
+ fi
+}
+
+src_compile() {
+
+ # Compile the default configuration
+ MY_ARCH=${ARCH}
+ unset ${ARCH}
+ make defconfig
+ ARCH=${MY_ARCH}
+
+ # If this is sparc, then generate asm_offsets.h
+ if use sparc; then
+ make ARCH=${ARCH} dep || die "Failed to run 'make dep'"
+ fi
+
+}
+
+src_install() {
+ # XXX Bug in Kernel.eclass requires this fix for now.
+ # XXX Remove when kernel.eclass is fixed.
+ # XXX 2.4 kernels symlink 'asm' to 'asm-${ARCH}' in include/
+ # XXX 2.6 kernels don't, however. So we fix this here so kernel.eclass can find the include/asm folder
+ if [ "`KV_to_int ${OKV}`" -ge "`KV_to_int 2.6.0`" ]; then
+ ln -sf ${S}/include/asm-${ARCH} ${S}/include/asm
+ fi
+
+ # Do normal src_install stuff
+ kernel_src_install
+
+ # If this is sparc, then we need to place asm_offsets.h in the proper location(s)
+ if [ "${PROFILE_ARCH}" = "sparc64" ]; then
+
+ # We don't need /usr/include/asm, generate-asm-sparc will take care of this
+ rm -Rf ${D}/usr/include/asm
+
+ # We do need empty directories, though...
+ dodir /usr/include/asm
+ dodir /usr/include/asm-sparc
+ dodir /usr/include/asm-sparc64
+
+ # Copy asm-sparc and asm-sparc64
+ cp -ax ${S}/include/asm-sparc/* ${D}/usr/include/asm-sparc
+ cp -ax ${S}/include/asm-sparc64/* ${D}/usr/include/asm-sparc64
+
+ # Check if generate-asm-sparc exists
+ if [ -a "${FILESDIR}/generate-asm-sparc" ]; then
+
+ # Copy generate-asm-sparc into the sandox
+ cp ${FILESDIR}/generate-asm-sparc ${WORKDIR}/generate-asm-sparc
+
+ # Just in case generate-asm-sparc isn't executable, make it so
+ if [ ! -x "${WORKDIR}/generate-asm-sparc" ]; then
+ chmod +x ${WORKDIR}/generate-asm-sparc
+ fi
+
+ # Generate /usr/include/asm for sparc systems
+ ${WORKDIR}/generate-asm-sparc ${D}/usr/include
+ else
+ eerror "${FILESDIR}/generate-asm-sparc doesn't exist!"
+ die
+ fi
+ fi
+
+ # If this is 2.5 or 2.6 headers, then we need asm-generic too
+ if [ "`KV_to_int ${OKV}`" -ge "`KV_to_int 2.6.0`" ]; then
+ dodir /usr/include/asm-generic
+ cp -ax ${S}/include/asm-generic/* ${D}/usr/include/asm-generic
+ fi
+}
+
+pkg_preinst() {
+ kernel_pkg_preinst
+}
+
+pkg_postinst() {
+ kernel_pkg_postinst
+
+ einfo "Kernel headers are usually only used when recompiling glibc, as such, following the installation"
+ einfo "of newer headers, it is advised that you re-merge glibc as follows:"
+ einfo "emerge glibc"
+ einfo "Failure to do so will cause glibc to not make use of newer features present in the updated kernel"
+ einfo "headers."
+}
diff --git a/sys-kernel/linux26-headers/linux26-headers-2.6.7-r1.ebuild b/sys-kernel/linux26-headers/linux26-headers-2.6.7-r1.ebuild
new file mode 100644
index 000000000000..ef913448c358
--- /dev/null
+++ b/sys-kernel/linux26-headers/linux26-headers-2.6.7-r1.ebuild
@@ -0,0 +1,140 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/linux26-headers/linux26-headers-2.6.7-r1.ebuild,v 1.1 2004/07/09 22:44:48 lv Exp $
+
+ETYPE="headers"
+inherit kernel eutils
+
+OKV="${PV/_/-}"
+KV="${OKV}"
+S=${WORKDIR}/linux-${OKV}
+EXTRAVERSION=""
+
+# What's in this kernel?
+
+# INCLUDED:
+# 1) linux sources from kernel.org
+
+DESCRIPTION="Linux ${OKV} headers from kernel.org"
+SRC_URI="mirror://kernel/linux/kernel/v2.6/linux-${OKV}.tar.bz2"
+HOMEPAGE="http://www.kernel.org/ http://www.gentoo.org/"
+LICENSE="GPL-2"
+SLOT="0"
+PROVIDE="virtual/kernel virtual/os-headers"
+KEYWORDS="-* ~arm"
+
+DEPEND="!virtual/os-headers"
+
+pkg_setup() {
+ # Figure out what architecture we are, and set ARCH appropriately
+ ARCH="$(uname -m)"
+ ARCH="$(echo ${ARCH} | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)"
+ [ "$ARCH" == "sparc" -a "$PROFILE_ARCH" == "sparc64" ] && ARCH=sparc64
+
+ # Archs which have their own separate header packages, add a check here
+ # and redirect the user to them
+ case "${ARCH}" in
+ mips|mips64)
+ eerror "These headers are not appropriate for your architecture."
+ eerror "Please use sys-kernel/${ARCH/64/}-headers instead."
+ die
+ ;;
+ esac
+}
+
+src_unpack() {
+
+ unpack ${A}
+ cd ${S}
+
+ # Do Stuff
+ kernel_universal_unpack
+
+ # User-space patches for various things
+ epatch ${FILESDIR}/${PN}-2.6.7-appCompat.patch
+ epatch ${FILESDIR}/${PN}-2.6.3-strict-ansi-fix.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-sysctl_h-compat.patch
+ epatch ${FILESDIR}/${PN}-2.6.0-fb.patch
+}
+
+src_compile() {
+
+ # Compile the default configuration
+ MY_ARCH=${ARCH}
+ unset ${ARCH}
+ make defconfig
+ ARCH=${MY_ARCH}
+
+ # If this is sparc, then generate asm_offsets.h
+ if use sparc; then
+ make ARCH=${ARCH} dep || die "Failed to run 'make dep'"
+ fi
+
+}
+
+src_install() {
+ # XXX Bug in Kernel.eclass requires this fix for now.
+ # XXX Remove when kernel.eclass is fixed.
+ # XXX 2.4 kernels symlink 'asm' to 'asm-${ARCH}' in include/
+ # XXX 2.6 kernels don't, however. So we fix this here so kernel.eclass can find the include/asm folder
+ if [ "`KV_to_int ${OKV}`" -ge "`KV_to_int 2.6.0`" ]; then
+ ln -sf ${S}/include/asm-${ARCH} ${S}/include/asm
+ fi
+
+ # Do normal src_install stuff
+ kernel_src_install
+
+ # If this is sparc, then we need to place asm_offsets.h in the proper location(s)
+ if [ "${PROFILE_ARCH}" = "sparc64" ]; then
+
+ # We don't need /usr/include/asm, generate-asm-sparc will take care of this
+ rm -Rf ${D}/usr/include/asm
+
+ # We do need empty directories, though...
+ dodir /usr/include/asm
+ dodir /usr/include/asm-sparc
+ dodir /usr/include/asm-sparc64
+
+ # Copy asm-sparc and asm-sparc64
+ cp -ax ${S}/include/asm-sparc/* ${D}/usr/include/asm-sparc
+ cp -ax ${S}/include/asm-sparc64/* ${D}/usr/include/asm-sparc64
+
+ # Check if generate-asm-sparc exists
+ if [ -a "${FILESDIR}/generate-asm-sparc" ]; then
+
+ # Copy generate-asm-sparc into the sandox
+ cp ${FILESDIR}/generate-asm-sparc ${WORKDIR}/generate-asm-sparc
+
+ # Just in case generate-asm-sparc isn't executable, make it so
+ if [ ! -x "${WORKDIR}/generate-asm-sparc" ]; then
+ chmod +x ${WORKDIR}/generate-asm-sparc
+ fi
+
+ # Generate /usr/include/asm for sparc systems
+ ${WORKDIR}/generate-asm-sparc ${D}/usr/include
+ else
+ eerror "${FILESDIR}/generate-asm-sparc doesn't exist!"
+ die
+ fi
+ fi
+
+ # If this is 2.5 or 2.6 headers, then we need asm-generic too
+ if [ "`KV_to_int ${OKV}`" -ge "`KV_to_int 2.6.0`" ]; then
+ dodir /usr/include/asm-generic
+ cp -ax ${S}/include/asm-generic/* ${D}/usr/include/asm-generic
+ fi
+}
+
+pkg_preinst() {
+ kernel_pkg_preinst
+}
+
+pkg_postinst() {
+ kernel_pkg_postinst
+
+ einfo "Kernel headers are usually only used when recompiling glibc, as such, following the installation"
+ einfo "of newer headers, it is advised that you re-merge glibc as follows:"
+ einfo "emerge glibc"
+ einfo "Failure to do so will cause glibc to not make use of newer features present in the updated kernel"
+ einfo "headers."
+}
diff --git a/sys-kernel/linux26-headers/metadata.xml b/sys-kernel/linux26-headers/metadata.xml
new file mode 100644
index 000000000000..0a79a3da756e
--- /dev/null
+++ b/sys-kernel/linux26-headers/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>kernel</herd>
+<maintainer>
+ <email>plasmaroo@gentoo.org</email>
+</maintainer>
+<maintainer>
+ <email>x86-kernel@gentoo.org</email>
+</maintainer>
+</pkgmetadata>