Merge pull request #4461 from markdryan/cpuid_riscv64_crash
Fix two issues with cpuid_riscv64.c
This commit is contained in:
commit
7228c708d7
|
@ -84,6 +84,11 @@ static char *cpuname[] = {
|
||||||
"CPU_RISCV64_ZVL128B"
|
"CPU_RISCV64_ZVL128B"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static char *cpuname_lower[] = {
|
||||||
|
"riscv64_generic",
|
||||||
|
"c910v"
|
||||||
|
};
|
||||||
|
|
||||||
int detect(void){
|
int detect(void){
|
||||||
#ifdef __linux
|
#ifdef __linux
|
||||||
FILE *infile;
|
FILE *infile;
|
||||||
|
@ -92,23 +97,29 @@ int detect(void){
|
||||||
char *pmodel = NULL, *pisa = NULL;
|
char *pmodel = NULL, *pisa = NULL;
|
||||||
|
|
||||||
infile = fopen("/proc/cpuinfo", "r");
|
infile = fopen("/proc/cpuinfo", "r");
|
||||||
|
if (!infile)
|
||||||
|
return CPU_GENERIC;
|
||||||
while (fgets(buffer, sizeof(buffer), infile)){
|
while (fgets(buffer, sizeof(buffer), infile)){
|
||||||
if(!strncmp(buffer, "model name", 10)){
|
if(!strncmp(buffer, "model name", 10)){
|
||||||
strcpy(model_buffer, buffer);
|
strcpy(model_buffer, buffer);
|
||||||
pmodel = strchr(isa_buffer, ':') + 1;
|
pmodel = strchr(model_buffer, ':');
|
||||||
|
if (pmodel)
|
||||||
|
pmodel++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!strncmp(buffer, "isa", 3)){
|
if(!strncmp(buffer, "isa", 3)){
|
||||||
strcpy(isa_buffer, buffer);
|
strcpy(isa_buffer, buffer);
|
||||||
pisa = strchr(isa_buffer, '4') + 1;
|
pisa = strchr(isa_buffer, '4');
|
||||||
|
if (pisa)
|
||||||
|
pisa++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(infile);
|
fclose(infile);
|
||||||
|
|
||||||
if (!pmodel)
|
if (!pmodel || !pisa)
|
||||||
return(CPU_GENERIC);
|
return(CPU_GENERIC);
|
||||||
|
|
||||||
if (strstr(pmodel, check_c910_str) && strchr(pisa, 'v'))
|
if (strstr(pmodel, check_c910_str) && strchr(pisa, 'v'))
|
||||||
return CPU_C910V;
|
return CPU_C910V;
|
||||||
|
|
||||||
|
@ -146,5 +157,5 @@ void get_cpuconfig(void){
|
||||||
}
|
}
|
||||||
|
|
||||||
void get_libname(void){
|
void get_libname(void){
|
||||||
printf("riscv64\n");
|
printf("%s", cpuname_lower[detect()]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue