Back to home page

OSCL-LXR

 
 

    


0001 #ifndef _ASM_X86_REQUIRED_FEATURES_H
0002 #define _ASM_X86_REQUIRED_FEATURES_H
0003 
0004 /* Define minimum CPUID feature set for kernel These bits are checked
0005    really early to actually display a visible error message before the
0006    kernel dies.  Make sure to assign features to the proper mask!
0007 
0008    Some requirements that are not in CPUID yet are also in the
0009    CONFIG_X86_MINIMUM_CPU_FAMILY which is checked too.
0010 
0011    The real information is in arch/x86/Kconfig.cpu, this just converts
0012    the CONFIGs into a bitmask */
0013 
0014 #ifndef CONFIG_MATH_EMULATION
0015 # define NEED_FPU   (1<<(X86_FEATURE_FPU & 31))
0016 #else
0017 # define NEED_FPU   0
0018 #endif
0019 
0020 #if defined(CONFIG_X86_PAE) || defined(CONFIG_X86_64)
0021 # define NEED_PAE   (1<<(X86_FEATURE_PAE & 31))
0022 #else
0023 # define NEED_PAE   0
0024 #endif
0025 
0026 #ifdef CONFIG_X86_CMPXCHG64
0027 # define NEED_CX8   (1<<(X86_FEATURE_CX8 & 31))
0028 #else
0029 # define NEED_CX8   0
0030 #endif
0031 
0032 #if defined(CONFIG_X86_CMOV) || defined(CONFIG_X86_64)
0033 # define NEED_CMOV  (1<<(X86_FEATURE_CMOV & 31))
0034 #else
0035 # define NEED_CMOV  0
0036 #endif
0037 
0038 # define NEED_3DNOW 0
0039 
0040 #if defined(CONFIG_X86_P6_NOP) || defined(CONFIG_X86_64)
0041 # define NEED_NOPL  (1<<(X86_FEATURE_NOPL & 31))
0042 #else
0043 # define NEED_NOPL  0
0044 #endif
0045 
0046 #ifdef CONFIG_MATOM
0047 # define NEED_MOVBE (1<<(X86_FEATURE_MOVBE & 31))
0048 #else
0049 # define NEED_MOVBE 0
0050 #endif
0051 
0052 #ifdef CONFIG_X86_64
0053 #ifdef CONFIG_PARAVIRT_XXL
0054 /* Paravirtualized systems may not have PSE or PGE available */
0055 #define NEED_PSE    0
0056 #define NEED_PGE    0
0057 #else
0058 #define NEED_PSE    (1<<(X86_FEATURE_PSE) & 31)
0059 #define NEED_PGE    (1<<(X86_FEATURE_PGE) & 31)
0060 #endif
0061 #define NEED_MSR    (1<<(X86_FEATURE_MSR & 31))
0062 #define NEED_FXSR   (1<<(X86_FEATURE_FXSR & 31))
0063 #define NEED_XMM    (1<<(X86_FEATURE_XMM & 31))
0064 #define NEED_XMM2   (1<<(X86_FEATURE_XMM2 & 31))
0065 #define NEED_LM     (1<<(X86_FEATURE_LM & 31))
0066 #else
0067 #define NEED_PSE    0
0068 #define NEED_MSR    0
0069 #define NEED_PGE    0
0070 #define NEED_FXSR   0
0071 #define NEED_XMM    0
0072 #define NEED_XMM2   0
0073 #define NEED_LM     0
0074 #endif
0075 
0076 #define REQUIRED_MASK0  (NEED_FPU|NEED_PSE|NEED_MSR|NEED_PAE|\
0077              NEED_CX8|NEED_PGE|NEED_FXSR|NEED_CMOV|\
0078              NEED_XMM|NEED_XMM2)
0079 #define SSE_MASK    (NEED_XMM|NEED_XMM2)
0080 
0081 #define REQUIRED_MASK1  (NEED_LM|NEED_3DNOW)
0082 
0083 #define REQUIRED_MASK2  0
0084 #define REQUIRED_MASK3  (NEED_NOPL)
0085 #define REQUIRED_MASK4  (NEED_MOVBE)
0086 #define REQUIRED_MASK5  0
0087 #define REQUIRED_MASK6  0
0088 #define REQUIRED_MASK7  0
0089 #define REQUIRED_MASK8  0
0090 #define REQUIRED_MASK9  0
0091 #define REQUIRED_MASK10 0
0092 #define REQUIRED_MASK11 0
0093 #define REQUIRED_MASK12 0
0094 #define REQUIRED_MASK13 0
0095 #define REQUIRED_MASK14 0
0096 #define REQUIRED_MASK15 0
0097 #define REQUIRED_MASK16 0
0098 #define REQUIRED_MASK17 0
0099 #define REQUIRED_MASK18 0
0100 #define REQUIRED_MASK19 0
0101 #define REQUIRED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 20)
0102 
0103 #endif /* _ASM_X86_REQUIRED_FEATURES_H */