diff options
author | Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com> | 2008-02-20 13:48:55 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-04-17 11:40:48 -0400 |
commit | eb19067d160416cd61fc92a8913ccfb3497b20b7 (patch) | |
tree | ae696129289cb37b1e248c55cb1b9ee30f041a78 /arch | |
parent | 2aef77204e1e3a8ed6345727afbcb2c1efdf7fc0 (diff) |
x86: unify cpu/proc|_64.c
Now cpu/proc.c and cpu/proc_64.c are same.
So cpu/proc_64.c can be removed.
Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/cpu/Makefile | 5 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/proc_64.c | 180 |
2 files changed, 2 insertions, 183 deletions
diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile index 8ba7d281fbc2..ee7c45235e54 100644 --- a/arch/x86/kernel/cpu/Makefile +++ b/arch/x86/kernel/cpu/Makefile | |||
@@ -3,9 +3,9 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := intel_cacheinfo.o addon_cpuid_features.o | 5 | obj-y := intel_cacheinfo.o addon_cpuid_features.o |
6 | obj-y += feature_names.o | 6 | obj-y += proc.o feature_names.o |
7 | 7 | ||
8 | obj-$(CONFIG_X86_32) += common.o proc.o bugs.o | 8 | obj-$(CONFIG_X86_32) += common.o bugs.o |
9 | obj-$(CONFIG_X86_32) += amd.o | 9 | obj-$(CONFIG_X86_32) += amd.o |
10 | obj-$(CONFIG_X86_32) += cyrix.o | 10 | obj-$(CONFIG_X86_32) += cyrix.o |
11 | obj-$(CONFIG_X86_32) += centaur.o | 11 | obj-$(CONFIG_X86_32) += centaur.o |
@@ -13,7 +13,6 @@ obj-$(CONFIG_X86_32) += transmeta.o | |||
13 | obj-$(CONFIG_X86_32) += intel.o | 13 | obj-$(CONFIG_X86_32) += intel.o |
14 | obj-$(CONFIG_X86_32) += nexgen.o | 14 | obj-$(CONFIG_X86_32) += nexgen.o |
15 | obj-$(CONFIG_X86_32) += umc.o | 15 | obj-$(CONFIG_X86_32) += umc.o |
16 | obj-$(CONFIG_X86_64) += proc_64.o | ||
17 | 16 | ||
18 | obj-$(CONFIG_X86_MCE) += mcheck/ | 17 | obj-$(CONFIG_X86_MCE) += mcheck/ |
19 | obj-$(CONFIG_MTRR) += mtrr/ | 18 | obj-$(CONFIG_MTRR) += mtrr/ |
diff --git a/arch/x86/kernel/cpu/proc_64.c b/arch/x86/kernel/cpu/proc_64.c deleted file mode 100644 index 15043a335ef1..000000000000 --- a/arch/x86/kernel/cpu/proc_64.c +++ /dev/null | |||
@@ -1,180 +0,0 @@ | |||
1 | #include <linux/smp.h> | ||
2 | #include <linux/timex.h> | ||
3 | #include <linux/string.h> | ||
4 | #include <asm/semaphore.h> | ||
5 | #include <linux/seq_file.h> | ||
6 | #include <linux/cpufreq.h> | ||
7 | |||
8 | /* | ||
9 | * Get CPU information for use by the procfs. | ||
10 | */ | ||
11 | #ifdef CONFIG_X86_32 | ||
12 | static void show_cpuinfo_core(struct seq_file *m, struct cpuinfo_x86 *c, | ||
13 | unsigned int cpu) | ||
14 | { | ||
15 | #ifdef CONFIG_X86_HT | ||
16 | if (c->x86_max_cores * smp_num_siblings > 1) { | ||
17 | seq_printf(m, "physical id\t: %d\n", c->phys_proc_id); | ||
18 | seq_printf(m, "siblings\t: %d\n", | ||
19 | cpus_weight(per_cpu(cpu_core_map, cpu))); | ||
20 | seq_printf(m, "core id\t\t: %d\n", c->cpu_core_id); | ||
21 | seq_printf(m, "cpu cores\t: %d\n", c->booted_cores); | ||
22 | } | ||
23 | #endif | ||
24 | } | ||
25 | |||
26 | static void show_cpuinfo_misc(struct seq_file *m, struct cpuinfo_x86 *c) | ||
27 | { | ||
28 | /* | ||
29 | * We use exception 16 if we have hardware math and we've either seen | ||
30 | * it or the CPU claims it is internal | ||
31 | */ | ||
32 | int fpu_exception = c->hard_math && (ignore_fpu_irq || cpu_has_fpu); | ||
33 | seq_printf(m, | ||
34 | "fdiv_bug\t: %s\n" | ||
35 | "hlt_bug\t\t: %s\n" | ||
36 | "f00f_bug\t: %s\n" | ||
37 | "coma_bug\t: %s\n" | ||
38 | "fpu\t\t: %s\n" | ||
39 | "fpu_exception\t: %s\n" | ||
40 | "cpuid level\t: %d\n" | ||
41 | "wp\t\t: %s\n", | ||
42 | c->fdiv_bug ? "yes" : "no", | ||
43 | c->hlt_works_ok ? "no" : "yes", | ||
44 | c->f00f_bug ? "yes" : "no", | ||
45 | c->coma_bug ? "yes" : "no", | ||
46 | c->hard_math ? "yes" : "no", | ||
47 | fpu_exception ? "yes" : "no", | ||
48 | c->cpuid_level, | ||
49 | c->wp_works_ok ? "yes" : "no"); | ||
50 | } | ||
51 | #else | ||
52 | static void show_cpuinfo_core(struct seq_file *m, struct cpuinfo_x86 *c, | ||
53 | unsigned int cpu) | ||
54 | { | ||
55 | #ifdef CONFIG_SMP | ||
56 | if (c->x86_max_cores * smp_num_siblings > 1) { | ||
57 | seq_printf(m, "physical id\t: %d\n", c->phys_proc_id); | ||
58 | seq_printf(m, "siblings\t: %d\n", | ||
59 | cpus_weight(per_cpu(cpu_core_map, cpu))); | ||
60 | seq_printf(m, "core id\t\t: %d\n", c->cpu_core_id); | ||
61 | seq_printf(m, "cpu cores\t: %d\n", c->booted_cores); | ||
62 | } | ||
63 | #endif | ||
64 | } | ||
65 | |||
66 | static void show_cpuinfo_misc(struct seq_file *m, struct cpuinfo_x86 *c) | ||
67 | { | ||
68 | seq_printf(m, | ||
69 | "fpu\t\t: yes\n" | ||
70 | "fpu_exception\t: yes\n" | ||
71 | "cpuid level\t: %d\n" | ||
72 | "wp\t\t: yes\n", | ||
73 | c->cpuid_level); | ||
74 | } | ||
75 | #endif | ||
76 | |||
77 | static int show_cpuinfo(struct seq_file *m, void *v) | ||
78 | { | ||
79 | struct cpuinfo_x86 *c = v; | ||
80 | unsigned int cpu = 0; | ||
81 | int i; | ||
82 | |||
83 | #ifdef CONFIG_SMP | ||
84 | cpu = c->cpu_index; | ||
85 | #endif | ||
86 | seq_printf(m, "processor\t: %u\n" | ||
87 | "vendor_id\t: %s\n" | ||
88 | "cpu family\t: %d\n" | ||
89 | "model\t\t: %u\n" | ||
90 | "model name\t: %s\n", | ||
91 | cpu, | ||
92 | c->x86_vendor_id[0] ? c->x86_vendor_id : "unknown", | ||
93 | c->x86, | ||
94 | c->x86_model, | ||
95 | c->x86_model_id[0] ? c->x86_model_id : "unknown"); | ||
96 | |||
97 | if (c->x86_mask || c->cpuid_level >= 0) | ||
98 | seq_printf(m, "stepping\t: %d\n", c->x86_mask); | ||
99 | else | ||
100 | seq_printf(m, "stepping\t: unknown\n"); | ||
101 | |||
102 | if (cpu_has(c, X86_FEATURE_TSC)) { | ||
103 | unsigned int freq = cpufreq_quick_get(cpu); | ||
104 | |||
105 | if (!freq) | ||
106 | freq = cpu_khz; | ||
107 | seq_printf(m, "cpu MHz\t\t: %u.%03u\n", | ||
108 | freq / 1000, (freq % 1000)); | ||
109 | } | ||
110 | |||
111 | /* Cache size */ | ||
112 | if (c->x86_cache_size >= 0) | ||
113 | seq_printf(m, "cache size\t: %d KB\n", c->x86_cache_size); | ||
114 | |||
115 | show_cpuinfo_core(m, c, cpu); | ||
116 | show_cpuinfo_misc(m, c); | ||
117 | |||
118 | seq_printf(m, "flags\t\t:"); | ||
119 | for (i = 0; i < 32*NCAPINTS; i++) | ||
120 | if (cpu_has(c, i) && x86_cap_flags[i] != NULL) | ||
121 | seq_printf(m, " %s", x86_cap_flags[i]); | ||
122 | |||
123 | seq_printf(m, "\nbogomips\t: %lu.%02lu\n", | ||
124 | c->loops_per_jiffy/(500000/HZ), | ||
125 | (c->loops_per_jiffy/(5000/HZ)) % 100); | ||
126 | |||
127 | #ifdef CONFIG_X86_64 | ||
128 | if (c->x86_tlbsize > 0) | ||
129 | seq_printf(m, "TLB size\t: %d 4K pages\n", c->x86_tlbsize); | ||
130 | #endif | ||
131 | seq_printf(m, "clflush size\t: %u\n", c->x86_clflush_size); | ||
132 | #ifdef CONFIG_X86_64 | ||
133 | seq_printf(m, "cache_alignment\t: %d\n", c->x86_cache_alignment); | ||
134 | seq_printf(m, "address sizes\t: %u bits physical, %u bits virtual\n", | ||
135 | c->x86_phys_bits, c->x86_virt_bits); | ||
136 | #endif | ||
137 | |||
138 | seq_printf(m, "power management:"); | ||
139 | for (i = 0; i < 32; i++) { | ||
140 | if (c->x86_power & (1 << i)) { | ||
141 | if (i < ARRAY_SIZE(x86_power_flags) && | ||
142 | x86_power_flags[i]) | ||
143 | seq_printf(m, "%s%s", | ||
144 | x86_power_flags[i][0]?" ":"", | ||
145 | x86_power_flags[i]); | ||
146 | else | ||
147 | seq_printf(m, " [%d]", i); | ||
148 | } | ||
149 | } | ||
150 | |||
151 | seq_printf(m, "\n\n"); | ||
152 | |||
153 | return 0; | ||
154 | } | ||
155 | |||
156 | static void *c_start(struct seq_file *m, loff_t *pos) | ||
157 | { | ||
158 | if (*pos == 0) /* just in case, cpu 0 is not the first */ | ||
159 | *pos = first_cpu(cpu_online_map); | ||
160 | if ((*pos) < NR_CPUS && cpu_online(*pos)) | ||
161 | return &cpu_data(*pos); | ||
162 | return NULL; | ||
163 | } | ||
164 | |||
165 | static void *c_next(struct seq_file *m, void *v, loff_t *pos) | ||
166 | { | ||
167 | *pos = next_cpu(*pos, cpu_online_map); | ||
168 | return c_start(m, pos); | ||
169 | } | ||
170 | |||
171 | static void c_stop(struct seq_file *m, void *v) | ||
172 | { | ||
173 | } | ||
174 | |||
175 | const struct seq_operations cpuinfo_op = { | ||
176 | .start = c_start, | ||
177 | .next = c_next, | ||
178 | .stop = c_stop, | ||
179 | .show = show_cpuinfo, | ||
180 | }; | ||