1 | // SPDX-License-Identifier: GPL-2.0-or-later |
2 | /* ----------------------------------------------------------------------- * |
3 | * |
4 | * Copyright 2008 rPath, Inc. - All Rights Reserved |
5 | * |
6 | * ----------------------------------------------------------------------- */ |
7 | |
8 | /* |
9 | * This is a host program to preprocess the CPU strings into a |
10 | * compact format suitable for the setup code. |
11 | */ |
12 | |
13 | #include <stdio.h> |
14 | |
15 | #include "../include/asm/required-features.h" |
16 | #include "../include/asm/disabled-features.h" |
17 | #include "../include/asm/cpufeatures.h" |
18 | #include "../include/asm/vmxfeatures.h" |
19 | #include "../kernel/cpu/capflags.c" |
20 | |
21 | int main(void) |
22 | { |
23 | int i, j; |
24 | const char *str; |
25 | |
26 | printf(format: "static const char x86_cap_strs[] =\n" ); |
27 | |
28 | for (i = 0; i < NCAPINTS; i++) { |
29 | for (j = 0; j < 32; j++) { |
30 | str = x86_cap_flags[i*32+j]; |
31 | |
32 | if (i == NCAPINTS-1 && j == 31) { |
33 | /* The last entry must be unconditional; this |
34 | also consumes the compiler-added null |
35 | character */ |
36 | if (!str) |
37 | str = "" ; |
38 | printf(format: "\t\"\\x%02x\\x%02x\"\"%s\"\n" , |
39 | i, j, str); |
40 | } else if (str) { |
41 | printf(format: "#if REQUIRED_MASK%d & (1 << %d)\n" |
42 | "\t\"\\x%02x\\x%02x\"\"%s\\0\"\n" |
43 | "#endif\n" , |
44 | i, j, i, j, str); |
45 | } |
46 | } |
47 | } |
48 | printf(format: "\t;\n" ); |
49 | return 0; |
50 | } |
51 | |