summaryrefslogtreecommitdiff
path: root/patches/linux/2.6.11.3
diff options
context:
space:
mode:
Diffstat (limited to 'patches/linux/2.6.11.3')
-rw-r--r--patches/linux/2.6.11.3/arch_alpha_kernel_srcons.patch134
-rw-r--r--patches/linux/2.6.11.3/kaz-types.patch60
-rw-r--r--patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-i386.patch150
-rw-r--r--patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-m68k.patch32
-rw-r--r--patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-ppc64.patch30
-rw-r--r--patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-x86_64.patch28
-rw-r--r--patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-i2c.patch58
-rw-r--r--patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-ppc-mikpe.patch86
8 files changed, 578 insertions, 0 deletions
diff --git a/patches/linux/2.6.11.3/arch_alpha_kernel_srcons.patch b/patches/linux/2.6.11.3/arch_alpha_kernel_srcons.patch
new file mode 100644
index 0000000..c163a1e
--- /dev/null
+++ b/patches/linux/2.6.11.3/arch_alpha_kernel_srcons.patch
@@ -0,0 +1,134 @@
+Date: Sun, 20 Mar 2005 20:26:02 -0800
+From: Richard Henderson <rth@twiddle.net>
+To: Andrew Morton <akpm@osdl.org>
+Cc: Dan Kegel <dank@kegel.com>, jbglaw@lug-owl.de,
+ linux-kernel@vger.kernel.org, torvalds@osdl.org
+Subject: Re: 2.6.11.3 build problem in arch/alpha/kernel/srcons.c with gcc-4.0
+Message-ID: <20050321042602.GA3795@twiddle.net>
+Mail-Followup-To: Andrew Morton <akpm@osdl.org>, Dan Kegel <dank@kegel.com>,
+ jbglaw@lug-owl.de, linux-kernel@vger.kernel.org, torvalds@osdl.org
+References: <423E238F.3030805@kegel.com> <20050320190352.65cc1396.akpm@osdl.org>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+In-Reply-To: <20050320190352.65cc1396.akpm@osdl.org>
+User-Agent: Mutt/1.4.1i
+
+On Sun, Mar 20, 2005 at 07:03:52PM -0800, Andrew Morton wrote:
+> Dan Kegel <dank@kegel.com> wrote:
+> >
+> > Anyone with an alpha care to suggest a fix for this?
+> >
+> > arch/alpha/kernel/srmcons.c: In function 'srmcons_open':
+> > arch/alpha/kernel/srmcons.c:196: warning: 'srmconsp' may be used uninitialized in this function
+> > make[1]: *** [arch/alpha/kernel/srmcons.o] Error 1
+> > make: *** [arch/alpha/kernel] Error 2
+> >
+> > I get this when building the 2.6.11.3 kernel with a recent gcc-4.0 snapshot.
+> >
+>
+> It's beyond gcc's ability to figure out that the code is OK. Options would
+> be to disable -Werror, or to artificially initialise that variable.
+
+Fixed thus.
+
+Note that even with a _raw_read_trylock implementation, smp still
+doesn't work. Everything that init spawns dies immediately. I
+havn't had a chance to find out why yet...
+
+[ Note: deleted changes to smp.c, since they didn't apply cleanly
+ to 2.6.11.3 (the function had moved, I guess), and they seemed unrelated.]
+
+r~
+
+
+
+You can import this changeset into BK by piping this whole message to:
+'| bk receive [path to repository]' or apply the patch as usual.
+
+===================================================================
+
+
+ChangeSet@1.2289, 2005-03-20 12:29:41-08:00, rth@kanga.twiddle.home
+ [ALPHA] Elimitate two warnings from gcc4.
+
+
+ smp.c | 43 -------------------------------------------
+ srmcons.c | 27 ++++++++++-----------------
+ 2 files changed, 10 insertions(+), 60 deletions(-)
+
+
+diff -Nru a/arch/alpha/kernel/srmcons.c b/arch/alpha/kernel/srmcons.c
+--- a/arch/alpha/kernel/srmcons.c 2005-03-20 20:23:28 -08:00
++++ b/arch/alpha/kernel/srmcons.c 2005-03-20 20:23:28 -08:00
+@@ -164,29 +164,22 @@
+ unsigned long flags;
+ int retval = 0;
+
+- spin_lock_irqsave(&srmconsp_lock, flags);
+-
+- do {
+- if (srmconsp != NULL) {
+- *ps = srmconsp;
+- break;
+- }
++ if (srmconsp == NULL) {
++ spin_lock_irqsave(&srmconsp_lock, flags);
+
+ srmconsp = kmalloc(sizeof(*srmconsp), GFP_KERNEL);
+- if (srmconsp == NULL) {
++ if (srmconsp == NULL)
+ retval = -ENOMEM;
+- break;
++ else {
++ srmconsp->tty = NULL;
++ spin_lock_init(&srmconsp->lock);
++ init_timer(&srmconsp->timer);
+ }
+
+- srmconsp->tty = NULL;
+- spin_lock_init(&srmconsp->lock);
+- init_timer(&srmconsp->timer);
+-
+- *ps = srmconsp;
+- } while(0);
+-
+- spin_unlock_irqrestore(&srmconsp_lock, flags);
++ spin_unlock_irqrestore(&srmconsp_lock, flags);
++ }
+
++ *ps = srmconsp;
+ return retval;
+ }
+
+
+===================================================================
+
+
+This BitKeeper patch contains the following changesets:
+1.2289
+## Wrapped with gzip_uu ##
+
+
+M'XL( $!,/D( [56[V_;-A#]+/X5!Q38FFV628KZY<!!TJ98BP9;D"&?BL)@
+M),H6+%$:2=DQIOWO)>4XSH8D1KK%-F#@>'J\]^[>V6_@6@LU\919H#?PL=%F
+MXG$E?+,N\[P2OA3&QJ^:QL;'BZ868YLY?O=YS&_;$?4C9$\ON<D6L!)*3SSB
+M!_<1LVG%Q+OZ\.OUQ=D50M,IO%]P.1=_" /3*3*-6O$JUZ?<+*I&^D9QJ6MA
+MN)\U=7^?VE.,J7V') YP&/4DPBSN,Y(3PAD1.:8LB=@>3:P:O]%YY3=J_D^4
+M$ <DH4&0!LRBL"A YT!\2I,4<#C&P9AB('1"TPDC(YQ,, 9+]G1I(?B]($X#
+M^)G""*-W\/]2>(\R^')V<?GQ["M\J,JZ--P(,.L&UES)4LXU%*JI89YES$>?
+M@82,8'2Y5Q6-7OA""'.,3AZA:?O><Y4MQKQJ%WR\%$J*:JQ5G352^YEC%&!"
+ML664!%%/+:^PCW-:I 7)XUSDE*;Q$_(= K9]<FK1E(0]HPPS6^'S2C\"6+=;
+ML#O=&::T#^*8QGU*;D@>)3BWJA?I3?Z"*G>@#RND49R&PW0_0\O-^RN)C,R\
+MNCVM2MD9U<CRUL_%EYU:7P]+32@A$644]RQ,*!TL0>B_#4'" X8@&$8D?A5+
+M7(FU*JT1[@J?S869M:I<67/,M%%=9D!W;MTLN(&?6@VE!EZM^4:#>] (Z<RR
+M':3?8:36P\<._^5S'?L.+YV3*(88?;*4@"*O+.#M'5QK^P^_75]<',%?R/-T
+M6\I9U63+6:G^U'PEWOZP2QS"OT!1\;D^.K:0<03$0;HO[W%,EY5LLQ)@-DM4
+M6@P7>;O<T8DQ&]CF'P\'^Q)D:?;WCTY<\&C(<2<S4]9"/3P? D-I"8'$7IHD
+MCNT6L9,[6DIH.PI/,_/^=H^FCI7KV737WO;X*2\Y\QW^W?A/JP#==')YJDVG
+M+=HA'SU8!H1AS!@-^X"F=LJ<AT+R8@]9"['@52QT+BKA'%2W,]-):YML(?+.
+M[HSY,90&\D9H^:,!GIF.5]4&6J&*1M7 Y08Z+8JNLB!%)S-3-M)%:]M:YZKM
+I\COL*J?5=SG*3;1=2J%3<?]?PY:?+7573PFE(L5)@+X!A'U=W,@(
+
+
+
diff --git a/patches/linux/2.6.11.3/kaz-types.patch b/patches/linux/2.6.11.3/kaz-types.patch
new file mode 100644
index 0000000..ec5de36
--- /dev/null
+++ b/patches/linux/2.6.11.3/kaz-types.patch
@@ -0,0 +1,60 @@
+The following fixes an error that occurs when building glibc-2.3.2 (but not glibc-2.2.5) for sh4:
+
+In file included from sys/ustat.h:30,
+ from ../sysdeps/unix/sysv/linux/ustat.c:21:
+../sysdeps/generic/bits/ustat.h:26: error: redefinition of `struct ustat'
+make[2]: *** [/home3/dank/crosstool-0.7/build/sh4-unknown-linux-gnu/gcc-3.3-glibc-2.3.2/build-glibc/misc/ustat.o] Error 1
+make[2]: Leaving directory `/home3/dank/crosstool-0.7/build/sh4-unknown-linux-gnu/gcc-3.3-glibc-2.3.2/glibc-2.3.2/misc'
+make[1]: *** [misc/subdir_lib] Error 2
+make[1]: Leaving directory `/home3/dank/crosstool-0.7/build/sh4-unknown-linux-gnu/gcc-3.3-glibc-2.3.2/glibc-2.3.2'
+make: *** [all] Error 2
+
+----------- snip ---------------
+
+Date: Fri, 06 Jun 2003 08:00:00 +0900
+From: kaz Kojima <kkojima@rr.iij4u.or.jp>
+Subject: [linux-sh:02770] Re: Compiling glibc-2.3.2 for sh4 fails with "include/asm/user.h:32:
+ error: redefinition of `struct user_fpu_struct'"
+To: linux-sh@m17n.org
+Message-Id: <200306052250.h55Moeb08707@r-rr.iij4u.or.jp>
+
+Hi,
+
+Dan Kegel <dank@kegel.com> wrote:
+> When I try to build glibc-2.3.2 for sh4, it fails with the error
+[snip]
+> /home3/dank/crosstool-0.3/result/sh4-linux/gcc-3.3-glibc-2.3.2/sh4-linux/include/asm/user.h:32: error: redefinition of `struct user_fpu_struct'
+> /home3/dank/crosstool-0.3/result/sh4-linux/gcc-3.3-glibc-2.3.2/sh4-linux/include/asm/user.h:39: error: redefinition of `struct user'
+[snip]
+> The error reminds me of the kind of thing fixed by
+> http://www.kegel.com/crossgcc/crosstool-0.4/glibc-2.3.2-patches/sh-user.patch
+
+It seems that the definitions in asm/user.h and the above patch collide.
+I'm not sure why you need this patch, but is it needed for the problem
+about struct ustat that you pointed out in this list, isn't it?
+I found why I don't hit ustat problem - my local kernel tree includes
+the following patch, though I can't recall about it.
+
+Regards,
+ kaz
+--
+diff -u linux-2.5.69-sf-orig/include/linux/types.h /usr/local/sh4-unknown-linux-gnu/include/linux/types.h
+--- linux-2.5.69-sf-orig/include/linux/types.h Wed Mar 5 12:29:34 2003
++++ sh4-unknown-linux-gnu/include/linux/types.h Sat Apr 19 10:05:52 2003
+@@ -141,6 +141,7 @@
+
+ #endif /* __KERNEL_STRICT_NAMES */
+
++#ifdef __KERNEL__
+ /*
+ * Below are truly Linux-specific types that should never collide with
+ * any application/library that wants linux/types.h.
+@@ -152,5 +153,6 @@
+ char f_fname[6];
+ char f_fpack[6];
+ };
++#endif
+
+ #endif /* _LINUX_TYPES_H */
+
+
diff --git a/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-i386.patch b/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-i386.patch
new file mode 100644
index 0000000..1193a8c
--- /dev/null
+++ b/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-i386.patch
@@ -0,0 +1,150 @@
+Fixes
+
+In file included from include/asm/thread_info.h:16,
+ from include/linux/thread_info.h:21,
+ from include/linux/spinlock.h:12,
+ from include/linux/capability.h:45,
+ from include/linux/sched.h:7,
+ from arch/i386/kernel/asm-offsets.c:7:
+include/asm/processor.h:87: error: array type has incomplete element type
+make[1]: *** [arch/i386/kernel/asm-offsets.asm] Error 1
+
+--- linux-2.6.11.3/include/asm-i386/processor.h.old Tue Mar 15 06:45:26 2005
++++ linux-2.6.11.3/include/asm-i386/processor.h Tue Mar 15 06:46:45 2005
+@@ -81,6 +81,64 @@
+ #define X86_VENDOR_UNKNOWN 0xff
+
+ /*
++ * Size of io_bitmap.
++ */
++#define IO_BITMAP_BITS 65536
++#define IO_BITMAP_BYTES (IO_BITMAP_BITS/8)
++#define IO_BITMAP_LONGS (IO_BITMAP_BYTES/sizeof(long))
++#define INVALID_IO_BITMAP_OFFSET 0x8000
++#define INVALID_IO_BITMAP_OFFSET_LAZY 0x9000
++
++struct tss_struct {
++ unsigned short back_link,__blh;
++ unsigned long esp0;
++ unsigned short ss0,__ss0h;
++ unsigned long esp1;
++ unsigned short ss1,__ss1h; /* ss1 is used to cache MSR_IA32_SYSENTER_CS */
++ unsigned long esp2;
++ unsigned short ss2,__ss2h;
++ unsigned long __cr3;
++ unsigned long eip;
++ unsigned long eflags;
++ unsigned long eax,ecx,edx,ebx;
++ unsigned long esp;
++ unsigned long ebp;
++ unsigned long esi;
++ unsigned long edi;
++ unsigned short es, __esh;
++ unsigned short cs, __csh;
++ unsigned short ss, __ssh;
++ unsigned short ds, __dsh;
++ unsigned short fs, __fsh;
++ unsigned short gs, __gsh;
++ unsigned short ldt, __ldth;
++ unsigned short trace, io_bitmap_base;
++ /*
++ * The extra 1 is there because the CPU will access an
++ * additional byte beyond the end of the IO permission
++ * bitmap. The extra byte must be all 1 bits, and must
++ * be within the limit.
++ */
++ unsigned long io_bitmap[IO_BITMAP_LONGS + 1];
++ /*
++ * Cache the current maximum and the last task that used the bitmap:
++ */
++ unsigned long io_bitmap_max;
++ struct thread_struct *io_bitmap_owner;
++ /*
++ * pads the TSS to be cacheline-aligned (size is 0x100)
++ */
++ unsigned long __cacheline_filler[35];
++ /*
++ * .. and then another 0x100 bytes for emergency kernel stack
++ */
++ unsigned long stack[64];
++} __attribute__((packed));
++
++#define IO_BITMAP_OFFSET offsetof(struct tss_struct,io_bitmap)
++#define ARCH_MIN_TASKALIGN 16
++
++/*
+ * capabilities of CPUs
+ */
+
+@@ -308,16 +366,6 @@
+
+ #define HAVE_ARCH_PICK_MMAP_LAYOUT
+
+-/*
+- * Size of io_bitmap.
+- */
+-#define IO_BITMAP_BITS 65536
+-#define IO_BITMAP_BYTES (IO_BITMAP_BITS/8)
+-#define IO_BITMAP_LONGS (IO_BITMAP_BYTES/sizeof(long))
+-#define IO_BITMAP_OFFSET offsetof(struct tss_struct,io_bitmap)
+-#define INVALID_IO_BITMAP_OFFSET 0x8000
+-#define INVALID_IO_BITMAP_OFFSET_LAZY 0x9000
+-
+ struct i387_fsave_struct {
+ long cwd;
+ long swd;
+@@ -371,54 +419,6 @@
+ } mm_segment_t;
+
+ struct thread_struct;
+-
+-struct tss_struct {
+- unsigned short back_link,__blh;
+- unsigned long esp0;
+- unsigned short ss0,__ss0h;
+- unsigned long esp1;
+- unsigned short ss1,__ss1h; /* ss1 is used to cache MSR_IA32_SYSENTER_CS */
+- unsigned long esp2;
+- unsigned short ss2,__ss2h;
+- unsigned long __cr3;
+- unsigned long eip;
+- unsigned long eflags;
+- unsigned long eax,ecx,edx,ebx;
+- unsigned long esp;
+- unsigned long ebp;
+- unsigned long esi;
+- unsigned long edi;
+- unsigned short es, __esh;
+- unsigned short cs, __csh;
+- unsigned short ss, __ssh;
+- unsigned short ds, __dsh;
+- unsigned short fs, __fsh;
+- unsigned short gs, __gsh;
+- unsigned short ldt, __ldth;
+- unsigned short trace, io_bitmap_base;
+- /*
+- * The extra 1 is there because the CPU will access an
+- * additional byte beyond the end of the IO permission
+- * bitmap. The extra byte must be all 1 bits, and must
+- * be within the limit.
+- */
+- unsigned long io_bitmap[IO_BITMAP_LONGS + 1];
+- /*
+- * Cache the current maximum and the last task that used the bitmap:
+- */
+- unsigned long io_bitmap_max;
+- struct thread_struct *io_bitmap_owner;
+- /*
+- * pads the TSS to be cacheline-aligned (size is 0x100)
+- */
+- unsigned long __cacheline_filler[35];
+- /*
+- * .. and then another 0x100 bytes for emergency kernel stack
+- */
+- unsigned long stack[64];
+-} __attribute__((packed));
+-
+-#define ARCH_MIN_TASKALIGN 16
+
+ struct thread_struct {
+ /* cached TLS descriptors. */
diff --git a/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-m68k.patch b/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-m68k.patch
new file mode 100644
index 0000000..b349ee0
--- /dev/null
+++ b/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-m68k.patch
@@ -0,0 +1,32 @@
+Fixes
+
+In file included from include/asm/setup.h:8,
+ from include/asm/machdep.h:8,
+ from include/asm/irq.h:6,
+ from include/asm/hardirq.h:8,
+ from include/linux/hardirq.h:6,
+ from include/asm-generic/local.h:6,
+ from include/asm/local.h:4,
+ from include/linux/module.h:21,
+ from init/main.c:16:
+include/asm-m68k/setup.h:365: error: array type has incomplete element type
+
+when compiling with gcc-4.0. (Affects ppc, too, for some reason.)
+
+--- linux-2.6.11.3/include/asm-m68k/setup.h.old Fri Mar 18 13:48:03 2005
++++ linux-2.6.11.3/include/asm-m68k/setup.h Fri Mar 18 13:48:14 2005
+@@ -362,12 +362,13 @@
+ #ifndef __ASSEMBLY__
+ extern int m68k_num_memory; /* # of memory blocks found (and used) */
+ extern int m68k_realnum_memory; /* real # of memory blocks found */
+-extern struct mem_info m68k_memory[NUM_MEMINFO];/* memory description */
+
+ struct mem_info {
+ unsigned long addr; /* physical address of memory chunk */
+ unsigned long size; /* length of memory chunk (in bytes) */
+ };
++
++extern struct mem_info m68k_memory[NUM_MEMINFO];/* memory description */
+ #endif
+
+ #endif /* __KERNEL__ */
diff --git a/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-ppc64.patch b/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-ppc64.patch
new file mode 100644
index 0000000..58e376d
--- /dev/null
+++ b/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-ppc64.patch
@@ -0,0 +1,30 @@
+Fixes
+
+In file included from include/asm/current.h:4,
+ from include/linux/wait.h:27,
+ from include/asm/semaphore.h:15,
+ from include/linux/sched.h:19,
+ from arch/ppc64/kernel/asm-offsets.c:18:
+include/asm/paca.h:25: error: array type has incomplete element type
+make[1]: *** [arch/ppc64/kernel/asm-offsets.s] Error 1
+
+when building with gcc-4.0
+
+--- linux-2.6.11.3/include/asm-ppc64/paca.h.old Fri Mar 18 13:23:40 2005
++++ linux-2.6.11.3/include/asm-ppc64/paca.h Fri Mar 18 13:24:04 2005
+@@ -22,7 +22,6 @@
+ #include <asm/iSeries/ItLpRegSave.h>
+ #include <asm/mmu.h>
+
+-extern struct paca_struct paca[];
+ register struct paca_struct *local_paca asm("r13");
+ #define get_paca() local_paca
+
+@@ -114,5 +113,7 @@
+ struct ItLpRegSave reg_save;
+ #endif
+ };
++
++extern struct paca_struct paca[];
+
+ #endif /* _PPC64_PACA_H */
diff --git a/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-x86_64.patch b/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-x86_64.patch
new file mode 100644
index 0000000..a87e12e
--- /dev/null
+++ b/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-x86_64.patch
@@ -0,0 +1,28 @@
+Fixes:
+
+In file included from include/linux/spinlock.h:16,
+ from include/linux/capability.h:45,
+ from include/linux/sched.h:7,
+ from arch/x86_64/kernel/asm-offsets.c:7:
+include/asm/processor.h:79: error: array type has incomplete element type
+make[1]: *** [arch/x86_64/kernel/asm-offsets.asm] Error 1
+
+--- linux-2.6.11.3/include/asm-x86_64/processor.h.old Tue Mar 15 07:05:07 2005
++++ linux-2.6.11.3/include/asm-x86_64/processor.h Tue Mar 15 07:09:53 2005
+@@ -179,7 +179,6 @@
+ #define IO_BITMAP_BITS 65536
+ #define IO_BITMAP_BYTES (IO_BITMAP_BITS/8)
+ #define IO_BITMAP_LONGS (IO_BITMAP_BYTES/sizeof(long))
+-#define IO_BITMAP_OFFSET offsetof(struct tss_struct,io_bitmap)
+ #define INVALID_IO_BITMAP_OFFSET 0x8000
+
+ struct i387_fxsave_struct {
+@@ -222,6 +221,8 @@
+ */
+ unsigned long io_bitmap[IO_BITMAP_LONGS + 1];
+ } __attribute__((packed)) ____cacheline_aligned;
++
++#define IO_BITMAP_OFFSET offsetof(struct tss_struct,io_bitmap)
+
+ extern struct cpuinfo_x86 boot_cpu_data;
+ DECLARE_PER_CPU(struct tss_struct,init_tss);
diff --git a/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-i2c.patch b/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-i2c.patch
new file mode 100644
index 0000000..c1df43d
--- /dev/null
+++ b/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-i2c.patch
@@ -0,0 +1,58 @@
+Fixes
+
+In file included from fs/compat_ioctl.c:69,
+ from arch/ppc64/kernel/ioctl32.c:24:
+include/linux/i2c.h:58: error: array type has incomplete element type
+include/linux/i2c.h:197: error: array type has incomplete element type
+
+when compiling with gcc-4.0.
+
+--- linux-2.6.11.3/include/linux/i2c.h.old 2005-03-19 10:59:09.000000000 -0800
++++ linux-2.6.11.3/include/linux/i2c.h 2005-03-19 11:01:37.000000000 -0800
+@@ -36,7 +36,22 @@
+
+ /* --- General options ------------------------------------------------ */
+
+-struct i2c_msg;
++/*
++ * I2C Message - used for pure i2c transaction, also from /dev interface
++ */
++struct i2c_msg {
++ __u16 addr; /* slave address */
++ __u16 flags;
++#define I2C_M_TEN 0x10 /* we have a ten bit chip address */
++#define I2C_M_RD 0x01
++#define I2C_M_NOSTART 0x4000
++#define I2C_M_REV_DIR_ADDR 0x2000
++#define I2C_M_IGNORE_NAK 0x1000
++#define I2C_M_NO_RD_ACK 0x0800
++ __u16 len; /* msg length */
++ __u8 *buf; /* pointer to msg data */
++};
++
+ struct i2c_algorithm;
+ struct i2c_adapter;
+ struct i2c_client;
+@@ -379,22 +394,6 @@
+ /* Return 1 if adapter supports everything we need, 0 if not. */
+ extern int i2c_check_functionality (struct i2c_adapter *adap, u32 func);
+
+-/*
+- * I2C Message - used for pure i2c transaction, also from /dev interface
+- */
+-struct i2c_msg {
+- __u16 addr; /* slave address */
+- __u16 flags;
+-#define I2C_M_TEN 0x10 /* we have a ten bit chip address */
+-#define I2C_M_RD 0x01
+-#define I2C_M_NOSTART 0x4000
+-#define I2C_M_REV_DIR_ADDR 0x2000
+-#define I2C_M_IGNORE_NAK 0x1000
+-#define I2C_M_NO_RD_ACK 0x0800
+- __u16 len; /* msg length */
+- __u8 *buf; /* pointer to msg data */
+-};
+-
+ /* To determine what functionality is present */
+
+ #define I2C_FUNC_I2C 0x00000001
diff --git a/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-ppc-mikpe.patch b/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-ppc-mikpe.patch
new file mode 100644
index 0000000..60f02e3
--- /dev/null
+++ b/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-ppc-mikpe.patch
@@ -0,0 +1,86 @@
+
+Fixes
+
+In file included from arch/ppc/kernel/time.c:68:
+arch/ppc/kernel/time.c:92: error: static declaration of 'time_offset' follows non-static declaration
+include/linux/timex.h:236: error: previous declaration of 'time_offset' was here
+make[1]: *** [arch/ppc/kernel/time.o] Error 1
+
+when compiling with gcc-4.0
+
+Taken from
+http://user.it.uu.se/~mikpe/linux/patches/2.6/patch-gcc4-fixes-v2-2.6.11
+Also removes some obsolete externs that caused problems for Mike
+Mike's patch has a bit more stuff in it, but this was enough for me
+
+
+diff -rupN linux-2.6.11/arch/ppc/kernel/time.c linux-2.6.11.gcc4-fixes-v2/arch/ppc/kernel/time.c
+--- linux-2.6.11/arch/ppc/kernel/time.c 2005-03-02 19:24:14.000000000 +0100
++++ linux-2.6.11.gcc4-fixes-v2/arch/ppc/kernel/time.c 2005-03-02 19:36:26.000000000 +0100
+@@ -89,7 +89,7 @@ unsigned long tb_to_ns_scale;
+
+ extern unsigned long wall_jiffies;
+
+-static long time_offset;
++static long ppc_time_offset;
+
+ DEFINE_SPINLOCK(rtc_lock);
+
+@@ -172,7 +172,7 @@ void timer_interrupt(struct pt_regs * re
+ xtime.tv_sec - last_rtc_update >= 659 &&
+ abs((xtime.tv_nsec / 1000) - (1000000-1000000/HZ)) < 500000/HZ &&
+ jiffies - wall_jiffies == 1) {
+- if (ppc_md.set_rtc_time(xtime.tv_sec+1 + time_offset) == 0)
++ if (ppc_md.set_rtc_time(xtime.tv_sec+1 + ppc_time_offset) == 0)
+ last_rtc_update = xtime.tv_sec+1;
+ else
+ /* Try again one minute later */
+@@ -289,7 +289,7 @@ void __init time_init(void)
+ unsigned old_stamp, stamp, elapsed;
+
+ if (ppc_md.time_init != NULL)
+- time_offset = ppc_md.time_init();
++ ppc_time_offset = ppc_md.time_init();
+
+ if (__USE_RTC()) {
+ /* 601 processor: dec counts down by 128 every 128ns */
+@@ -334,10 +334,10 @@ void __init time_init(void)
+ set_dec(tb_ticks_per_jiffy);
+
+ /* If platform provided a timezone (pmac), we correct the time */
+- if (time_offset) {
+- sys_tz.tz_minuteswest = -time_offset / 60;
++ if (ppc_time_offset) {
++ sys_tz.tz_minuteswest = -ppc_time_offset / 60;
+ sys_tz.tz_dsttime = 0;
+- xtime.tv_sec -= time_offset;
++ xtime.tv_sec -= ppc_time_offset;
+ }
+ set_normalized_timespec(&wall_to_monotonic,
+ -xtime.tv_sec, -xtime.tv_nsec);
+diff -rupN linux-2.6.11/arch/ppc/syslib/open_pic_defs.h linux-2.6.11.gcc4-fixes-v2/arch/ppc/syslib/open_pic_defs.h
+--- linux-2.6.11/arch/ppc/syslib/open_pic_defs.h 2005-03-02 19:24:14.000000000 +0100
++++ linux-2.6.11.gcc4-fixes-v2/arch/ppc/syslib/open_pic_defs.h 2005-03-02 19:36:26.000000000 +0100
+@@ -172,9 +172,6 @@ struct OpenPIC {
+ OpenPIC_Processor Processor[OPENPIC_MAX_PROCESSORS];
+ };
+
+-extern volatile struct OpenPIC __iomem *OpenPIC;
+-
+-
+ /*
+ * Current Task Priority Register
+ */
+diff -rupN linux-2.6.11/include/asm-ppc/prom.h linux-2.6.11.gcc4-fixes-v2/include/asm-ppc/prom.h
+--- linux-2.6.11/include/asm-ppc/prom.h 2003-09-28 12:19:57.000000000 +0200
++++ linux-2.6.11.gcc4-fixes-v2/include/asm-ppc/prom.h 2005-03-02 19:36:26.000000000 +0100
+@@ -13,9 +13,6 @@
+ typedef void *phandle;
+ typedef void *ihandle;
+
+-extern char *prom_display_paths[];
+-extern unsigned int prom_num_displays;
+-
+ struct address_range {
+ unsigned int space;
+ unsigned int address;