@@ -53,6 +53,7 @@ struct hwloc_linux_backend_data_s {
53
53
HWLOC_LINUX_ARCH_ARM ,
54
54
HWLOC_LINUX_ARCH_POWER ,
55
55
HWLOC_LINUX_ARCH_S390 ,
56
+ HWLOC_LINUX_ARCH_LOONGARCH ,
56
57
HWLOC_LINUX_ARCH_UNKNOWN
57
58
} arch ;
58
59
int is_knl ;
@@ -5287,6 +5288,21 @@ hwloc_linux_parse_cpuinfo_ppc(const char *prefix, const char *value,
5287
5288
return 0 ;
5288
5289
}
5289
5290
5291
+ static int
5292
+ hwloc_linux_parse_cpuinfo_loongarch (const char * prefix , const char * value ,
5293
+ struct hwloc_infos_s * infos ,
5294
+ int is_global __hwloc_attribute_unused )
5295
+ {
5296
+ if (!strcmp ("Model Name" , prefix )) {
5297
+ if (value [0 ])
5298
+ hwloc__add_info (infos , "CPUModel" , value );
5299
+ } else if (!strcmp ("CPU Family" , prefix )) {
5300
+ if (value [0 ])
5301
+ hwloc__add_info (infos , "CPUFamily" , value );
5302
+ }
5303
+ return 0 ;
5304
+ }
5305
+
5290
5306
/*
5291
5307
* avr32: "chip type\t:" => OK
5292
5308
* blackfin: "model name\t:" => OK
@@ -5434,6 +5450,9 @@ hwloc_linux_parse_cpuinfo(struct hwloc_linux_backend_data_s *data,
5434
5450
case HWLOC_LINUX_ARCH_IA64 :
5435
5451
parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_ia64 ;
5436
5452
break ;
5453
+ case HWLOC_LINUX_ARCH_LOONGARCH :
5454
+ parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_loongarch ;
5455
+ break ;
5437
5456
default :
5438
5457
parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_generic ;
5439
5458
}
@@ -5593,6 +5612,8 @@ hwloc_gather_system_info(struct hwloc_topology *topology,
5593
5612
data -> arch = HWLOC_LINUX_ARCH_POWER ;
5594
5613
else if (!strncmp (data -> utsname .machine , "s390" , 4 ))
5595
5614
data -> arch = HWLOC_LINUX_ARCH_S390 ;
5615
+ else if (!strncmp (data -> utsname .machine , "loongarch" , 9 ))
5616
+ data -> arch = HWLOC_LINUX_ARCH_LOONGARCH ;
5596
5617
else if (!strcmp (data -> utsname .machine , "ia64" ))
5597
5618
data -> arch = HWLOC_LINUX_ARCH_IA64 ;
5598
5619
}
0 commit comments