1f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin/* ----------------------------------------------------------------------- * 2f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin * 3f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin * Copyright 2008 rPath, Inc. - All Rights Reserved 4f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin * 5f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin * This file is part of the Linux kernel, and is made available under 6f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin * the terms of the GNU General Public License version 2 or (at your 7f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin * option) any later version; incorporated herein by reference. 8f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin * 9f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin * ----------------------------------------------------------------------- */ 10f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin 11f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin/* 12f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin * This is a host program to preprocess the CPU strings into a 13f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin * compact format suitable for the setup code. 14f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin */ 15f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin 16f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin#include <stdio.h> 17f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin 18abbf1590de22a6d2240a59383477da50d1402f6aDavid Howells#include "../include/asm/required-features.h" 19381aa07a9b4e1f82969203e9e4863da2a157781dDave Hansen#include "../include/asm/disabled-features.h" 20abbf1590de22a6d2240a59383477da50d1402f6aDavid Howells#include "../include/asm/cpufeature.h" 217414aa41a63348c3bc72d8c37b716024c29b6d50H. Peter Anvin#include "../kernel/cpu/capflags.c" 22f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin 23f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvinint main(void) 24f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin{ 2597fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin int i, j; 26f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin const char *str; 27f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin 283235dc3f22378f35ce77eba0d0f62db2d9c4844eFrans Pop printf("static const char x86_cap_strs[] =\n"); 29f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin 3097fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin for (i = 0; i < NCAPINTS; i++) { 3197fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin for (j = 0; j < 32; j++) { 3297fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin str = x86_cap_flags[i*32+j]; 3397fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin 3497fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin if (i == NCAPINTS-1 && j == 31) { 3597fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin /* The last entry must be unconditional; this 3697fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin also consumes the compiler-added null 3797fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin character */ 3897fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin if (!str) 3997fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin str = ""; 4097fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin printf("\t\"\\x%02x\\x%02x\"\"%s\"\n", 4197fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin i, j, str); 4297fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin } else if (str) { 4397fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin printf("#if REQUIRED_MASK%d & (1 << %d)\n" 4497fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin "\t\"\\x%02x\\x%02x\"\"%s\\0\"\n" 4597fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin "#endif\n", 4697fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin i, j, i, j, str); 4797fc0555dae8f4d437c8672c14d7191962429be4H. Peter Anvin } 48f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin } 49f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin } 50f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin printf("\t;\n"); 51f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin return 0; 52f0be6c6a697c2fe8e2efbe98cd157bdbcff969aeH. Peter Anvin} 53