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 8open(IN, "< $in\0") or die "$0: cannot open: $in: $!\n"; 9open(OUT, "> $out\0") or die "$0: cannot create: $out: $!\n"; 10 11print OUT "#include <asm/cpufeature.h>\n\n"; 12print OUT "const char * const x86_cap_flags[NCAPINTS*32] = {\n"; 13 14while (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} 29print OUT "};\n"; 30 31close(IN); 32close(OUT); 33