patches/linux/2.6.8/110-linux-2.6.8-allow-gcc-4.0-asm-i386.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Feb 17 22:08:06 2008 +0000 (2008-02-17)
changeset 431 8bde4c6ea47a
permissions -rw-r--r--
Robert P. J. DAY says:

apparently, the patchset for gcc 4.2.1 applies properly to the
source for gcc 4.2.2 and gcc 4.2.3. so, if you want, you can simply
add support for those last two just by augmenting menuconfig and
adding a couple symlinks for those two directories. seems like a
cheap way to add a couple new versions.
yann@402
     1
Fixes
yann@402
     2
yann@402
     3
In file included from include/asm/thread_info.h:16,
yann@402
     4
                 from include/linux/thread_info.h:21,
yann@402
     5
                 from include/linux/spinlock.h:12,
yann@402
     6
                 from include/linux/capability.h:45,
yann@402
     7
                 from include/linux/sched.h:7,
yann@402
     8
                 from arch/i386/kernel/asm-offsets.c:7:
yann@402
     9
include/asm/processor.h:87: error: array type has incomplete element type
yann@402
    10
make[1]: *** [arch/i386/kernel/asm-offsets.asm] Error 1
yann@402
    11
yann@402
    12
--- linux-2.6.8/include/asm-i386/processor.h.old	Tue Mar 15 00:14:42 2005
yann@402
    13
+++ linux-2.6.8/include/asm-i386/processor.h	Tue Mar 15 00:18:45 2005
yann@402
    14
@@ -79,6 +79,58 @@
yann@402
    15
 #define X86_VENDOR_UNKNOWN 0xff
yann@402
    16
 
yann@402
    17
 /*
yann@402
    18
+ * Size of io_bitmap.
yann@402
    19
+ */
yann@402
    20
+#define IO_BITMAP_BITS  65536
yann@402
    21
+#define IO_BITMAP_BYTES (IO_BITMAP_BITS/8)
yann@402
    22
+#define IO_BITMAP_LONGS (IO_BITMAP_BYTES/sizeof(long))
yann@402
    23
+#define IO_BITMAP_OFFSET offsetof(struct tss_struct,io_bitmap)
yann@402
    24
+#define INVALID_IO_BITMAP_OFFSET 0x8000
yann@402
    25
+
yann@402
    26
+struct tss_struct {
yann@402
    27
+	unsigned short	back_link,__blh;
yann@402
    28
+	unsigned long	esp0;
yann@402
    29
+	unsigned short	ss0,__ss0h;
yann@402
    30
+	unsigned long	esp1;
yann@402
    31
+	unsigned short	ss1,__ss1h;	/* ss1 is used to cache MSR_IA32_SYSENTER_CS */
yann@402
    32
+	unsigned long	esp2;
yann@402
    33
+	unsigned short	ss2,__ss2h;
yann@402
    34
+	unsigned long	__cr3;
yann@402
    35
+	unsigned long	eip;
yann@402
    36
+	unsigned long	eflags;
yann@402
    37
+	unsigned long	eax,ecx,edx,ebx;
yann@402
    38
+	unsigned long	esp;
yann@402
    39
+	unsigned long	ebp;
yann@402
    40
+	unsigned long	esi;
yann@402
    41
+	unsigned long	edi;
yann@402
    42
+	unsigned short	es, __esh;
yann@402
    43
+	unsigned short	cs, __csh;
yann@402
    44
+	unsigned short	ss, __ssh;
yann@402
    45
+	unsigned short	ds, __dsh;
yann@402
    46
+	unsigned short	fs, __fsh;
yann@402
    47
+	unsigned short	gs, __gsh;
yann@402
    48
+	unsigned short	ldt, __ldth;
yann@402
    49
+	unsigned short	trace, io_bitmap_base;
yann@402
    50
+	/*
yann@402
    51
+	 * The extra 1 is there because the CPU will access an
yann@402
    52
+	 * additional byte beyond the end of the IO permission
yann@402
    53
+	 * bitmap. The extra byte must be all 1 bits, and must
yann@402
    54
+	 * be within the limit.
yann@402
    55
+	 */
yann@402
    56
+	unsigned long	io_bitmap[IO_BITMAP_LONGS + 1];
yann@402
    57
+	/*
yann@402
    58
+	 * pads the TSS to be cacheline-aligned (size is 0x100)
yann@402
    59
+	 */
yann@402
    60
+	unsigned long __cacheline_filler[37];
yann@402
    61
+	/*
yann@402
    62
+	 * .. and then another 0x100 bytes for emergency kernel stack
yann@402
    63
+	 */
yann@402
    64
+	unsigned long stack[64];
yann@402
    65
+} __attribute__((packed));
yann@402
    66
+
yann@402
    67
+#define ARCH_MIN_TASKALIGN	16
yann@402
    68
+
yann@402
    69
+/*
yann@402
    70
  * capabilities of CPUs
yann@402
    71
  */
yann@402
    72
 
yann@402
    73
@@ -296,15 +348,6 @@
yann@402
    74
  */
yann@402
    75
 #define TASK_UNMAPPED_BASE	(PAGE_ALIGN(TASK_SIZE / 3))
yann@402
    76
 
yann@402
    77
-/*
yann@402
    78
- * Size of io_bitmap.
yann@402
    79
- */
yann@402
    80
-#define IO_BITMAP_BITS  65536
yann@402
    81
-#define IO_BITMAP_BYTES (IO_BITMAP_BITS/8)
yann@402
    82
-#define IO_BITMAP_LONGS (IO_BITMAP_BYTES/sizeof(long))
yann@402
    83
-#define IO_BITMAP_OFFSET offsetof(struct tss_struct,io_bitmap)
yann@402
    84
-#define INVALID_IO_BITMAP_OFFSET 0x8000
yann@402
    85
-
yann@402
    86
 struct i387_fsave_struct {
yann@402
    87
 	long	cwd;
yann@402
    88
 	long	swd;
yann@402
    89
@@ -356,49 +399,6 @@
yann@402
    90
 typedef struct {
yann@402
    91
 	unsigned long seg;
yann@402
    92
 } mm_segment_t;
yann@402
    93
-
yann@402
    94
-struct tss_struct {
yann@402
    95
-	unsigned short	back_link,__blh;
yann@402
    96
-	unsigned long	esp0;
yann@402
    97
-	unsigned short	ss0,__ss0h;
yann@402
    98
-	unsigned long	esp1;
yann@402
    99
-	unsigned short	ss1,__ss1h;	/* ss1 is used to cache MSR_IA32_SYSENTER_CS */
yann@402
   100
-	unsigned long	esp2;
yann@402
   101
-	unsigned short	ss2,__ss2h;
yann@402
   102
-	unsigned long	__cr3;
yann@402
   103
-	unsigned long	eip;
yann@402
   104
-	unsigned long	eflags;
yann@402
   105
-	unsigned long	eax,ecx,edx,ebx;
yann@402
   106
-	unsigned long	esp;
yann@402
   107
-	unsigned long	ebp;
yann@402
   108
-	unsigned long	esi;
yann@402
   109
-	unsigned long	edi;
yann@402
   110
-	unsigned short	es, __esh;
yann@402
   111
-	unsigned short	cs, __csh;
yann@402
   112
-	unsigned short	ss, __ssh;
yann@402
   113
-	unsigned short	ds, __dsh;
yann@402
   114
-	unsigned short	fs, __fsh;
yann@402
   115
-	unsigned short	gs, __gsh;
yann@402
   116
-	unsigned short	ldt, __ldth;
yann@402
   117
-	unsigned short	trace, io_bitmap_base;
yann@402
   118
-	/*
yann@402
   119
-	 * The extra 1 is there because the CPU will access an
yann@402
   120
-	 * additional byte beyond the end of the IO permission
yann@402
   121
-	 * bitmap. The extra byte must be all 1 bits, and must
yann@402
   122
-	 * be within the limit.
yann@402
   123
-	 */
yann@402
   124
-	unsigned long	io_bitmap[IO_BITMAP_LONGS + 1];
yann@402
   125
-	/*
yann@402
   126
-	 * pads the TSS to be cacheline-aligned (size is 0x100)
yann@402
   127
-	 */
yann@402
   128
-	unsigned long __cacheline_filler[37];
yann@402
   129
-	/*
yann@402
   130
-	 * .. and then another 0x100 bytes for emergency kernel stack
yann@402
   131
-	 */
yann@402
   132
-	unsigned long stack[64];
yann@402
   133
-} __attribute__((packed));
yann@402
   134
-
yann@402
   135
-#define ARCH_MIN_TASKALIGN	16
yann@402
   136
 
yann@402
   137
 struct thread_struct {
yann@402
   138
 /* cached TLS descriptors. */