diff -Nru linux-old/Makefile linux-new/Makefile
--- linux-old/Makefile	2002-10-23 21:18:49.000000000 -0400
+++ linux-new/Makefile	2002-10-23 21:20:54.000000000 -0400
@@ -17,7 +17,7 @@
 FINDHPATH	= $(HPATH)/asm $(HPATH)/linux $(HPATH)/scsi $(HPATH)/net $(HPATH)/math-emu
 
 HOSTCC  	= gcc
-HOSTCFLAGS	= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
+HOSTCFLAGS	= -Wall -Wstrict-prototypes -Os -fomit-frame-pointer
 
 CROSS_COMPILE 	=
 
@@ -89,7 +89,7 @@
 
 CPPFLAGS := -D__KERNEL__ -I$(HPATH)
 
-CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes -Wno-trigraphs -O2 \
+CFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes -Wno-trigraphs -Os \
 	  -fno-strict-aliasing -fno-common
 ifndef CONFIG_FRAME_POINTER
 CFLAGS += -fomit-frame-pointer
diff -Nru linux-old/arch/i386/Makefile linux-new/arch/i386/Makefile
--- linux-old/arch/i386/Makefile	2002-10-23 21:00:52.000000000 -0400
+++ linux-new/arch/i386/Makefile	2002-10-23 21:20:54.000000000 -0400
@@ -46,24 +46,56 @@
 CFLAGS += -march=i586
 endif
 
+ifdef CONFIG_M586MMX31
+CFLAGS += -march=pentium -Os -mmmx
+endif
+
 ifdef CONFIG_M686
 CFLAGS += -march=i686
 endif
 
+ifdef CONFIG_M68631
+CFLAGS += -march=i686 -Os -mmmx
+endif
+
 ifdef CONFIG_MPENTIUMIII
 CFLAGS += -march=i686
 endif
 
+ifdef CONFIG_MPENTIUMIII31
+CFLAGS += -march=pentium3 -Os -mmmx -msse
+endif
+
 ifdef CONFIG_MPENTIUM4
 CFLAGS += -march=i686
 endif
 
+ifdef CONFIG_MPENTIUM431
+CFLAGS += -march=pentium4 -mmmx -msse -msse2 
+endif
+
 ifdef CONFIG_MK6
 CFLAGS += $(shell if $(CC) -march=k6 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=k6"; else echo "-march=i586"; fi)
 endif
 
+ifdef CONFIG_MK6231
+CFLAGS += -march=k6-2 -Os
+endif
+
 ifdef CONFIG_MK7
-CFLAGS += $(shell if $(CC) -march=athlon -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=athlon"; else echo "-march=i686 -malign-functions=4"; fi) 
+CFLAGS += -march=i686 -malign-functions=4 -Os
+endif
+
+ifdef CONFIG_MK731
+CFLAGS += -march=athlon -Os
+endif
+
+ifdef CONFIG_MXP31
+CFLAGS += -march=athlon-xp -Os
+endif
+
+ifdef CONFIG_MMP31
+CFLAGS += -march=athlon-mp -Os
 endif
 
 ifdef CONFIG_MCRUSOE
diff -Nru linux-old/arch/i386/config.in linux-new/arch/i386/config.in
--- linux-old/arch/i386/config.in	2002-10-23 21:18:49.000000000 -0400
+++ linux-new/arch/i386/config.in	2002-10-23 21:20:54.000000000 -0400
@@ -31,11 +31,19 @@
 	 586/K5/5x86/6x86/6x86MX		CONFIG_M586 \
 	 Pentium-Classic			CONFIG_M586TSC \
 	 Pentium-MMX				CONFIG_M586MMX \
+	 Pentium-MMX(gcc>31)			CONFIG_M586MMX31 \
 	 Pentium-Pro/Celeron/Pentium-II		CONFIG_M686 \
+	 Pentium-Pro/Celeron/Pentium-II(gcc>31)	CONFIG_M68631 \
 	 Pentium-III/Celeron(Coppermine)	CONFIG_MPENTIUMIII \
+	 Pentium-III/Celeron(Coppermine)(gcc>31)	CONFIG_MPENTIUMIII31 \
 	 Pentium-4				CONFIG_MPENTIUM4 \
+	 Pentium-4(gcc>31)			CONFIG_MPENTIUM431 \
 	 K6/K6-II/K6-III			CONFIG_MK6 \
+	 K6-II/K6-III(gcc>31)			CONFIG_MK6231 \
 	 Athlon/Duron/K7			CONFIG_MK7 \
+	 Athlon/Duron/K7(>gcc31)			CONFIG_MK731 \
+	 AthlonXP(gcc>31)			CONFIG_MXP31 \
+	 AthlonMP(gcc>31)			CONFIG_MMP31 \
 	 Elan					CONFIG_MELAN \
 	 Crusoe					CONFIG_MCRUSOE \
 	 Winchip-C6				CONFIG_MWINCHIPC6 \
@@ -95,6 +103,14 @@
    define_bool CONFIG_X86_PPRO_FENCE y
    define_bool CONFIG_X86_F00F_WORKS_OK n
 fi
+if [ "$CONFIG_M586MMX31" = "y" ]; then
+   define_int  CONFIG_X86_L1_CACHE_SHIFT 5
+   define_bool CONFIG_X86_USE_STRING_486 y
+   define_bool CONFIG_X86_ALIGNMENT_16 y
+   define_bool CONFIG_X86_TSC y
+   define_bool CONFIG_X86_GOOD_APIC y
+   define_bool CONFIG_X86_PPRO_FENCE y
+fi
 if [ "$CONFIG_M686" = "y" ]; then
    define_int  CONFIG_X86_L1_CACHE_SHIFT 5
    define_bool CONFIG_X86_TSC y
@@ -104,6 +120,14 @@
    define_bool CONFIG_X86_PPRO_FENCE y
    define_bool CONFIG_X86_F00F_WORKS_OK y
 fi
+if [ "$CONFIG_M68631" = "y" ]; then
+   define_int  CONFIG_X86_L1_CACHE_SHIFT 5
+   define_bool CONFIG_X86_TSC y
+   define_bool CONFIG_X86_GOOD_APIC y
+   define_bool CONFIG_X86_PGE y
+   define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
+   define_bool CONFIG_X86_PPRO_FENCE y
+fi
 if [ "$CONFIG_MPENTIUMIII" = "y" ]; then
    define_int  CONFIG_X86_L1_CACHE_SHIFT 5
    define_bool CONFIG_X86_TSC y
@@ -112,6 +136,13 @@
    define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
    define_bool CONFIG_X86_F00F_WORKS_OK y
 fi
+if [ "$CONFIG_MPENTIUMIII31" = "y" ]; then
+   define_int  CONFIG_X86_L1_CACHE_SHIFT 5
+   define_bool CONFIG_X86_TSC y
+   define_bool CONFIG_X86_GOOD_APIC y
+   define_bool CONFIG_X86_PGE y
+   define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
+fi
 if [ "$CONFIG_MPENTIUM4" = "y" ]; then
    define_int  CONFIG_X86_L1_CACHE_SHIFT 7
    define_bool CONFIG_X86_TSC y
@@ -120,12 +151,25 @@
    define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
    define_bool CONFIG_X86_F00F_WORKS_OK y
 fi
+if [ "$CONFIG_MPENTIUM431" = "y" ]; then
+   define_int  CONFIG_X86_L1_CACHE_SHIFT 7
+   define_bool CONFIG_X86_TSC y
+   define_bool CONFIG_X86_GOOD_APIC y
+   define_bool CONFIG_X86_PGE y
+   define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
+fi
 if [ "$CONFIG_MK6" = "y" ]; then
    define_int  CONFIG_X86_L1_CACHE_SHIFT 5
    define_bool CONFIG_X86_ALIGNMENT_16 y
    define_bool CONFIG_X86_TSC y
    define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
 fi
+if [ "$CONFIG_MK6231" = "y" ]; then
+   define_int  CONFIG_X86_L1_CACHE_SHIFT 5
+   define_bool CONFIG_X86_ALIGNMENT_16 y
+   define_bool CONFIG_X86_TSC y
+   define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
+fi
 if [ "$CONFIG_MK7" = "y" ]; then
    define_int  CONFIG_X86_L1_CACHE_SHIFT 6
    define_bool CONFIG_X86_TSC y
@@ -135,6 +179,30 @@
    define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
    define_bool CONFIG_X86_F00F_WORKS_OK y
 fi
+if [ "$CONFIG_MK731" = "y" ]; then
+   define_int  CONFIG_X86_L1_CACHE_SHIFT 6
+   define_bool CONFIG_X86_TSC y
+   define_bool CONFIG_X86_GOOD_APIC y
+   define_bool CONFIG_X86_USE_3DNOW y
+   define_bool CONFIG_X86_PGE y
+   define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
+fi
+if [ "$CONFIG_MXP31" = "y" ]; then
+   define_int  CONFIG_X86_L1_CACHE_SHIFT 6
+   define_bool CONFIG_X86_TSC y
+   define_bool CONFIG_X86_GOOD_APIC y
+   define_bool CONFIG_X86_USE_3DNOW y
+   define_bool CONFIG_X86_PGE y
+   define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
+fi
+if [ "$CONFIG_MMP31" = "y" ]; then
+   define_int  CONFIG_X86_L1_CACHE_SHIFT 6
+   define_bool CONFIG_X86_TSC y
+   define_bool CONFIG_X86_GOOD_APIC y
+   define_bool CONFIG_X86_USE_3DNOW y
+   define_bool CONFIG_X86_PGE y
+   define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
+fi
 if [ "$CONFIG_MELAN" = "y" ]; then
    define_int  CONFIG_X86_L1_CACHE_SHIFT 4
    define_bool CONFIG_X86_USE_STRING_486 y
diff -Nru linux-old/arch/i386/lib/mmx.c linux-new/arch/i386/lib/mmx.c
--- linux-old/arch/i386/lib/mmx.c	2002-10-23 20:54:42.000000000 -0400
+++ linux-new/arch/i386/lib/mmx.c	2002-10-23 21:20:54.000000000 -0400
@@ -121,7 +121,8 @@
 	return p;
 }
 
-#ifdef CONFIG_MK7
+#if defined(CONFIG_MK7) || defined(CONFIG_MK731) \
+			|| defined(CONFIG_MXP31) || defined(CONFIG_MMP31)
 
 /*
  *	The K7 has streaming cache bypass load/store. The Cyrix III, K6 and
diff -Nru linux-old/include/asm-i386/processor.h linux-new/include/asm-i386/processor.h
--- linux-old/include/asm-i386/processor.h	2002-10-23 21:00:52.000000000 -0400
+++ linux-new/include/asm-i386/processor.h	2002-10-23 21:20:54.000000000 -0400
@@ -496,7 +496,7 @@
 #define cpu_relax()	rep_nop()
 
 /* Prefetch instructions for Pentium III and AMD Athlon */
-#ifdef 	CONFIG_MPENTIUMIII
+#if defined(CONFIG_MPENTIUMIII) || defined(CONFIG_MPENTIUMIII31)
 
 #define ARCH_HAS_PREFETCH
 extern inline void prefetch(const void *x)
