On Wed, Aug 31, 2005 at 02:59:46PM +0100, Damian Dimmich wrote: > I had some trouble compiling 2.6.13 for the mips architecture. I encountered > two errors: > > 1) > > In the file include/asm-mips/thread_info.h TIF_32BIT was undefined. > > I added the following two lines which showed up in parisc and ppc64 's > thread-info's. Don't know if these values are correct or if this actually > works. It just gets it to compile... > #define TIF_32BIT 5 /* 32 bit binary */ > #define _TIF_32BIT (1<<TIF_32BIT) > > The error was in drivers/input/evdev.c which includes > include/asm-mips/thread_info.h > > The error was: > CC [M] drivers/input/evdev.o > drivers/input/evdev.c: In function `evdev_write': > drivers/input/evdev.c:193: error: `TIF_32BIT' undeclared (first use in this > function) > drivers/input/evdev.c:193: error: (Each undeclared identifier is reported only > once > drivers/input/evdev.c:193: error: for each function it appears in.) > drivers/input/evdev.c: In function `evdev_read': > drivers/input/evdev.c:254: error: `TIF_32BIT' undeclared (first use in this > function) That driver's 32-bit compatibility is totally broken, I'm afraid. It'll be easy to kludge though ... > 2) > > When linking .tmp_vmlinux1, KSEG1ADDR and KSEG1 where reported as undefined > and linking failed. > LD .tmp_vmlinux1 > arch/mips/sgi-ip22/built-in.o(.text+0x2854): In function `ip22_eisa_intr': > : undefined reference to `KSEG1ADDR' > arch/mips/sgi-ip22/built-in.o(.text+0x2864): In function `ip22_eisa_intr': > : undefined reference to `KSEG1ADDR' > arch/mips/sgi-ip22/built-in.o(.text+0x2870): In function `ip22_eisa_intr': > : undefined reference to `KSEG1ADDR' > arch/mips/sgi-ip22/built-in.o(.text+0x28ac): In function `ip22_eisa_intr': > : undefined reference to `KSEG1ADDR' > arch/mips/sgi-ip22/built-in.o(.text+0x28c0): In function `ip22_eisa_intr': > : undefined reference to `KSEG1ADDR' > arch/mips/sgi-ip22/built-in.o(.text+0x293c): more undefined references to > `KSEG1ADDR' follow > make: *** [.tmp_vmlinux1] Error 1 > > > I fixed this by adding the lines: > #define KSEG1ADDR(a) (CPHYSADDR(a) | KSEG1) > #define KSEG1 0xa0000000 > at the top of the file arch/mips/sgi-ip22/ip22-eisa.c > These are copied from include/asm/addrspace.h > > I found it quite strange that it only failed when linking the kernel and not > earlier. The file asm/addrspace.h is included in ip22-eisa.c > > eisa support is enabled and i'm compiling a 64 bit kernel. Daring. Hardly anybody is using EISA on that machine and even less so on 64-bit, expect to find bugs. > gcc version 3.3.3 (Debian) Should be a safe choice of compiler. Ralf