Someone uploaded the following patch. But it apparantly doesn't work with gcc2.7.2 and most recent versions of libc, and ld.so. So, try it at your own risk. ---------------------------------------------------------------------- .... make[1]: Leaving directory `/usr/src/linux/arch/i386/mm' ld -qmagic -Ttext 0xfffe0 arch/i386/kernel/head.o init/main.o init/version.o \ arch/i386/kernel/kernel.o arch/i386/mm/mm.o kernel/kernel.o mm/mm.o fs/f s.o net/net.o ipc/ipc.o \ fs/filesystems.a \ drivers/block/block.a drivers/char/char.a drivers/net/net.a drivers/scsi /scsi.a drivers/sound/sound.a \ /usr/src/linux/lib/lib.a -o vmlinux ld: warning: cannot find entry symbol _start; defaulting to 000fffe0 arch/i386/kernel/head.o(.text+0x18): undefined reference to `__edata' arch/i386/kernel/head.o(.text+0x1d): undefined reference to `__end' arch/i386/kernel/head.o(.text+0x7f): undefined reference to `_x86' arch/i386/kernel/head.o(.text+0xa3): undefined reference to `_x86' arch/i386/kernel/head.o(.text+0xcf): undefined reference to `_x86' arch/i386/kernel/head.o(.text+0xdb): undefined reference to `_x86_model' arch/i386/kernel/head.o(.text+0xe4): undefined reference to `_x86_mask' ..... hundreads of lines of these stuff deleted ..... .... failed . ----------------------------------------------------------------------- --- ./linux/include/asm-i386/io.h- Mon Aug 15 00:56:19 1994 +++ ./linux/include/asm-i386/io.h Wed Nov 15 23:04:25 1995 @@ -49,9 +49,9 @@ #define __OUT(s,s1,x) \ __OUT1(s,x) __OUT2(s,s1,"w") : : "a" (value), "d" (port)); } \ -__OUT1(s##c,x) __OUT2(s,s1,"") : : "a" (value), "i" (port)); } \ +__OUT1(s##c,x) __OUT2(s,s1,"") : : "a" (value), "id" (port)); } \ __OUT1(s##_p,x) __OUT2(s,s1,"w") : : "a" (value), "d" (port)); SLOW_DOWN_IO; } \ -__OUT1(s##c_p,x) __OUT2(s,s1,"") : : "a" (value), "i" (port)); SLOW_DOWN_IO; } +__OUT1(s##c_p,x) __OUT2(s,s1,"") : : "a" (value), "id" (port)); SLOW_DOWN_IO; } #define __IN1(s) \ extern inline unsigned int __in##s(unsigned short port) { unsigned int _v; @@ -61,9 +61,9 @@ #define __IN(s,s1,i...) \ __IN1(s) __IN2(s,s1,"w") : "=a" (_v) : "d" (port) ,##i ); return _v; } \ -__IN1(s##c) __IN2(s,s1,"") : "=a" (_v) : "i" (port) ,##i ); return _v; } \ +__IN1(s##c) __IN2(s,s1,"") : "=a" (_v) : "id" (port) ,##i ); return _v; } \ __IN1(s##_p) __IN2(s,s1,"w") : "=a" (_v) : "d" (port) ,##i ); SLOW_DOWN_IO; return _v; } \ -__IN1(s##c_p) __IN2(s,s1,"") : "=a" (_v) : "i" (port) ,##i ); SLOW_DOWN_IO; return _v; } +__IN1(s##c_p) __IN2(s,s1,"") : "=a" (_v) : "id" (port) ,##i ); SLOW_DOWN_IO; return _v; } #define __INS(s) \ extern inline void ins##s(unsigned short port, void * addr, unsigned long count) \