patches/linux/2.6.11.3/linux-2.6.11-allow-gcc-4.0-asm-i386.patch
changeset 1 eeea35fbf182
     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	Sat Feb 24 11:00:05 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. */