Annotation of embedaddon/strongswan/src/libstrongswan/utils/cpu_feature.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2015 Martin Willi
                      3:  * Copyright (C) 2015 revosec AG
                      4:  *
                      5:  * This program is free software; you can redistribute it and/or modify it
                      6:  * under the terms of the GNU General Public License as published by the
                      7:  * Free Software Foundation; either version 2 of the License, or (at your
                      8:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                      9:  *
                     10:  * This program is distributed in the hope that it will be useful, but
                     11:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     12:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     13:  * for more details.
                     14:  */
                     15: 
                     16: /**
                     17:  * @defgroup cpu_feature cpu_feature
                     18:  * @{ @ingroup utils
                     19:  */
                     20: 
                     21: #ifndef CPU_FEATURE_H_
                     22: #define CPU_FEATURE_H_
                     23: 
                     24: #include <library.h>
                     25: 
                     26: typedef enum {
                     27:        /** x86/x64 extensions */
                     28:        CPU_FEATURE_MMX =                                                       (1 <<  0),
                     29:        CPU_FEATURE_SSE =                                                       (1 <<  1),
                     30:        CPU_FEATURE_SSE2 =                                                      (1 <<  2),
                     31:        CPU_FEATURE_SSE3 =                                                      (1 <<  3),
                     32:        CPU_FEATURE_SSSE3 =                                                     (1 <<  4),
                     33:        CPU_FEATURE_SSE41 =                                                     (1 <<  5),
                     34:        CPU_FEATURE_SSE42 =                                                     (1 <<  6),
                     35:        CPU_FEATURE_AVX =                                                       (1 <<  7),
                     36:        CPU_FEATURE_RDRAND =                                            (1 <<  8),
                     37:        CPU_FEATURE_AESNI =                                                     (1 <<  9),
                     38:        CPU_FEATURE_PCLMULQDQ =                                         (1 << 10),
                     39:        /** Via Padlock Security features */
                     40:        CPU_FEATURE_PADLOCK_RNG_AVAILABLE =                     (1 << 22),
                     41:        CPU_FEATURE_PADLOCK_RNG_ENABLED =                       (1 << 23),
                     42:        CPU_FEATURE_PADLOCK_ACE_AVAILABLE =                     (1 << 24),
                     43:        CPU_FEATURE_PADLOCK_ACE_ENABLED =                       (1 << 25),
                     44:        CPU_FEATURE_PADLOCK_ACE2_AVAILABLE =            (1 << 26),
                     45:        CPU_FEATURE_PADLOCK_ACE2_ENABLED =                      (1 << 27),
                     46:        CPU_FEATURE_PADLOCK_PHE_AVAILABLE =                     (1 << 28),
                     47:        CPU_FEATURE_PADLOCK_PHE_ENABLED =                       (1 << 29),
                     48:        CPU_FEATURE_PADLOCK_PMM_AVAILABLE =                     (1 << 30),
                     49:        CPU_FEATURE_PADLOCK_PMM_ENABLED =                       (1 << 31),
                     50: } cpu_feature_t;
                     51: 
                     52: /**
                     53:  * Get a bitmask for all supported CPU features
                     54:  */
                     55: cpu_feature_t cpu_feature_get_all();
                     56: 
                     57: /**
                     58:  * Check if a given set of CPU features is available.
                     59:  */
                     60: bool cpu_feature_available(cpu_feature_t feature);
                     61: 
                     62: #endif /** CPU_FEATURE_H_ @}*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>