192 lines
6.4 KiB
C
192 lines
6.4 KiB
C
|
/*********************************************************************/
|
||
|
/* Copyright 2009, 2010 The University of Texas at Austin. */
|
||
|
/* All rights reserved. */
|
||
|
/* */
|
||
|
/* Redistribution and use in source and binary forms, with or */
|
||
|
/* without modification, are permitted provided that the following */
|
||
|
/* conditions are met: */
|
||
|
/* */
|
||
|
/* 1. Redistributions of source code must retain the above */
|
||
|
/* copyright notice, this list of conditions and the following */
|
||
|
/* disclaimer. */
|
||
|
/* */
|
||
|
/* 2. Redistributions in binary form must reproduce the above */
|
||
|
/* copyright notice, this list of conditions and the following */
|
||
|
/* disclaimer in the documentation and/or other materials */
|
||
|
/* provided with the distribution. */
|
||
|
/* */
|
||
|
/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
|
||
|
/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
|
||
|
/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
|
||
|
/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
|
||
|
/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
|
||
|
/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
|
||
|
/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
|
||
|
/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
|
||
|
/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
|
||
|
/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
|
||
|
/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
|
||
|
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
|
||
|
/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
|
||
|
/* POSSIBILITY OF SUCH DAMAGE. */
|
||
|
/* */
|
||
|
/* The views and conclusions contained in the software and */
|
||
|
/* documentation are those of the authors and should not be */
|
||
|
/* interpreted as representing official policies, either expressed */
|
||
|
/* or implied, of The University of Texas at Austin. */
|
||
|
/*********************************************************************/
|
||
|
|
||
|
#ifndef CPUID_H
|
||
|
#define CPUID_H
|
||
|
|
||
|
#define VENDOR_INTEL 1
|
||
|
#define VENDOR_UMC 2
|
||
|
#define VENDOR_AMD 3
|
||
|
#define VENDOR_CYRIX 4
|
||
|
#define VENDOR_NEXGEN 5
|
||
|
#define VENDOR_CENTAUR 6
|
||
|
#define VENDOR_RISE 7
|
||
|
#define VENDOR_SIS 8
|
||
|
#define VENDOR_TRANSMETA 9
|
||
|
#define VENDOR_NSC 10
|
||
|
#define VENDOR_UNKNOWN 99
|
||
|
|
||
|
#define BITMASK(a, b, c) ((((a) >> (b)) & (c)))
|
||
|
|
||
|
#define FAMILY_80486 4
|
||
|
#define FAMILY_P5 5
|
||
|
#define FAMILY_P6 6
|
||
|
#define FAMILY_PM 7
|
||
|
#define FAMILY_IA64 8
|
||
|
|
||
|
#if defined(__i386__) || defined(__x86_64__)
|
||
|
#define GET_EXFAMILY 1
|
||
|
#define GET_EXMODEL 2
|
||
|
#define GET_TYPE 3
|
||
|
#define GET_FAMILY 4
|
||
|
#define GET_MODEL 5
|
||
|
#define GET_APICID 6
|
||
|
#define GET_LCOUNT 7
|
||
|
#define GET_CHUNKS 8
|
||
|
#define GET_STEPPING 9
|
||
|
#define GET_BLANDID 10
|
||
|
#define GET_FEATURE 11
|
||
|
#define GET_NUMSHARE 12
|
||
|
#define GET_NUMCORES 13
|
||
|
#endif
|
||
|
|
||
|
#ifdef __ia64__
|
||
|
#define GET_ARCHREV 1
|
||
|
#define GET_FAMILY 2
|
||
|
#define GET_MODEL 3
|
||
|
#define GET_REVISION 4
|
||
|
#define GET_NUMBER 5
|
||
|
#endif
|
||
|
|
||
|
#define CORE_UNKNOWN 0
|
||
|
#define CORE_80486 1
|
||
|
#define CORE_P5 2
|
||
|
#define CORE_P6 3
|
||
|
#define CORE_KATMAI 4
|
||
|
#define CORE_COPPERMINE 5
|
||
|
#define CORE_NORTHWOOD 6
|
||
|
#define CORE_PRESCOTT 7
|
||
|
#define CORE_BANIAS 8
|
||
|
#define CORE_ATHLON 9
|
||
|
#define CORE_OPTERON 10
|
||
|
#define CORE_BARCELONA 11
|
||
|
#define CORE_VIAC3 12
|
||
|
#define CORE_YONAH 13
|
||
|
#define CORE_CORE2 14
|
||
|
#define CORE_PENRYN 15
|
||
|
#define CORE_DUNNINGTON 16
|
||
|
#define CORE_NEHALEM 17
|
||
|
#define CORE_ATOM 18
|
||
|
#define CORE_NANO 19
|
||
|
|
||
|
#define HAVE_SSE (1 << 0)
|
||
|
#define HAVE_SSE2 (1 << 1)
|
||
|
#define HAVE_SSE3 (1 << 2)
|
||
|
#define HAVE_SSSE3 (1 << 3)
|
||
|
#define HAVE_SSE4_1 (1 << 4)
|
||
|
#define HAVE_SSE4_2 (1 << 5)
|
||
|
#define HAVE_SSE4A (1 << 6)
|
||
|
#define HAVE_SSE5 (1 << 7)
|
||
|
#define HAVE_MMX (1 << 8)
|
||
|
#define HAVE_3DNOW (1 << 9)
|
||
|
#define HAVE_3DNOWEX (1 << 10)
|
||
|
#define HAVE_CMOV (1 << 11)
|
||
|
#define HAVE_PSE (1 << 12)
|
||
|
#define HAVE_CFLUSH (1 << 13)
|
||
|
#define HAVE_HIT (1 << 14)
|
||
|
#define HAVE_MISALIGNSSE (1 << 15)
|
||
|
#define HAVE_128BITFPU (1 << 16)
|
||
|
#define HAVE_FASTMOVU (1 << 17)
|
||
|
|
||
|
#define CACHE_INFO_L1_I 1
|
||
|
#define CACHE_INFO_L1_D 2
|
||
|
#define CACHE_INFO_L2 3
|
||
|
#define CACHE_INFO_L3 4
|
||
|
#define CACHE_INFO_L1_ITB 5
|
||
|
#define CACHE_INFO_L1_DTB 6
|
||
|
#define CACHE_INFO_L1_LITB 7
|
||
|
#define CACHE_INFO_L1_LDTB 8
|
||
|
#define CACHE_INFO_L2_ITB 9
|
||
|
#define CACHE_INFO_L2_DTB 10
|
||
|
#define CACHE_INFO_L2_LITB 11
|
||
|
#define CACHE_INFO_L2_LDTB 12
|
||
|
|
||
|
typedef struct {
|
||
|
int size;
|
||
|
int associative;
|
||
|
int linesize;
|
||
|
int shared;
|
||
|
} cache_info_t;
|
||
|
|
||
|
#define CPUTYPE_UNKNOWN 0
|
||
|
#define CPUTYPE_INTEL_UNKNOWN 1
|
||
|
#define CPUTYPE_UMC_UNKNOWN 2
|
||
|
#define CPUTYPE_AMD_UNKNOWN 3
|
||
|
#define CPUTYPE_CYRIX_UNKNOWN 4
|
||
|
#define CPUTYPE_NEXGEN_UNKNOWN 5
|
||
|
#define CPUTYPE_CENTAUR_UNKNOWN 6
|
||
|
#define CPUTYPE_RISE_UNKNOWN 7
|
||
|
#define CPUTYPE_SIS_UNKNOWN 8
|
||
|
#define CPUTYPE_TRANSMETA_UNKNOWN 9
|
||
|
#define CPUTYPE_NSC_UNKNOWN 10
|
||
|
|
||
|
#define CPUTYPE_80386 11
|
||
|
#define CPUTYPE_80486 12
|
||
|
#define CPUTYPE_PENTIUM 13
|
||
|
#define CPUTYPE_PENTIUM2 14
|
||
|
#define CPUTYPE_PENTIUM3 15
|
||
|
#define CPUTYPE_PENTIUMM 16
|
||
|
#define CPUTYPE_PENTIUM4 17
|
||
|
#define CPUTYPE_CORE2 18
|
||
|
#define CPUTYPE_PENRYN 19
|
||
|
#define CPUTYPE_DUNNINGTON 20
|
||
|
#define CPUTYPE_NEHALEM 21
|
||
|
#define CPUTYPE_ATOM 22
|
||
|
#define CPUTYPE_ITANIUM 23
|
||
|
#define CPUTYPE_ITANIUM2 24
|
||
|
#define CPUTYPE_AMD5X86 25
|
||
|
#define CPUTYPE_AMDK6 26
|
||
|
#define CPUTYPE_ATHLON 27
|
||
|
#define CPUTYPE_DURON 28
|
||
|
#define CPUTYPE_OPTERON 29
|
||
|
#define CPUTYPE_BARCELONA 30
|
||
|
#define CPUTYPE_SHANGHAI 31
|
||
|
#define CPUTYPE_ISTANBUL 32
|
||
|
#define CPUTYPE_CYRIX5X86 33
|
||
|
#define CPUTYPE_CYRIXM1 34
|
||
|
#define CPUTYPE_CYRIXM2 35
|
||
|
#define CPUTYPE_NEXGENNX586 36
|
||
|
#define CPUTYPE_CENTAURC6 37
|
||
|
#define CPUTYPE_RISEMP6 38
|
||
|
#define CPUTYPE_SYS55X 39
|
||
|
#define CPUTYPE_CRUSOETM3X 40
|
||
|
#define CPUTYPE_NSGEODE 41
|
||
|
#define CPUTYPE_VIAC3 42
|
||
|
#define CPUTYPE_NANO 43
|
||
|
#endif
|