Browse Source

Merge pull request #4461 from markdryan/cpuid_riscv64_crash

Fix two issues with cpuid_riscv64.c
tags/v0.3.27
Martin Kroeker GitHub 1 year ago
parent
commit
7228c708d7
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
1 changed files with 16 additions and 5 deletions
  1. +16
    -5
      cpuid_riscv64.c

+ 16
- 5
cpuid_riscv64.c View File

@@ -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…
Cancel
Save