diff options
| author | H. Peter Anvin <hpa@zytor.com> | 2008-09-04 12:21:21 -0400 |
|---|---|---|
| committer | H. Peter Anvin <hpa@zytor.com> | 2008-09-04 12:21:21 -0400 |
| commit | aa3341a168883654d1b13f5931c5ed2762537831 (patch) | |
| tree | 1394eb320916b4e5604761dbc8ae1a9bc1903602 /arch | |
| parent | 42390cdec5f6e6e2ee54f308474a6ef7dd16aa5c (diff) | |
| parent | af2e1f276ff08f17192411ea3b71c13a758dfe12 (diff) | |
Merge branch 'x86/cpu' into x86/x2apic
Conflicts:
arch/x86/kernel/cpu/feature_names.c
include/asm-x86/cpufeature.h
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/x86/boot/mkcpustr.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/Makefile | 11 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/feature_names.c | 84 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/mkcapflags.pl | 32 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/powerflags.c | 20 |
5 files changed, 63 insertions, 86 deletions
diff --git a/arch/x86/boot/mkcpustr.c b/arch/x86/boot/mkcpustr.c index bbe76953bae9..4589caa3e9d1 100644 --- a/arch/x86/boot/mkcpustr.c +++ b/arch/x86/boot/mkcpustr.c | |||
| @@ -15,7 +15,7 @@ | |||
| 15 | 15 | ||
| 16 | #include <stdio.h> | 16 | #include <stdio.h> |
| 17 | 17 | ||
| 18 | #include "../kernel/cpu/feature_names.c" | 18 | #include "../kernel/cpu/capflags.c" |
| 19 | 19 | ||
| 20 | #if NCAPFLAGS > 8 | 20 | #if NCAPFLAGS > 8 |
| 21 | # error "Need to adjust the boot code handling of CPUID strings" | 21 | # error "Need to adjust the boot code handling of CPUID strings" |
diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile index a0fc6c144384..3ede19a4e0b2 100644 --- a/arch/x86/kernel/cpu/Makefile +++ b/arch/x86/kernel/cpu/Makefile | |||
| @@ -3,7 +3,7 @@ | |||
| 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 += proc.o feature_names.o | 6 | obj-y += proc.o capflags.o powerflags.o |
| 7 | 7 | ||
| 8 | obj-$(CONFIG_X86_32) += common.o bugs.o cmpxchg.o | 8 | obj-$(CONFIG_X86_32) += common.o bugs.o cmpxchg.o |
| 9 | obj-$(CONFIG_X86_64) += common_64.o bugs_64.o | 9 | obj-$(CONFIG_X86_64) += common_64.o bugs_64.o |
| @@ -23,3 +23,12 @@ obj-$(CONFIG_MTRR) += mtrr/ | |||
| 23 | obj-$(CONFIG_CPU_FREQ) += cpufreq/ | 23 | obj-$(CONFIG_CPU_FREQ) += cpufreq/ |
| 24 | 24 | ||
| 25 | obj-$(CONFIG_X86_LOCAL_APIC) += perfctr-watchdog.o | 25 | obj-$(CONFIG_X86_LOCAL_APIC) += perfctr-watchdog.o |
| 26 | |||
| 27 | quiet_cmd_mkcapflags = MKCAP $@ | ||
| 28 | cmd_mkcapflags = $(PERL) $(srctree)/$(src)/mkcapflags.pl $< $@ | ||
| 29 | |||
| 30 | cpufeature = $(src)/../../../../include/asm-x86/cpufeature.h | ||
| 31 | |||
| 32 | targets += capflags.c | ||
| 33 | $(obj)/capflags.c: $(cpufeature) $(src)/mkcapflags.pl FORCE | ||
| 34 | $(call if_changed,mkcapflags) | ||
diff --git a/arch/x86/kernel/cpu/feature_names.c b/arch/x86/kernel/cpu/feature_names.c deleted file mode 100644 index b96b69545fbf..000000000000 --- a/arch/x86/kernel/cpu/feature_names.c +++ /dev/null | |||
| @@ -1,84 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Strings for the various x86 capability flags. | ||
| 3 | * | ||
| 4 | * This file must not contain any executable code. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <asm/cpufeature.h> | ||
| 8 | |||
| 9 | /* | ||
| 10 | * These flag bits must match the definitions in <asm/cpufeature.h>. | ||
| 11 | * NULL means this bit is undefined or reserved; either way it doesn't | ||
| 12 | * have meaning as far as Linux is concerned. Note that it's important | ||
| 13 | * to realize there is a difference between this table and CPUID -- if | ||
| 14 | * applications want to get the raw CPUID data, they should access | ||
| 15 | * /dev/cpu/<cpu_nr>/cpuid instead. | ||
| 16 | */ | ||
| 17 | const char * const x86_cap_flags[NCAPINTS*32] = { | ||
| 18 | /* Intel-defined */ | ||
| 19 | "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce", | ||
| 20 | "cx8", "apic", NULL, "sep", "mtrr", "pge", "mca", "cmov", | ||
| 21 | "pat", "pse36", "pn", "clflush", NULL, "dts", "acpi", "mmx", | ||
| 22 | "fxsr", "sse", "sse2", "ss", "ht", "tm", "ia64", "pbe", | ||
| 23 | |||
| 24 | /* AMD-defined */ | ||
| 25 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 26 | NULL, NULL, NULL, "syscall", NULL, NULL, NULL, NULL, | ||
| 27 | NULL, NULL, NULL, "mp", "nx", NULL, "mmxext", NULL, | ||
| 28 | NULL, "fxsr_opt", "pdpe1gb", "rdtscp", NULL, "lm", | ||
| 29 | "3dnowext", "3dnow", | ||
| 30 | |||
| 31 | /* Transmeta-defined */ | ||
| 32 | "recovery", "longrun", NULL, "lrti", NULL, NULL, NULL, NULL, | ||
| 33 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 34 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 35 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 36 | |||
| 37 | /* Other (Linux-defined) */ | ||
| 38 | "cxmmx", "k6_mtrr", "cyrix_arr", "centaur_mcr", | ||
| 39 | NULL, NULL, NULL, NULL, | ||
| 40 | "constant_tsc", "up", NULL, "arch_perfmon", | ||
| 41 | "pebs", "bts", NULL, NULL, | ||
| 42 | "rep_good", NULL, NULL, NULL, | ||
| 43 | "nopl", NULL, NULL, NULL, | ||
| 44 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 45 | |||
| 46 | /* Intel-defined (#2) */ | ||
| 47 | "pni", NULL, NULL, "monitor", "ds_cpl", "vmx", "smx", "est", | ||
| 48 | "tm2", "ssse3", "cid", NULL, NULL, "cx16", "xtpr", NULL, | ||
| 49 | NULL, NULL, "dca", "sse4_1", "sse4_2", "x2apic", NULL, "popcnt", | ||
| 50 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 51 | |||
| 52 | /* VIA/Cyrix/Centaur-defined */ | ||
| 53 | NULL, NULL, "rng", "rng_en", NULL, NULL, "ace", "ace_en", | ||
| 54 | "ace2", "ace2_en", "phe", "phe_en", "pmm", "pmm_en", NULL, NULL, | ||
| 55 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 56 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 57 | |||
| 58 | /* AMD-defined (#2) */ | ||
| 59 | "lahf_lm", "cmp_legacy", "svm", "extapic", | ||
| 60 | "cr8_legacy", "abm", "sse4a", "misalignsse", | ||
| 61 | "3dnowprefetch", "osvw", "ibs", "sse5", | ||
| 62 | "skinit", "wdt", NULL, NULL, | ||
| 63 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 64 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 65 | |||
| 66 | /* Auxiliary (Linux-defined) */ | ||
| 67 | "ida", NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 68 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 69 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 70 | NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, | ||
| 71 | }; | ||
| 72 | |||
| 73 | const char *const x86_power_flags[32] = { | ||
| 74 | "ts", /* temperature sensor */ | ||
| 75 | "fid", /* frequency id control */ | ||
| 76 | "vid", /* voltage id control */ | ||
| 77 | "ttp", /* thermal trip */ | ||
| 78 | "tm", | ||
| 79 | "stc", | ||
| 80 | "100mhzsteps", | ||
| 81 | "hwpstate", | ||
| 82 | "", /* tsc invariant mapped to constant_tsc */ | ||
| 83 | /* nothing */ | ||
| 84 | }; | ||
diff --git a/arch/x86/kernel/cpu/mkcapflags.pl b/arch/x86/kernel/cpu/mkcapflags.pl new file mode 100644 index 000000000000..dfea390e1608 --- /dev/null +++ b/arch/x86/kernel/cpu/mkcapflags.pl | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | #!/usr/bin/perl | ||
| 2 | # | ||
| 3 | # Generate the x86_cap_flags[] array from include/asm-x86/cpufeature.h | ||
| 4 | # | ||
| 5 | |||
| 6 | ($in, $out) = @ARGV; | ||
| 7 | |||
| 8 | open(IN, "< $in\0") or die "$0: cannot open: $in: $!\n"; | ||
| 9 | open(OUT, "> $out\0") or die "$0: cannot create: $out: $!\n"; | ||
| 10 | |||
| 11 | print OUT "#include <asm/cpufeature.h>\n\n"; | ||
| 12 | print OUT "const char * const x86_cap_flags[NCAPINTS*32] = {\n"; | ||
| 13 | |||
| 14 | while (defined($line = <IN>)) { | ||
| 15 | if ($line =~ /^\s*\#\s*define\s+(X86_FEATURE_(\S+))\s+(.*)$/) { | ||
| 16 | $macro = $1; | ||
| 17 | $feature = $2; | ||
| 18 | $tail = $3; | ||
| 19 | if ($tail =~ /\/\*\s*\"([^"]*)\".*\*\//) { | ||
| 20 | $feature = $1; | ||
| 21 | } | ||
| 22 | |||
| 23 | if ($feature ne '') { | ||
| 24 | printf OUT "\t%-32s = \"%s\",\n", | ||
| 25 | "[$macro]", "\L$feature"; | ||
| 26 | } | ||
| 27 | } | ||
| 28 | } | ||
| 29 | print OUT "};\n"; | ||
| 30 | |||
| 31 | close(IN); | ||
| 32 | close(OUT); | ||
diff --git a/arch/x86/kernel/cpu/powerflags.c b/arch/x86/kernel/cpu/powerflags.c new file mode 100644 index 000000000000..5abbea297e0c --- /dev/null +++ b/arch/x86/kernel/cpu/powerflags.c | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | /* | ||
| 2 | * Strings for the various x86 power flags | ||
| 3 | * | ||
| 4 | * This file must not contain any executable code. | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <asm/cpufeature.h> | ||
| 8 | |||
| 9 | const char *const x86_power_flags[32] = { | ||
| 10 | "ts", /* temperature sensor */ | ||
| 11 | "fid", /* frequency id control */ | ||
| 12 | "vid", /* voltage id control */ | ||
| 13 | "ttp", /* thermal trip */ | ||
| 14 | "tm", | ||
| 15 | "stc", | ||
| 16 | "100mhzsteps", | ||
| 17 | "hwpstate", | ||
| 18 | "", /* tsc invariant mapped to constant_tsc */ | ||
| 19 | /* nothing */ | ||
| 20 | }; | ||
