aboutsummaryrefslogtreecommitdiffstats
path: root/mkcputype
blob: a3c8db6dbd56608febc702afe0ed6821c88b6ba1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash

awk -F\| 'BEGIN {
	print "/* Do not edit. Autogenerated from cputype.table */" > "cputype.tmp"
	print "enum cputype {" > "cputype.tmp"
	print "\tCPU_GENERIC," > "cputype.tmp"
	print "\tCPU_K8," > "cputype.tmp"

	print "\n\n/* Insert any new non-intel CPU models before this line */\n\n" > "cputype.tmp"
	print "\tCPU_INTEL," > "cputype.tmp"
	print "\tCPU_P4," > "cputype.tmp"
	print "\tCPU_TULSA," > "cputype.tmp"

	print "/* Do not edit. Autogenerated from cputype.table */" > "lookup_intel_cputype.tmp"
	print "#include <stddef.h>\n" > "lookup_intel_cputype.tmp"
	print "#include \"cputype.h\"\n" > "lookup_intel_cputype.tmp"
	print "#include \"config.h\"\n" > "lookup_intel_cputype.tmp"
	print "enum cputype lookup_intel_cputype(int model)" > "lookup_intel_cputype.tmp"
	print "{" > "lookup_intel_cputype.tmp"
	print "\tswitch (model) {" > "lookup_intel_cputype.tmp"
}
{
	printf("\t%s,\n", $1) > "cputype.tmp"

	n = split($2, model, ",")
	for (i = 1; i <= n; i++)
		printf("\tcase %s:\n", model[i]) > "lookup_intel_cputype.tmp"
	printf("\t\treturn %s;\n", $1) > "lookup_intel_cputype.tmp"

	cputype_name = cputype_name "\t[" $1 "] = \"" $3 "\",\n"

	n = split($4, choice, ",")
	for (i = 1; i <= n; i++)
		cpu_choices = cpu_choices "\t{ \"" choice[i] "\"," $1 " },\n"
}
END {
	print "};\n" > "cputype.tmp"
	print "enum cputype lookup_intel_cputype(int model);" > "cputype.tmp"
	print "extern char *cputype_name[];" > "cputype.tmp"

	print "\tdefault:\n\t\treturn -1;" > "lookup_intel_cputype.tmp"
	print "\t}\n}\n" > "lookup_intel_cputype.tmp"

	print "char *cputype_name[] = {" > "lookup_intel_cputype.tmp"
	print "\t[CPU_GENERIC] = \"generic CPU\"," > "lookup_intel_cputype.tmp"
	print "\t[CPU_K8] = \"AMD K8 and derivates\"," > "lookup_intel_cputype.tmp"
	print "\t[CPU_INTEL] = \"Intel generic architectural MCA\"," > "lookup_intel_cputype.tmp"
	print "\t[CPU_P4] = \"Intel P4\"," > "lookup_intel_cputype.tmp"
	print "\t[CPU_TULSA] = \"Intel Xeon 7100 series\"," > "lookup_intel_cputype.tmp"
	print cputype_name > "lookup_intel_cputype.tmp"
	print "};\n" > "lookup_intel_cputype.tmp"

	print "struct config_choice cpu_choices[] = {" > "lookup_intel_cputype.tmp"
	print "\t{ \"generic\", CPU_GENERIC }," > "lookup_intel_cputype.tmp"
	print "\t{ \"k8\", CPU_K8 }," > "lookup_intel_cputype.tmp"
	print "\t{ \"intel\", CPU_INTEL }," > "lookup_intel_cputype.tmp"
	print "\t{ \"p4\", CPU_P4 }," > "lookup_intel_cputype.tmp"
	print "\t{ \"xeon5000\", CPU_P4 }," > "lookup_intel_cputype.tmp"
	print "\t{ \"xeon7100\", CPU_P4 }," > "lookup_intel_cputype.tmp"
	print "\t{ \"tulsa\", CPU_TULSA }," > "lookup_intel_cputype.tmp"
	print "\t{ \"xeon7100\", CPU_TULSA }," > "lookup_intel_cputype.tmp"
	print "\t{ \"xeon71xx\", CPU_TULSA }," > "lookup_intel_cputype.tmp"
	printf("%s",  cpu_choices) > "lookup_intel_cputype.tmp"
	print "\t{ NULL }\n};" > "lookup_intel_cputype.tmp"
}' cputype.table