@@ -81,23 +81,27 @@ static char *cpuname[] = {
81
81
int detect (void ){
82
82
#ifdef __linux
83
83
FILE * infile ;
84
- char buffer [512 ], * p ;
84
+ char buffer [512 ],isa_buffer [512 ],model_buffer [512 ];
85
+ const char * check_c910_str = "T-HEAD C910" ;
86
+ char * pmodel = NULL , * pisa = NULL ;
85
87
86
- p = (char * )NULL ;
87
88
infile = fopen ("/proc/cpuinfo" , "r" );
88
89
while (fgets (buffer , sizeof (buffer ), infile )){
89
- if (!strncmp ("isa" , buffer , 3 )){
90
- p = strchr (buffer , '4' ) + 1 ; /* the 4 in rv64ima... */
91
- #if 0
92
- fprintf (stderr , "%s\n" , p );
93
- #endif
94
- break ;
95
- }
90
+ if (!strncmp (buffer , "model name" , 10 )){
91
+ strcpy (model_buffer , buffer )
92
+ pmodel = strchr (isa_buffer , ':' ) + 1 ;
93
+ }
94
+
95
+ if (!strncmp (buffer , "isa" , 3 )){
96
+ strcpy (isa_buffer , buffer )
97
+ pisa = strchr (isa_buffer , '4' ) + 1 ;
98
+ }
96
99
}
97
100
98
101
fclose (infile );
99
102
100
- if (strchr (p , 'v' )) return CPU_C910V ;
103
+ if (strstr (pmodel , check_c910_str ) && strchr (p , 'v' ))
104
+ return CPU_C910V ;
101
105
102
106
return CPU_GENERIC ;
103
107
#endif
0 commit comments