]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/x86/boot/mkcpustr.c
x86 setup: handle more than 8 CPU flag words
[linux-2.6-omap-h63xx.git] / arch / x86 / boot / mkcpustr.c
index 4589caa3e9d1f23c53d6f36ef1949fb50eff9bd1..8ef60f20b371017efc47f60fc371d090d0e76014 100644 (file)
 
 #include "../kernel/cpu/capflags.c"
 
-#if NCAPFLAGS > 8
-# error "Need to adjust the boot code handling of CPUID strings"
-#endif
-
 int main(void)
 {
-       int i;
+       int i, j;
        const char *str;
 
        printf("static const char x86_cap_strs[] = \n");
 
-       for (i = 0; i < NCAPINTS*32; i++) {
-               str = x86_cap_flags[i];
-
-               if (i == NCAPINTS*32-1) {
-                       /* The last entry must be unconditional; this
-                          also consumes the compiler-added null character */
-                       if (!str)
-                               str = "";
-                       printf("\t\"\\x%02x\"\"%s\"\n", i, str);
-               } else if (str) {
-                       printf("#if REQUIRED_MASK%d & (1 << %d)\n"
-                              "\t\"\\x%02x\"\"%s\\0\"\n"
-                              "#endif\n",
-                              i >> 5, i & 31, i, str);
+       for (i = 0; i < NCAPINTS; i++) {
+               for (j = 0; j < 32; j++) {
+                       str = x86_cap_flags[i*32+j];
+
+                       if (i == NCAPINTS-1 && j == 31) {
+                               /* The last entry must be unconditional; this
+                                  also consumes the compiler-added null
+                                  character */
+                               if (!str)
+                                       str = "";
+                               printf("\t\"\\x%02x\\x%02x\"\"%s\"\n",
+                                      i, j, str);
+                       } else if (str) {
+                               printf("#if REQUIRED_MASK%d & (1 << %d)\n"
+                                      "\t\"\\x%02x\\x%02x\"\"%s\\0\"\n"
+                                      "#endif\n",
+                                      i, j, i, j, str);
+                       }
                }
        }
        printf("\t;\n");