Annotation of XNU/osfmk/i386/cpuid.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * The contents of this file constitute Original Code as defined in and
        !             7:  * are subject to the Apple Public Source License Version 1.1 (the
        !             8:  * "License").  You may not use this file except in compliance with the
        !             9:  * License.  Please obtain a copy of the License at
        !            10:  * http://www.apple.com/publicsource and read it before using this file.
        !            11:  * 
        !            12:  * This Original Code and all software distributed under the License are
        !            13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            17:  * License for the specific language governing rights and limitations
        !            18:  * under the License.
        !            19:  * 
        !            20:  * @APPLE_LICENSE_HEADER_END@
        !            21:  */
        !            22: /*
        !            23:  * @OSF_COPYRIGHT@
        !            24:  */
        !            25: 
        !            26: /*
        !            27:  * x86 CPU identification
        !            28:  *
        !            29:  * TODO : Add TI/Thomson processors
        !            30:  */
        !            31: 
        !            32: #ifndef _MACHINE_CPUID_H_
        !            33: #define _MACHINE_CPUID_H_
        !            34: 
        !            35: #define        CPUID_VID_SIZE          12
        !            36: #define        CPUID_VID_INTEL         "GenuineIntel"
        !            37: #define        CPUID_VID_UMC           "UMC UMC UMC "
        !            38: #define        CPUID_VID_AMD           "AuthenticAMD"
        !            39: #define        CPUID_VID_CYRIX         "CyrixInstead"
        !            40: #define        CPUID_VID_NEXTGEN       "NexGenDriven"
        !            41: 
        !            42: #define        CPUID_FEATURE_FPU    0x00000001 /* Floating point unit on-chip */
        !            43: #define        CPUID_FEATURE_VME    0x00000002 /* Virtual Mode Extension */
        !            44: #define        CPUID_FEATURE_IOB    0x00000004 /* I/O Breakpoints */
        !            45: #define        CPUID_FEATURE_PSE    0x00000008 /* Page Size Extension */
        !            46: #define        CPUID_FEATURE_TSC    0x00000010 /* Time Stamp Counter */
        !            47: #define        CPUID_FEATURE_MSR    0x00000020 /* Model Specific Registers */
        !            48: #define        CPUID_FEATURE_MCE    0x00000080 /* Machine Check Exception */
        !            49: #define        CPUID_FEATURE_CX8    0x00000100 /* CMPXCHG8B */
        !            50: #define        CPUID_FEATURE_APIC   0x00000200 /* On-chip APIC */
        !            51: #define        CPUID_FEATURE_MTRR   0x00001000 /* Memory Type Range Register */
        !            52: #define        CPUID_FEATURE_PGE    0x00002000 /* Page Global Enable */
        !            53: #define        CPUID_FEATURE_MCA    0x00004000 /* Machine Check Architecture */
        !            54: #define        CPUID_FEATURE_CMOV   0x00008000 /* Conditional Move Instruction */
        !            55: 
        !            56: #define        CPUID_TYPE_OEM              0x0 /* Original processor */
        !            57: #define        CPUID_TYPE_OVERDRIVE        0x1 /* Overdrive processor */
        !            58: #define        CPUID_TYPE_DUAL             0x2 /* Can be used as dual processor */
        !            59: #define        CPUID_TYPE_RESERVED         0x3 /* Reserved */
        !            60: 
        !            61: #define        CPUID_FAMILY_386            0x3 /* Intel 386 (not part of CPUID) */
        !            62: #define        CPUID_FAMILY_486            0x4 /* Intel 486 */
        !            63: #define        CPUID_FAMILY_P5             0x5 /* Intel Pentium */
        !            64: #define        CPUID_FAMILY_PPRO           0x6 /* Intel Pentium Pro */
        !            65: 
        !            66: #define        CPUID_MODEL_I386_DX         0x0 /* Intel 386 (not part of CPUID) */
        !            67: 
        !            68: #define        CPUID_MODEL_I486_DX         0x0 /* Intel 486DX */
        !            69: #define        CPUID_MODEL_I486_DX_S       0x1 /* Intel 486DX-S */
        !            70: #define        CPUID_MODEL_I486_SX         0x2 /* Intel 486SX */
        !            71: #define        CPUID_MODEL_I486_DX2        0x3 /* Intel 486DX2 */
        !            72: #define        CPUID_MODEL_I486_SL         0x4 /* Intel 486SL */
        !            73: #define        CPUID_MODEL_I486_SX2        0x5 /* Intel 486SX2 */
        !            74: #define        CPUID_MODEL_I486_DX2WB      0x7 /* Intel 486DX2WB */
        !            75: #define        CPUID_MODEL_I486_DX4        0x8 /* Intel 486DX4 */
        !            76: #define        CPUID_MODEL_I486_DX4WB      0x9 /* Intel 486DX4WB */
        !            77: 
        !            78: #define        CPUID_MODEL_AM486_DX        0x1 /* AMD 486DX */
        !            79: #define        CPUID_MODEL_AM486_DX2       0x3 /* AMD 486DX2 */
        !            80: #define        CPUID_MODEL_AM486_DX2WB     0x7 /* AMD 486DX2WB */
        !            81: #define        CPUID_MODEL_AM486_DX4       0x8 /* AMD 486DX4 */
        !            82: #define        CPUID_MODEL_AM486_DX4WB     0x9 /* AMD 486DX4WB */
        !            83: #define        CPUID_MODEL_AM486_5X86      0xE /* AMD 5x86 */
        !            84: #define        CPUID_MODEL_AM486_5X86WB    0xF /* AMD 5x86WB */
        !            85: 
        !            86: #define        CPUID_MODEL_CYRIX5X86       0x9 /* CYRIX 5X86 */
        !            87: 
        !            88: #define        CPUID_MODEL_UMC5SD          0x1 /* UMC U5SD */
        !            89: #define        CPUID_MODEL_UMC5S           0x2 /* UMC U5S */
        !            90: #define        CPUID_MODEL_UMC486_DX2      0x3 /* UMC U486_DX2 */
        !            91: #define        CPUID_MODEL_UMC486_SX2      0x5 /* UMC U486_SX2 */
        !            92: 
        !            93: #define        CPUID_MODEL_P5A             0x0 /* Intel P5 60/66 Step A */
        !            94: #define        CPUID_MODEL_P5              0x1 /* Intel P5 60/66 */
        !            95: #define        CPUID_MODEL_P54             0x2 /* Intel P5 75/80/100/120/133/166 */
        !            96: #define        CPUID_MODEL_P24T            0x3 /* Intel P5 Overdrive 63/83 */
        !            97: 
        !            98: #define        CPUID_MODEL_P6              0x1 /* Intel P6 */
        !            99: #define        CPUID_MODEL_PII             0x3 /* Intel PII */
        !           100: 
        !           101: #define        CPUID_CACHE_SIZE        16      /* Number of descriptor vales */
        !           102: #define        CPUID_CACHE_VALID        4      /* Index of descriptor validity */
        !           103: 
        !           104: #define        CPUID_CACHE_NULL           0x00 /* NULL */
        !           105: #define        CPUID_CACHE_ITLB_4K        0x01 /* Instruction TLB, 4K pages */
        !           106: #define        CPUID_CACHE_ITLB_4M        0x02 /* Instruction TLB, 4M pages */
        !           107: #define        CPUID_CACHE_DTLB_4K        0x03 /* Data TLB, 4K pages */
        !           108: #define        CPUID_CACHE_DTLB_4M        0x04 /* Data TLB, 4M pages */
        !           109: #define        CPUID_CACHE_ICACHE_8K      0x06 /* Instruction cache, 8K */
        !           110: #define        CPUID_CACHE_DCACHE_8K      0x0A /* Data cache, 8K */
        !           111: #define        CPUID_CACHE_UCACHE_128K    0x41 /* Unified cache, 128K */
        !           112: #define        CPUID_CACHE_UCACHE_256K    0x42 /* Unified cache, 256K */
        !           113: #define        CPUID_CACHE_UCACHE_512K    0x43 /* Unified cache, 512K */
        !           114: 
        !           115: #ifndef ASSEMBLER
        !           116: #include <mach/machine.h>
        !           117: 
        !           118: extern unsigned int    cpuid_value;
        !           119: extern unsigned char   cpuid_type;
        !           120: extern unsigned char   cpuid_family;
        !           121: extern unsigned char   cpuid_model;
        !           122: extern unsigned char   cpuid_stepping;
        !           123: extern unsigned int    cpuid_feature;
        !           124: extern char            cpuid_vid[];
        !           125: extern unsigned char   cpuid_cache[];
        !           126: 
        !           127: /*
        !           128:  * Product ID arrays per vendor
        !           129:  */
        !           130: struct cpuid_product {
        !           131:     unsigned char              type;           /* CPU type */
        !           132:     unsigned char              family;         /* CPU family */
        !           133:     unsigned char              model;          /* CPU model */
        !           134:     unsigned int               delay;          /* 1MHz Delay (scale 1000) */
        !           135:     unsigned int               *frequency;     /* Frequency array */
        !           136:     char                       *name;          /* Model name */
        !           137: };
        !           138: 
        !           139: /*
        !           140:  * Vendor ID structure
        !           141:  */
        !           142: struct cpuid_name {
        !           143:     char                       *name;          /* Vendor ID name */
        !           144:     struct cpuid_product       *product;       /* product array */
        !           145:     unsigned int               size;           /* #elements in product array */
        !           146: };
        !           147: 
        !           148: /*
        !           149:  * Cache ID description structure
        !           150:  */
        !           151: struct cpuid_cache_desc {
        !           152:     unsigned char              value;          /* Descriptor value */
        !           153:     char                       *description;   /* Cache description */
        !           154: };
        !           155: 
        !           156: /*
        !           157:  * External declarations
        !           158:  */
        !           159: extern cpu_type_t      cpuid_cputype(int);
        !           160: extern void            cpuid_cpu_display(char *, int);
        !           161: extern void            cpuid_cache_display(char *, int);
        !           162: 
        !           163: #endif /* ASSEMBLER */
        !           164: #endif /* _MACHINE_CPUID_H_ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.