MCPcopy Create free account
hub / github.com/F-Stack/f-stack / identify_arm_cpu

Function identify_arm_cpu

freebsd/arm/arm/identcpu-v6.c:276–381  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

274}
275
276void
277identify_arm_cpu(void)
278{
279 int i;
280 u_int val;
281
282 /*
283 * CPU
284 */
285 for(i = 0; i < nitems(cpu_names); i++) {
286 if (cpu_names[i].implementer == cpuinfo.implementer &&
287 cpu_names[i].part_number == cpuinfo.part_number) {
288 cpu_class = cpu_names[i].cpu_class;
289 snprintf(cpu_model, sizeof(cpu_model),
290 "%s %s r%dp%d (ECO: 0x%08X)",
291 cpu_names[i].impl_name, cpu_names[i].core_name,
292 cpuinfo.revision, cpuinfo.patch,
293 cpuinfo.midr != cpuinfo.revidr ?
294 cpuinfo.revidr : 0);
295 printf("CPU: %s\n", cpu_model);
296 break;
297 }
298 }
299 if (i >= nitems(cpu_names))
300 printf("unknown CPU (ID = 0x%x)\n", cpuinfo.midr);
301
302 printf("CPU Features: \n");
303 hw_buf_idx = 0;
304 hw_buf_newline = true;
305
306 val = (cpuinfo.mpidr >> 4)& 0xF;
307 if (cpuinfo.mpidr & (1 << 31U))
308 add_cap("Multiprocessing");
309 val = (cpuinfo.id_pfr0 >> 4)& 0xF;
310 if (val == 1)
311 add_cap("Thumb");
312 else if (val == 3)
313 add_cap("Thumb2");
314
315 val = (cpuinfo.id_pfr1 >> 4)& 0xF;
316 if (val == 1 || val == 2)
317 add_cap("Security");
318
319 val = (cpuinfo.id_pfr1 >> 12)& 0xF;
320 if (val == 1)
321 add_cap("Virtualization");
322
323 val = (cpuinfo.id_pfr1 >> 16)& 0xF;
324 if (val == 1)
325 add_cap("Generic Timer");
326
327 val = (cpuinfo.id_mmfr0 >> 0)& 0xF;
328 if (val == 2) {
329 add_cap("VMSAv6");
330 } else if (val >= 3) {
331 add_cap("VMSAv7");
332 if (val >= 4)
333 add_cap("PXN");

Callers 1

cpu_startupFunction · 0.85

Calls 5

snprintfFunction · 0.85
add_capFunction · 0.85
print_v7_cacheFunction · 0.85
print_v5_cacheFunction · 0.85
printfFunction · 0.50

Tested by

no test coverage detected