
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) \


