1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-i386.patch Sun May 27 21:15:46 2007 +0000
1.3 @@ -0,0 +1,150 @@
1.4 +Fixes
1.5 +
1.6 +In file included from include/asm/thread_info.h:16,
1.7 + from include/linux/thread_info.h:21,
1.8 + from include/linux/spinlock.h:12,
1.9 + from include/linux/capability.h:45,
1.10 + from include/linux/sched.h:7,
1.11 + from arch/i386/kernel/asm-offsets.c:7:
1.12 +include/asm/processor.h:87: error: array type has incomplete element type
1.13 +make[1]: *** [arch/i386/kernel/asm-offsets.asm] Error 1
1.14 +
1.15 +--- linux-2.6.11.3/include/asm-i386/processor.h.old Tue Mar 15 06:45:26 2005
1.16 ++++ linux-2.6.11.3/include/asm-i386/processor.h Tue Mar 15 06:46:45 2005
1.17 +@@ -81,6 +81,64 @@
1.18 + #define X86_VENDOR_UNKNOWN 0xff
1.19 +
1.20 + /*
1.21 ++ * Size of io_bitmap.
1.22 ++ */
1.23 ++#define IO_BITMAP_BITS 65536
1.24 ++#define IO_BITMAP_BYTES (IO_BITMAP_BITS/8)
1.25 ++#define IO_BITMAP_LONGS (IO_BITMAP_BYTES/sizeof(long))
1.26 ++#define INVALID_IO_BITMAP_OFFSET 0x8000
1.27 ++#define INVALID_IO_BITMAP_OFFSET_LAZY 0x9000
1.28 ++
1.29 ++struct tss_struct {
1.30 ++ unsigned short back_link,__blh;
1.31 ++ unsigned long esp0;
1.32 ++ unsigned short ss0,__ss0h;
1.33 ++ unsigned long esp1;
1.34 ++ unsigned short ss1,__ss1h; /* ss1 is used to cache MSR_IA32_SYSENTER_CS */
1.35 ++ unsigned long esp2;
1.36 ++ unsigned short ss2,__ss2h;
1.37 ++ unsigned long __cr3;
1.38 ++ unsigned long eip;
1.39 ++ unsigned long eflags;
1.40 ++ unsigned long eax,ecx,edx,ebx;
1.41 ++ unsigned long esp;
1.42 ++ unsigned long ebp;
1.43 ++ unsigned long esi;
1.44 ++ unsigned long edi;
1.45 ++ unsigned short es, __esh;
1.46 ++ unsigned short cs, __csh;
1.47 ++ unsigned short ss, __ssh;
1.48 ++ unsigned short ds, __dsh;
1.49 ++ unsigned short fs, __fsh;
1.50 ++ unsigned short gs, __gsh;
1.51 ++ unsigned short ldt, __ldth;
1.52 ++ unsigned short trace, io_bitmap_base;
1.53 ++ /*
1.54 ++ * The extra 1 is there because the CPU will access an
1.55 ++ * additional byte beyond the end of the IO permission
1.56 ++ * bitmap. The extra byte must be all 1 bits, and must
1.57 ++ * be within the limit.
1.58 ++ */
1.59 ++ unsigned long io_bitmap[IO_BITMAP_LONGS + 1];
1.60 ++ /*
1.61 ++ * Cache the current maximum and the last task that used the bitmap:
1.62 ++ */
1.63 ++ unsigned long io_bitmap_max;
1.64 ++ struct thread_struct *io_bitmap_owner;
1.65 ++ /*
1.66 ++ * pads the TSS to be cacheline-aligned (size is 0x100)
1.67 ++ */
1.68 ++ unsigned long __cacheline_filler[35];
1.69 ++ /*
1.70 ++ * .. and then another 0x100 bytes for emergency kernel stack
1.71 ++ */
1.72 ++ unsigned long stack[64];
1.73 ++} __attribute__((packed));
1.74 ++
1.75 ++#define IO_BITMAP_OFFSET offsetof(struct tss_struct,io_bitmap)
1.76 ++#define ARCH_MIN_TASKALIGN 16
1.77 ++
1.78 ++/*
1.79 + * capabilities of CPUs
1.80 + */
1.81 +
1.82 +@@ -308,16 +366,6 @@
1.83 +
1.84 + #define HAVE_ARCH_PICK_MMAP_LAYOUT
1.85 +
1.86 +-/*
1.87 +- * Size of io_bitmap.
1.88 +- */
1.89 +-#define IO_BITMAP_BITS 65536
1.90 +-#define IO_BITMAP_BYTES (IO_BITMAP_BITS/8)
1.91 +-#define IO_BITMAP_LONGS (IO_BITMAP_BYTES/sizeof(long))
1.92 +-#define IO_BITMAP_OFFSET offsetof(struct tss_struct,io_bitmap)
1.93 +-#define INVALID_IO_BITMAP_OFFSET 0x8000
1.94 +-#define INVALID_IO_BITMAP_OFFSET_LAZY 0x9000
1.95 +-
1.96 + struct i387_fsave_struct {
1.97 + long cwd;
1.98 + long swd;
1.99 +@@ -371,54 +419,6 @@
1.100 + } mm_segment_t;
1.101 +
1.102 + struct thread_struct;
1.103 +-
1.104 +-struct tss_struct {
1.105 +- unsigned short back_link,__blh;
1.106 +- unsigned long esp0;
1.107 +- unsigned short ss0,__ss0h;
1.108 +- unsigned long esp1;
1.109 +- unsigned short ss1,__ss1h; /* ss1 is used to cache MSR_IA32_SYSENTER_CS */
1.110 +- unsigned long esp2;
1.111 +- unsigned short ss2,__ss2h;
1.112 +- unsigned long __cr3;
1.113 +- unsigned long eip;
1.114 +- unsigned long eflags;
1.115 +- unsigned long eax,ecx,edx,ebx;
1.116 +- unsigned long esp;
1.117 +- unsigned long ebp;
1.118 +- unsigned long esi;
1.119 +- unsigned long edi;
1.120 +- unsigned short es, __esh;
1.121 +- unsigned short cs, __csh;
1.122 +- unsigned short ss, __ssh;
1.123 +- unsigned short ds, __dsh;
1.124 +- unsigned short fs, __fsh;
1.125 +- unsigned short gs, __gsh;
1.126 +- unsigned short ldt, __ldth;
1.127 +- unsigned short trace, io_bitmap_base;
1.128 +- /*
1.129 +- * The extra 1 is there because the CPU will access an
1.130 +- * additional byte beyond the end of the IO permission
1.131 +- * bitmap. The extra byte must be all 1 bits, and must
1.132 +- * be within the limit.
1.133 +- */
1.134 +- unsigned long io_bitmap[IO_BITMAP_LONGS + 1];
1.135 +- /*
1.136 +- * Cache the current maximum and the last task that used the bitmap:
1.137 +- */
1.138 +- unsigned long io_bitmap_max;
1.139 +- struct thread_struct *io_bitmap_owner;
1.140 +- /*
1.141 +- * pads the TSS to be cacheline-aligned (size is 0x100)
1.142 +- */
1.143 +- unsigned long __cacheline_filler[35];
1.144 +- /*
1.145 +- * .. and then another 0x100 bytes for emergency kernel stack
1.146 +- */
1.147 +- unsigned long stack[64];
1.148 +-} __attribute__((packed));
1.149 +-
1.150 +-#define ARCH_MIN_TASKALIGN 16
1.151 +
1.152 + struct thread_struct {
1.153 + /* cached TLS descriptors. */