Support for GEODE CPU's in Kernel 2.6.10.

From: Kianusch Sayah Karadji
Date: Sun Feb 27 2005 - 17:13:58 EST


Hi!

This is a small patch for GEODE CPU support in Kernel 2.6.10.

Those CPU's are found mostly in embedded systems ... one of the most prominent Hardware using GEODE CPU is probably soekris net4801 (http://www.soekris.com).

This patch has been on my homepage (http://www.sk-tech.net/support/soekris.html) for quite a time - but I've been asked several time to have it included in the main kernel.

Regards
Kianuschdiff -Nur linux-2.6.10/arch/i386/Kconfig linux-2.6.10_geode/arch/i386/Kconfig
--- linux-2.6.10/arch/i386/Kconfig Fri Dec 24 22:34:01 2004
+++ linux-2.6.10_geode/arch/i386/Kconfig Sun Feb 27 22:37:48 2005
@@ -183,6 +183,7 @@
- "Winchip-C6" for original IDT Winchip.
- "Winchip-2" for IDT Winchip 2.
- "Winchip-2A" for IDT Winchips with 3dNow! capabilities.
+ - "MediaGX/Geode" for Cyrix MediaGX aka Geode.
- "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
- "VIA C3-2 for VIA C3-2 "Nehemiah" (model 9 and above).

@@ -310,6 +311,13 @@
stores for this CPU, which can increase performance of some
operations.

+config MGEODE
+ bool "MediaGX/Geode"
+ help
+ Select this for a Cyrix MediaGX aka Geode chip. Linux and GCC
+ treat this chip as a 586TSC with some extended instructions
+ and alignment reqirements.
+
config MCYRIXIII
bool "CyrixIII/VIA-C3"
help
@@ -360,7 +368,7 @@
int
default "7" if MPENTIUM4 || X86_GENERIC
default "4" if X86_ELAN || M486 || M386
- default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2
+ default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODE
default "6" if MK7 || MK8 || MPENTIUMM

config RWSEM_GENERIC_SPINLOCK
@@ -375,7 +383,7 @@

config X86_PPRO_FENCE
bool
- depends on M686 || M586MMX || M586TSC || M586 || M486 || M386
+ depends on M686 || M586MMX || M586TSC || M586 || M486 || M386 || MGEODE
default y

config X86_F00F_BUG
@@ -405,7 +413,7 @@

config X86_ALIGNMENT_16
bool
- depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2
+ depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 || MGEODE
default y

config X86_GOOD_APIC
@@ -430,7 +438,7 @@

config X86_OOSTORE
bool
- depends on (MWINCHIP3D || MWINCHIP2 || MWINCHIPC6) && MTRR
+ depends on (MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MGEODE) && MTRR
default y

config HPET_TIMER
@@ -555,7 +563,7 @@

config X86_TSC
bool
- depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2) && !X86_NUMAQ
+ depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MGEODE) && !X86_NUMAQ
default y

config X86_MCE
diff -Nur linux-2.6.10/arch/i386/Makefile linux-2.6.10_geode/arch/i386/Makefile
--- linux-2.6.10/arch/i386/Makefile Fri Dec 24 22:34:31 2004
+++ linux-2.6.10_geode/arch/i386/Makefile Sun Feb 27 22:53:18 2005
@@ -14,6 +14,8 @@
# 19990713 Artur Skawina <skawina@xxxxxxxxxxxxx>
# Added '-march' and '-mpreferred-stack-boundary' support
#
+# Kianusch Sayah Karadji <kianusch@xxxxxxxxxxx>
+# Added support for GEODE CPU

LDFLAGS := -m elf_i386
OBJCOPYFLAGS := -O binary -R .note -R .comment -S
@@ -51,6 +53,9 @@

# AMD Elan support
cflags-$(CONFIG_X86_ELAN) += -march=i486
+
+# MediaGX aka Geode support
+cflags-$(CONFIG_MGEODE) += $(call cc-option,-march=pentium-mmx,-march=i586)

# -mregparm=3 works ok on gcc-3.0 and later
#
diff -Nur linux-2.6.10/include/asm-i386/module.h linux-2.6.10_geode/include/asm-i386/module.h
--- linux-2.6.10/include/asm-i386/module.h Fri Dec 24 22:34:00 2004
+++ linux-2.6.10_geode/include/asm-i386/module.h Sun Feb 27 22:34:19 2005
@@ -52,6 +52,8 @@
#define MODULE_PROC_FAMILY "CYRIXIII "
#elif defined CONFIG_MVIAC3_2
#define MODULE_PROC_FAMILY "VIAC3-2 "
+#elif CONFIG_MGEODE
+#define MODULE_PROC_FAMILY "GEODE "
#else
#error unknown processor family
#endif