14: struc CPUdescStruct 15: 16: ;General Information 17: 18: .flags: resd 1 ;CPU description flags 19: .CPUIDcloakType: resd 1 ;Method to use to cloak/uncloak CPUID 20: 21: ;CPU Identification 22: 23: .vendorID: resd 1 ;Vendor ID 24: 25: .vendorString: resb 12 ;CPU vendor string 26: resb 1 ;Used for ASCIIZ termination 27: alignb 4 28: .brandString: resb 64 ;CPU brand string 29: resb 1 ;Used for ASCIIZ termination 30: alignb 4 31: 32: .family: resd 1 ;CPU family 33: .model: resb 1 ;CPU model number 34: .stepping: resb 1 ;CPU stepping 35: .revision: resb 1 ;CPU revision 36: alignb 4 37: .softRevision: resq 2 ;Software revision (e.g. microcode) 38: .platformID: resd 1 ;CPU platform ID 39: alignb 4 40: .physAddressBits: resb 1 ;Number of physical address bits 41: .linearAddressBits: resb 1 ;Number of linear address bits 42: alignb 4 43: 44: ;CPU Features 45: 46: .userFeatures: resq 2 ;User-mode features flags 47: .kernelFeatures: resq 2 ;Kernel-mode features flags 48: .powerManagementFeatures: resd 1 ;Power management features (depends on CPU vendor) 49: 50: ;CPU bugs 51: 52: .errata: resq 2 ;Errata flags 53: .flaws: resq 2 ;Flaws flags 54: 55: ;CPU Internal Caches 56: 57: .CLFLUSHlineSize: resd 1 ;CLFLUSH cache line size in bytes (0 if unknown or CLFLUSH not supported) 58: .MONITORsmallest: resd 1 ;Smallest monitor line size in bytes 59: .MONITORlargest: resd 1 ;Largest monitor line size in bytes 60: 61: .cacheFlags: resd 1 ;Cache flags 62: 63: .L1cacheData: 64: .L1cacheSize: resd 1 ;L1 cache size (instruction or unified) 65: .L1cacheAssoc: resd 1 ;L1 cache associativity (instruction or unified) 66: .L1dataCacheSize: resd 1 ;L1 data cache size (if not unified) 67: .L1dataCacheAssoc: resd 1 ;L1 data cache associativity (if not unified) 68: .L1sharedCPUs: resd 1 ;Number of APIC IDs served by L1 caches - 1 69: 70: .L2cacheData: 71: .L2cacheSize: resd 1 ;L2 cache size (instruction or unified) 72: .L2cacheAssoc: resd 1 ;L2 cache associativity (instruction or unified) 73: .L2dataCacheSize: resd 1 ;L2 data cache size (if not unified) 74: .L2dataCacheAssoc: resd 1 ;L2 data cache associativity (if not unified) 75: .L2sharedCPUs: resd 1 ;Number of APIC IDs served by L2 caches - 1 76: 77: .L3cacheData: 78: .L3cacheSize: resd 1 ;L3 cache size (instruction or unified) 79: .L3cacheAssoc: resd 1 ;L3 cache associativity (instruction or unified) 80: .L3dataCacheSize: resd 1 ;L3 data cache size (if not unified) 81: .L3dataCacheAssoc: resd 1 ;L3 data cache associativity (if not unified) 82: .L3sharedCPUs: resd 1 ;Number of APIC IDs served by L3 caches - 1 83: 84: ;CPU Internal Topology 85: 86: .APICID_packageShift: resd 1 ;Number of times to shift APIC ID right to get package number 87: .APICID_coreShift: resd 1 ;Number of times to shift APIC ID right to get global core ID 88: .APICID_coreMask: resd 1 ;Mask to find core number within package from global core ID 89: .APICID_CPUshift: resd 1 ;Number of times to shift APIC ID right to get logical CPU ID 90: .APICID_CPUmask: resd 1 ;Mask to find logical CPU number within core from APIC ID 91: 92: alignb 4 ;Structure must be a multiple of 4 bytes 93: endstruc
|