[PATCH 2.5.70] NatSemi Geode out-of-order store enables

From: Hiroshi Miura (miura@da-cha.org)
Date: Thu Jun 05 2003 - 06:39:24 EST


Hello,

This is a patch to enable oostore feature of geode.
Most geode specific code already merged, but it need
a definition of CONFIG_OOSTORE to speedup geode.

in arch/i386/kernel/cpu/cyrix.c:
static void __init set_cx86_reorder(void)
{
#ifdef CONFIG_OOSTORE
        u8 ccr3;

        printk(KERN_INFO "Enable Memory access reorder on Cyrix/NSC processor.\n");
        ccr3 = getCx86(CX86_CCR3);
        setCx86(CX86_CCR3, (ccr3 & 0x0f) | 0x10); /* enable MAPEN */

        /* Load/Store Serialize to mem access disable (=reorder it) */
        setCx86(CX86_PCR0, getCx86(CX86_PCR0) & ~0x80);
#ifdef CONFIG_NOHIGHMEM
        /* set load/store serialize from 1GB to 4GB */
        ccr3 |= 0xe0;
#endif
        setCx86(CX86_CCR3, ccr3);
#endif
}

To enable this following Kconfig patch might be good.
If user configure for 386 or 586, geode oostore is only disabled.
If configure for geode, an oostore feature is enabled and he/she will get more speed.
 

--- linux.o/arch/i386/Kconfig 2003-05-29 00:56:37.000000000 +0900
+++ linux/arch/i386/Kconfig 2003-05-29 19:42:32.000000000 +0900
@@ -284,6 +284,13 @@
           of SSE and tells gcc to treat the CPU as a 686.
           Note, this kernel will not boot on older (pre model 9) C3s.
 
+config MGEODE
+ bool "MediaGX/Geode"
+ help
+ Select this for a Cyrix MediaGX/GXM or NatSemi Geode GXM/GXLV/GX1
+ chip. Linux and GCC treat this chip as a 586MMX with some
+ extended instructions and work arounds.
+
 endchoice
 
 config X86_GENERIC
@@ -310,7 +317,7 @@
         int
         default "7" if MPENTIUM4 || X86_GENERIC
         default "4" if MELAN || M486 || M386
- default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2
+ default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODE
         default "6" if MK7 || MK8
 
 config RWSEM_GENERIC_SPINLOCK
@@ -355,7 +362,7 @@
 
 config X86_ALIGNMENT_16
         bool
- depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2
+ depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 || MGEODE
         default y
 
 config X86_GOOD_APIC
@@ -380,7 +387,7 @@
 
 config X86_OOSTORE
         bool
- depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6
+ depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MGEODE
         default y
 
 config HUGETLB_PAGE
@@ -489,7 +496,7 @@
 
 config X86_TSC
         bool
- depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2) && !X86_NUMAQ
+ depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MGEODE) && !X86_NUMAQ
         default y
 
 config X86_MCE

--- linux.o/include/asm-i386/module.h 2003-03-25 07:00:02.000000000 +0900
+++ linux/include/asm-i386/module.h 2003-05-29 19:45:06.000000000 +0900
@@ -48,6 +48,8 @@
 #define MODULE_PROC_FAMILY "CYRIXIII "
 #elif CONFIG_MVIAC3_2
 #define MODULE_PROC_FAMILY "VIAC3-2 "
+#elif CONFIG_MGEODE
+#define MODULE_PROC_FAMILY "GEODE "
 #else
 #error unknown processor family
 #endif

-- 
Hiroshi Miura  --- http://www.da-cha.org/ 
NTTDATA Corp. Marketing & Business Strategy Planning Dept. --- miurahr@nttdata.co.jp 
Key fingerprint = 9117 9407 5684 FBF1 4063  15B4 401D D077 04AB 8617
-- My hacking life is happy as the day is long

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Jun 07 2003 - 22:00:26 EST