[OpenBIOS] r328 - clients/memtest86

svn at openbios.org svn at openbios.org
Fri Apr 27 23:50:06 CEST 2007


Author: wmb
Date: 2007-04-27 23:50:06 +0200 (Fri, 27 Apr 2007)
New Revision: 328

Modified:
   clients/memtest86/head.S
   clients/memtest86/init.c
Log:
OLPC trac #1375 - memtest fails to find L1/L2 cache size.  Added CPUID
entries for the AMD Geode GX and LX chips.


Modified: clients/memtest86/head.S
===================================================================
--- clients/memtest86/head.S	2007-04-27 06:49:05 UTC (rev 327)
+++ clients/memtest86/head.S	2007-04-27 21:50:06 UTC (rev 328)
@@ -368,6 +368,8 @@
 	movl	X86_VENDOR_ID+8(%esi),%eax
 	cmpl	$0x444d4163, %eax	# Is this an AMD CPU?
 	je	amd_type
+	cmpl	$0x43534e20, %eax	# " NSC" - Geode GX, now owned by AMD
+	je	amd_type
 	cmpl	$0x736c7561, %eax	# Is this a VIA CENTAUR?
 	jne	not_amd
 amd_type:

Modified: clients/memtest86/init.c
===================================================================
--- clients/memtest86/init.c	2007-04-27 06:49:05 UTC (rev 327)
+++ clients/memtest86/init.c	2007-04-27 21:50:06 UTC (rev 328)
@@ -280,9 +280,9 @@
 	v->pae = 0;
 
 #ifdef CPUID_DEBUG
-	dprint(11,0,cpu_id.type,3,1);
-	dprint(12,0,cpu_id.model,3,1);
-	dprint(13,0,cpu_id.cpuid,3,1);
+	dprint(13,0,cpu_id.type,3,1);
+	dprint(14,0,cpu_id.model,3,1);
+	dprint(15,0,cpu_id.cpuid,3,1);
 #endif
 
 	/* If the CPUID instruction is not supported then this is */
@@ -371,6 +371,9 @@
 				cprint(LINE_CPU, 0, "AMD K5");
 				off = 6;
 				break;
+                        /* case 5 doesn't exist, because it would be the   */
+                        /* AMD Geode GX, but the vendor ID string for that */
+                        /* part says "Geode by NSC", handled elsewhere.    */
 			case 6:
 			case 7:
 				cprint(LINE_CPU, 0, "AMD K6");
@@ -392,6 +395,14 @@
 				l2_cache = (cpu_id.cache_info[11] << 8);
 				l2_cache += cpu_id.cache_info[10];
 				break;
+			case 10:
+				cprint(LINE_CPU, 0, "AMD Geode LX");
+				off = 12;
+				l1_cache = cpu_id.cache_info[3];
+				l1_cache += cpu_id.cache_info[7];
+				l2_cache = (cpu_id.cache_info[11] << 8);
+				l2_cache += cpu_id.cache_info[10];
+				break;
 			case 13: 
 				cprint(LINE_CPU, 0, "AMD K6-III+"); 
 				off = 11; 
@@ -513,6 +524,11 @@
 			}
 			l1_cache = cpu_id.cache_info[3] + cpu_id.cache_info[7];
 			l2_cache = (cpu_id.cache_info[11]*256) + cpu_id.cache_info[10];
+		} else if ( cpu_id.vend_id[9] == 'N' ) { /* Geode by NSC (now AMD) */
+				cprint(LINE_CPU, 0, "AMD Geode GX");
+				off = 12;
+				l1_cache = cpu_id.cache_info[3];
+				l1_cache += cpu_id.cache_info[7];
 		} else {				/* GenuineIntel */
 			if (cpu_id.type == 4) {
 			switch(cpu_id.model) {




More information about the OpenBIOS mailing list