yann@402: Fixes yann@402: yann@402: In file included from include/asm/thread_info.h:16, yann@402: from include/linux/thread_info.h:21, yann@402: from include/linux/spinlock.h:12, yann@402: from include/linux/capability.h:45, yann@402: from include/linux/sched.h:7, yann@402: from arch/i386/kernel/asm-offsets.c:7: yann@402: include/asm/processor.h:87: error: array type has incomplete element type yann@402: make[1]: *** [arch/i386/kernel/asm-offsets.asm] Error 1 yann@402: yann@402: --- linux-2.6.11.3/include/asm-i386/processor.h.old Tue Mar 15 06:45:26 2005 yann@402: +++ linux-2.6.11.3/include/asm-i386/processor.h Tue Mar 15 06:46:45 2005 yann@402: @@ -81,6 +81,64 @@ yann@402: #define X86_VENDOR_UNKNOWN 0xff yann@402: yann@402: /* yann@402: + * Size of io_bitmap. yann@402: + */ yann@402: +#define IO_BITMAP_BITS 65536 yann@402: +#define IO_BITMAP_BYTES (IO_BITMAP_BITS/8) yann@402: +#define IO_BITMAP_LONGS (IO_BITMAP_BYTES/sizeof(long)) yann@402: +#define INVALID_IO_BITMAP_OFFSET 0x8000 yann@402: +#define INVALID_IO_BITMAP_OFFSET_LAZY 0x9000 yann@402: + yann@402: +struct tss_struct { yann@402: + unsigned short back_link,__blh; yann@402: + unsigned long esp0; yann@402: + unsigned short ss0,__ss0h; yann@402: + unsigned long esp1; yann@402: + unsigned short ss1,__ss1h; /* ss1 is used to cache MSR_IA32_SYSENTER_CS */ yann@402: + unsigned long esp2; yann@402: + unsigned short ss2,__ss2h; yann@402: + unsigned long __cr3; yann@402: + unsigned long eip; yann@402: + unsigned long eflags; yann@402: + unsigned long eax,ecx,edx,ebx; yann@402: + unsigned long esp; yann@402: + unsigned long ebp; yann@402: + unsigned long esi; yann@402: + unsigned long edi; yann@402: + unsigned short es, __esh; yann@402: + unsigned short cs, __csh; yann@402: + unsigned short ss, __ssh; yann@402: + unsigned short ds, __dsh; yann@402: + unsigned short fs, __fsh; yann@402: + unsigned short gs, __gsh; yann@402: + unsigned short ldt, __ldth; yann@402: + unsigned short trace, io_bitmap_base; yann@402: + /* yann@402: + * The extra 1 is there because the CPU will access an yann@402: + * additional byte beyond the end of the IO permission yann@402: + * bitmap. The extra byte must be all 1 bits, and must yann@402: + * be within the limit. yann@402: + */ yann@402: + unsigned long io_bitmap[IO_BITMAP_LONGS + 1]; yann@402: + /* yann@402: + * Cache the current maximum and the last task that used the bitmap: yann@402: + */ yann@402: + unsigned long io_bitmap_max; yann@402: + struct thread_struct *io_bitmap_owner; yann@402: + /* yann@402: + * pads the TSS to be cacheline-aligned (size is 0x100) yann@402: + */ yann@402: + unsigned long __cacheline_filler[35]; yann@402: + /* yann@402: + * .. and then another 0x100 bytes for emergency kernel stack yann@402: + */ yann@402: + unsigned long stack[64]; yann@402: +} __attribute__((packed)); yann@402: + yann@402: +#define IO_BITMAP_OFFSET offsetof(struct tss_struct,io_bitmap) yann@402: +#define ARCH_MIN_TASKALIGN 16 yann@402: + yann@402: +/* yann@402: * capabilities of CPUs yann@402: */ yann@402: yann@402: @@ -308,16 +366,6 @@ yann@402: yann@402: #define HAVE_ARCH_PICK_MMAP_LAYOUT yann@402: yann@402: -/* yann@402: - * Size of io_bitmap. yann@402: - */ yann@402: -#define IO_BITMAP_BITS 65536 yann@402: -#define IO_BITMAP_BYTES (IO_BITMAP_BITS/8) yann@402: -#define IO_BITMAP_LONGS (IO_BITMAP_BYTES/sizeof(long)) yann@402: -#define IO_BITMAP_OFFSET offsetof(struct tss_struct,io_bitmap) yann@402: -#define INVALID_IO_BITMAP_OFFSET 0x8000 yann@402: -#define INVALID_IO_BITMAP_OFFSET_LAZY 0x9000 yann@402: - yann@402: struct i387_fsave_struct { yann@402: long cwd; yann@402: long swd; yann@402: @@ -371,54 +419,6 @@ yann@402: } mm_segment_t; yann@402: yann@402: struct thread_struct; yann@402: - yann@402: -struct tss_struct { yann@402: - unsigned short back_link,__blh; yann@402: - unsigned long esp0; yann@402: - unsigned short ss0,__ss0h; yann@402: - unsigned long esp1; yann@402: - unsigned short ss1,__ss1h; /* ss1 is used to cache MSR_IA32_SYSENTER_CS */ yann@402: - unsigned long esp2; yann@402: - unsigned short ss2,__ss2h; yann@402: - unsigned long __cr3; yann@402: - unsigned long eip; yann@402: - unsigned long eflags; yann@402: - unsigned long eax,ecx,edx,ebx; yann@402: - unsigned long esp; yann@402: - unsigned long ebp; yann@402: - unsigned long esi; yann@402: - unsigned long edi; yann@402: - unsigned short es, __esh; yann@402: - unsigned short cs, __csh; yann@402: - unsigned short ss, __ssh; yann@402: - unsigned short ds, __dsh; yann@402: - unsigned short fs, __fsh; yann@402: - unsigned short gs, __gsh; yann@402: - unsigned short ldt, __ldth; yann@402: - unsigned short trace, io_bitmap_base; yann@402: - /* yann@402: - * The extra 1 is there because the CPU will access an yann@402: - * additional byte beyond the end of the IO permission yann@402: - * bitmap. The extra byte must be all 1 bits, and must yann@402: - * be within the limit. yann@402: - */ yann@402: - unsigned long io_bitmap[IO_BITMAP_LONGS + 1]; yann@402: - /* yann@402: - * Cache the current maximum and the last task that used the bitmap: yann@402: - */ yann@402: - unsigned long io_bitmap_max; yann@402: - struct thread_struct *io_bitmap_owner; yann@402: - /* yann@402: - * pads the TSS to be cacheline-aligned (size is 0x100) yann@402: - */ yann@402: - unsigned long __cacheline_filler[35]; yann@402: - /* yann@402: - * .. and then another 0x100 bytes for emergency kernel stack yann@402: - */ yann@402: - unsigned long stack[64]; yann@402: -} __attribute__((packed)); yann@402: - yann@402: -#define ARCH_MIN_TASKALIGN 16 yann@402: yann@402: struct thread_struct { yann@402: /* cached TLS descriptors. */