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"
|
||||
};
|
||||
|
||||
static char *cpuname_lower[] = {
|
||||
"riscv64_generic",
|
||||
"c910v"
|
||||
};
|
||||
|
||||
int detect(void){
|
||||
#ifdef __linux
|
||||
FILE *infile;
|
||||
|
@ -92,23 +97,29 @@ int detect(void){
|
|||
char *pmodel = NULL, *pisa = NULL;
|
||||
|
||||
infile = fopen("/proc/cpuinfo", "r");
|
||||
if (!infile)
|
||||
return CPU_GENERIC;
|
||||
while (fgets(buffer, sizeof(buffer), infile)){
|
||||
if(!strncmp(buffer, "model name", 10)){
|
||||
strcpy(model_buffer, buffer);
|
||||
pmodel = strchr(isa_buffer, ':') + 1;
|
||||
pmodel = strchr(model_buffer, ':');
|
||||
if (pmodel)
|
||||
pmodel++;
|
||||
}
|
||||
|
||||
if(!strncmp(buffer, "isa", 3)){
|
||||
strcpy(isa_buffer, buffer);
|
||||
pisa = strchr(isa_buffer, '4') + 1;
|
||||
pisa = strchr(isa_buffer, '4');
|
||||
if (pisa)
|
||||
pisa++;
|
||||
}
|
||||
}
|
||||
|
||||
fclose(infile);
|
||||
|
||||
if (!pmodel)
|
||||
if (!pmodel || !pisa)
|
||||
return(CPU_GENERIC);
|
||||
|
||||
|
||||
if (strstr(pmodel, check_c910_str) && strchr(pisa, 'v'))
|
||||
return CPU_C910V;
|
||||
|
||||
|
@ -146,5 +157,5 @@ void get_cpuconfig(void){
|
|||
}
|
||||
|
||||
void get_libname(void){
|
||||
printf("riscv64\n");
|
||||
printf("%s", cpuname_lower[detect()]);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue