mcst-linux-kernel/patches-2024.06.26/hwinfo-21.68/0008-e2k-arch.patch

123 lines
3.7 KiB
Diff

--- a/src/hd/cpu.c 2020-02-20 20:48:57.078283266 +0300
+++ b/src/hd/cpu.c 2020-02-20 20:57:29.405932805 +0300
@@ -104,6 +104,7 @@
#ifdef __alpha__
char model_id[80], system_id[80], serial_number[80], platform[80];
unsigned cpu_variation, cpu_revision, u, hz;
+ double bogo;
cpu_info_t *ct1;
#endif
@@ -154,6 +155,12 @@
char uarch[80];
#endif
+#if defined __e2k__
+ char model_id[80], vendor_id[80];
+ unsigned mhz, cache, family, model, cpu_revision;
+ double bogo;
+#endif
+
hd_data->cpu = read_file(PROC_CPUINFO, 0, 0);
if((hd_data->debug & HD_DEB_CPU)) dump_cpu_data(hd_data);
if(!hd_data->cpu) return;
@@ -161,6 +168,7 @@
#ifdef __alpha__
*model_id = *system_id = *serial_number = *platform = 0;
cpu_variation = cpu_revision = hz = 0;
+ bogo = 0;
for(sl = hd_data->cpu; sl; sl = sl->next) {
if(sscanf(sl->str, "cpu model : %79[^\n]", model_id) == 1) continue;
@@ -171,6 +179,7 @@
if(sscanf(sl->str, "cpus detected : %u", &cpus) == 1) continue;
if(sscanf(sl->str, "cycle frequency [Hz] : %u", &hz) == 1) continue;
if(sscanf(sl->str, "system variation : %79[^\n]", platform) == 1) continue;
+ if(sscanf(sl->str, "BogoMIPS : %lg", &bogo) == 1) continue;
}
if(*model_id || *system_id) { /* at least one of those */
@@ -715,6 +724,82 @@
}
}
#endif /* __riscv */
+
+#if defined __e2k__
+ *model_id = *vendor_id = 0;
+ mhz = cache = family = model = cpu_revision = 0;
+ bogo = 0;
+
+ for(sl = hd_data->cpu; sl; sl = sl->next) {
+ if(sscanf(sl->str, "model name : %79[^\n]", model_id) == 1);
+ if(sscanf(sl->str, "vendor_id : %79[^\n]", vendor_id) == 1);
+ if(sscanf(sl->str, "bogomips : %lg", &bogo) == 1);
+ if(sscanf(sl->str, "cpu MHz : %u", &mhz) == 1);
+ if(sscanf(sl->str, "L2 cache size : %u KB", &cache) == 1);
+
+ if(sscanf(sl->str, "cpu family : %u", &family) == 1);
+ if(sscanf(sl->str, "model : %u", &model) == 1);
+ if(sscanf(sl->str, "revision : %u", &cpu_revision) == 1);
+
+ if(strstr(sl->str, "processor") == sl->str || !sl->next) { /* EOF */
+ if(*model_id || *vendor_id) { /* at least one of those */
+ ct = new_mem(sizeof *ct);
+ ct->architecture = arch_e2k;
+ if(*model_id) ct->model_name = new_str(model_id);
+ if(*vendor_id) ct->vend_name = new_str(vendor_id);
+ ct->family = family;
+ ct->model = model;
+ ct->stepping = cpu_revision;
+ ct->cache = cache;
+ ct->bogo = bogo;
+
+ /* round clock to typical values */
+ if(mhz >= 38 && mhz <= 42)
+ mhz = 40;
+ else if(mhz >= 88 && mhz <= 92)
+ mhz = 90;
+ else {
+ unsigned u, v;
+
+ u = (mhz + 2) % 100;
+ v = (mhz + 2) / 100;
+ if(u <= 4)
+ u = 2;
+ else if(u >= 25 && u <= 29)
+ u = 25 + 2;
+ else if(u >= 33 && u <= 37)
+ u = 33 + 2;
+ else if(u >= 50 && u <= 54)
+ u = 50 + 2;
+ else if(u >= 66 && u <= 70)
+ u = 66 + 2;
+ else if(u >= 75 && u <= 79)
+ u = 75 + 2;
+ else if(u >= 80 && u <= 84) /* there are 180MHz PPros */
+ u = 80 + 2;
+ u -= 2;
+ mhz = v * 100 + u;
+ }
+
+ ct->clock = mhz;
+
+ hd = add_hd_entry(hd_data, __LINE__, 0);
+ hd->base_class.id = bc_internal;
+ hd->sub_class.id = sc_int_cpu;
+ hd->slot = cpus;
+ hd->detail = new_mem(sizeof *hd->detail);
+ hd->detail->type = hd_detail_cpu;
+ hd->detail->cpu.data = ct;
+
+ *model_id = *vendor_id = 0;
+ mhz = cache = family = model= 0;
+ bogo = 0;
+ cpus++;
+ }
+ }
+ }
+#endif /* __e2k__ */
+
}
/*