|
|
@@ -72,10 +72,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
|
|
|
|
|
|
#define CPU_UNKNOWN 0 |
|
|
|
#define CPU_P5600 1 |
|
|
|
#define CPU_1004K 2 |
|
|
|
|
|
|
|
static char *cpuname[] = { |
|
|
|
"UNKOWN", |
|
|
|
"P5600" |
|
|
|
"P5600", |
|
|
|
"1004K" |
|
|
|
}; |
|
|
|
|
|
|
|
int detect(void){ |
|
|
@@ -90,7 +92,7 @@ int detect(void){ |
|
|
|
if (!strncmp("cpu", buffer, 3)){ |
|
|
|
p = strchr(buffer, ':') + 2; |
|
|
|
#if 0 |
|
|
|
fprintf(stderr, "%s\n", p); |
|
|
|
fprintf(stderr, "%s \n", p); |
|
|
|
#endif |
|
|
|
break; |
|
|
|
} |
|
|
@@ -99,43 +101,13 @@ int detect(void){ |
|
|
|
fclose(infile); |
|
|
|
|
|
|
|
if(p != NULL){ |
|
|
|
if (strstr(p, "Loongson-3A")){ |
|
|
|
return CPU_LOONGSON3A; |
|
|
|
}else if(strstr(p, "Loongson-3B")){ |
|
|
|
return CPU_LOONGSON3B; |
|
|
|
}else if (strstr(p, "Loongson-3")){ |
|
|
|
infile = fopen("/proc/cpuinfo", "r"); |
|
|
|
p = (char *)NULL; |
|
|
|
while (fgets(buffer, sizeof(buffer), infile)){ |
|
|
|
if (!strncmp("system type", buffer, 11)){ |
|
|
|
p = strchr(buffer, ':') + 2; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
fclose(infile); |
|
|
|
if (strstr(p, "loongson3a")) |
|
|
|
return CPU_LOONGSON3A; |
|
|
|
}else{ |
|
|
|
if (strstr(p, "5600")) { |
|
|
|
return CPU_P5600; |
|
|
|
} else if (strstr(p, "1004K")) { |
|
|
|
return CPU_1004K; |
|
|
|
} else |
|
|
|
return CPU_UNKNOWN; |
|
|
|
} |
|
|
|
} |
|
|
|
//Check model name for Loongson3 |
|
|
|
infile = fopen("/proc/cpuinfo", "r"); |
|
|
|
p = (char *)NULL; |
|
|
|
while (fgets(buffer, sizeof(buffer), infile)){ |
|
|
|
if (!strncmp("model name", buffer, 10)){ |
|
|
|
p = strchr(buffer, ':') + 2; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
fclose(infile); |
|
|
|
if(p != NULL){ |
|
|
|
if (strstr(p, "Loongson-3A")){ |
|
|
|
return CPU_LOONGSON3A; |
|
|
|
}else if(strstr(p, "Loongson-3B")){ |
|
|
|
return CPU_LOONGSON3B; |
|
|
|
} |
|
|
|
} |
|
|
|
#endif |
|
|
|
return CPU_UNKNOWN; |
|
|
|
} |
|
|
@@ -149,7 +121,7 @@ void get_architecture(void){ |
|
|
|
} |
|
|
|
|
|
|
|
void get_subarchitecture(void){ |
|
|
|
if(detect()==CPU_P5600){ |
|
|
|
if(detect()==CPU_P5600|| detect()==CPU_1004K){ |
|
|
|
printf("P5600"); |
|
|
|
}else{ |
|
|
|
printf("UNKNOWN"); |
|
|
@@ -170,6 +142,14 @@ void get_cpuconfig(void){ |
|
|
|
printf("#define DTB_DEFAULT_ENTRIES 64\n"); |
|
|
|
printf("#define DTB_SIZE 4096\n"); |
|
|
|
printf("#define L2_ASSOCIATIVE 8\n"); |
|
|
|
} else if (detect()==CPU_1004K) { |
|
|
|
printf("#define MIPS1004K\n"); |
|
|
|
printf("#define L1_DATA_SIZE 32768\n"); |
|
|
|
printf("#define L1_DATA_LINESIZE 32\n"); |
|
|
|
printf("#define L2_SIZE 26144\n"); |
|
|
|
printf("#define DTB_DEFAULT_ENTRIES 8\n"); |
|
|
|
printf("#define DTB_SIZE 4096\n"); |
|
|
|
printf("#define L2_ASSOCIATIVE 4\n"); |
|
|
|
}else{ |
|
|
|
printf("#define UNKNOWN\n"); |
|
|
|
} |
|
|
@@ -178,6 +158,8 @@ void get_cpuconfig(void){ |
|
|
|
void get_libname(void){ |
|
|
|
if(detect()==CPU_P5600) { |
|
|
|
printf("p5600\n"); |
|
|
|
} else if (detect()==CPU_1004K) { |
|
|
|
printf("1004K\n"); |
|
|
|
}else{ |
|
|
|
printf("mips\n"); |
|
|
|
} |
|
|
|