Remove building with NOCRYPTO option
[minix.git] / minix / fs / procfs / cpuinfo.c
blob54fab20a2d3b9ceb6f9a31015aa0eb20ef1fbf77
1 /* ProcFS - cpuinfo.c - generator for the cpuinfo file */
3 #include "inc.h"
5 #if defined(__i386__)
6 #include "../../kernel/arch/i386/include/archconst.h"
7 #endif
9 #ifndef CONFIG_MAX_CPUS
10 #define CONFIG_MAX_CPUS 1
11 #endif
13 #if defined(__i386__)
14 static const char * x86_flag[] = {
15 "fpu",
16 "vme",
17 "de",
18 "pse",
19 "tsc",
20 "msr",
21 "pae",
22 "mce",
23 "cx8",
24 "apic",
25 "",
26 "sep",
27 "mtrr",
28 "pge",
29 "mca",
30 "cmov",
31 "pat",
32 "pse36",
33 "psn",
34 "clfsh",
35 "",
36 "dts",
37 "acpi",
38 "mmx",
39 "fxsr",
40 "sse",
41 "sse2",
42 "ss",
43 "ht",
44 "tm",
45 "",
46 "pbe",
47 "pni",
48 "",
49 "",
50 "monitor",
51 "ds_cpl",
52 "vmx",
53 "smx",
54 "est",
55 "tm2",
56 "ssse3",
57 "cid",
58 "",
59 "",
60 "cx16",
61 "xtpr",
62 "pdcm",
63 "",
64 "",
65 "dca",
66 "sse4_1",
67 "sse4_2",
68 "x2apic",
69 "movbe",
70 "popcnt",
71 "",
72 "",
73 "xsave",
74 "osxsave",
75 "",
76 "",
77 "",
78 "",
82 * Output a space-separated list of supported CPU flags. x86 only.
84 static void
85 print_x86_cpu_flags(u32_t * flags)
87 int i, j;
89 for (i = 0; i < 2; i++) {
90 for (j = 0; j < 32; j++) {
91 if (flags[i] & (1 << j) && x86_flag[i * 32 + j][0])
92 buf_printf("%s ", x86_flag[i * 32 + j]);
95 buf_printf("\n");
97 #endif
100 * Print information for a single CPU.
102 static void
103 print_cpu(struct cpu_info * cpu_info, unsigned id)
106 buf_printf("%-16s: %d\n", "processor", id);
108 #if defined(__i386__)
109 switch (cpu_info->vendor) {
110 case CPU_VENDOR_INTEL:
111 buf_printf("%-16s: %s\n", "vendor_id", "GenuineIntel");
112 buf_printf("%-16s: %s\n", "model name", "Intel");
113 break;
114 case CPU_VENDOR_AMD:
115 buf_printf("%-16s: %s\n", "vendor_id", "AuthenticAMD");
116 buf_printf("%-16s: %s\n", "model name", "AMD");
117 break;
118 default:
119 buf_printf("%-16s: %s\n", "vendor_id", "unknown");
122 buf_printf("%-16s: %d\n", "cpu family", cpu_info->family);
123 buf_printf("%-16s: %d\n", "model", cpu_info->model);
124 buf_printf("%-16s: %d\n", "stepping", cpu_info->stepping);
125 buf_printf("%-16s: %d\n", "cpu MHz", cpu_info->freq);
126 buf_printf("%-16s: ", "flags");
127 print_x86_cpu_flags(cpu_info->flags);
128 buf_printf("\n");
129 #endif
133 * Generate the contents of /proc/cpuinfo.
135 void
136 root_cpuinfo(void)
138 struct cpu_info cpu_info[CONFIG_MAX_CPUS];
139 struct machine machine;
140 unsigned int c;
142 if (sys_getmachine(&machine)) {
143 printf("PROCFS: cannot get machine\n");
144 return;
146 if (sys_getcpuinfo(&cpu_info)) {
147 printf("PROCFS: cannot get CPU info\n");
148 return;
151 for (c = 0; c < machine.processors_count; c++)
152 print_cpu(&cpu_info[c], c);