3 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
16 Provide cpu version extract considering extended family & model ID.
19 #include <Library/CpuIA32.h>
22 Extract CPU detail version infomation
24 @param FamilyId FamilyId, including ExtendedFamilyId
25 @param Model Model, including ExtendedModel
26 @param SteppingId SteppingId
27 @param Processor Processor
33 IN OUT UINT16
*FamilyId
, OPTIONAL
34 IN OUT UINT8
*Model
, OPTIONAL
35 IN OUT UINT8
*SteppingId
, OPTIONAL
36 IN OUT UINT8
*Processor OPTIONAL
40 EFI_CPUID_REGISTER Register
;
43 EfiCpuid (EFI_CPUID_VERSION_INFO
, &Register
);
45 if (SteppingId
!= NULL
) {
46 *SteppingId
= (UINT8
) (Register
.RegEax
& 0xF);
49 if (Processor
!= NULL
) {
50 *Processor
= (UINT8
) ((Register
.RegEax
>> 12) & 0x3);
53 if (Model
!= NULL
|| FamilyId
!= NULL
) {
54 TempFamilyId
= (UINT8
) ((Register
.RegEax
>> 8) & 0xF);
57 *Model
= (UINT8
) ((Register
.RegEax
>> 4) & 0xF);
58 if (TempFamilyId
== 0x6 || TempFamilyId
== 0xF) {
59 *Model
= (UINT8
) (*Model
| ((Register
.RegEax
>> 12) & 0xF0));
63 if (FamilyId
!= NULL
) {
64 *FamilyId
= TempFamilyId
;
65 if (TempFamilyId
== 0xF) {
66 *FamilyId
= (UINT8
) (*FamilyId
+ (UINT16
) ((Register
.RegEax
>> 20) & 0xFF));