diff -Nur linux-2.4.29/arch/i386/Makefile linux-2.4.29_geode/arch/i386/Makefile
--- linux-2.4.29/arch/i386/Makefile	Wed Nov 17 12:54:21 2004
+++ linux-2.4.29_geode/arch/i386/Makefile	Tue Feb 15 23:41:54 2005
@@ -94,6 +94,10 @@
 CFLAGS += $(call check_gcc,-march=c3-2,-march=i686)
 endif
 
+ifdef CONFIG_MGEODE
+CFLAGS += -march=i586
+endif
+
 # Disable unit-at-a-time mode, it makes gcc use a lot more stack
 # due to the lack of sharing of stacklots.
 CFLAGS += $(call check_gcc,-fno-unit-at-a-time,)
diff -Nur linux-2.4.29/arch/i386/config.in linux-2.4.29_geode/arch/i386/config.in
--- linux-2.4.29/arch/i386/config.in	Wed Nov 17 12:54:21 2004
+++ linux-2.4.29_geode/arch/i386/config.in	Tue Feb 15 23:41:54 2005
@@ -42,6 +42,7 @@
 	 Winchip-C6				CONFIG_MWINCHIPC6 \
 	 Winchip-2				CONFIG_MWINCHIP2 \
 	 Winchip-2A/Winchip-3			CONFIG_MWINCHIP3D \
+	 MediaGX/Geode                          CONFIG_MGEODE \
 	 CyrixIII/VIA-C3			CONFIG_MCYRIXIII \
 	 VIA-C3-2				CONFIG_MVIAC3_2" Pentium-Pro
 #
@@ -162,6 +163,14 @@
    define_bool CONFIG_X86_ALIGNMENT_16 y
    define_bool CONFIG_X86_USE_PPRO_CHECKSUM y
    define_bool CONFIG_X86_F00F_WORKS_OK y
+fi
+if [ "$CONFIG_MGEODE" = "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_PPRO_FENCE y
+   define_bool CONFIG_X86_OOSTORE y
 fi
 if [ "$CONFIG_MCRUSOE" = "y" ]; then
    define_int  CONFIG_X86_L1_CACHE_SHIFT 5