mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-26 23:24:03 +02:00
UefiCpuPkg/UefiCpuLib: Add GetCpuFamilyModel and GetCpuSteppingId
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3698 Lots of code relies on CPU Family/Model/Stepping for different logics. The change adds two APIs for such needs. Signed-off-by: Ray Ni <ray.ni@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Cc: Rahul Kumar <rahul1.kumar@intel.com>
This commit is contained in:
parent
a7b35aae13
commit
f826b20811
@ -4,7 +4,7 @@
|
|||||||
This library class defines some routines that are generic for IA32 family CPU
|
This library class defines some routines that are generic for IA32 family CPU
|
||||||
to be UEFI specification compliant.
|
to be UEFI specification compliant.
|
||||||
|
|
||||||
Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2021, Intel Corporation. All rights reserved.<BR>
|
||||||
Copyright (c) 2020, AMD Inc. All rights reserved.<BR>
|
Copyright (c) 2020, AMD Inc. All rights reserved.<BR>
|
||||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
|
|
||||||
@ -43,4 +43,25 @@ StandardSignatureIsAuthenticAMD (
|
|||||||
VOID
|
VOID
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Return the 32bit CPU family and model value.
|
||||||
|
|
||||||
|
@return CPUID[01h].EAX with Processor Type and Stepping ID cleared.
|
||||||
|
**/
|
||||||
|
UINT32
|
||||||
|
EFIAPI
|
||||||
|
GetCpuFamilyModel (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Return the CPU stepping ID.
|
||||||
|
@return CPU stepping ID value in CPUID[01h].EAX.
|
||||||
|
**/
|
||||||
|
UINT8
|
||||||
|
EFIAPI
|
||||||
|
GetCpuSteppingId (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
The library routines are UEFI specification compliant.
|
The library routines are UEFI specification compliant.
|
||||||
|
|
||||||
Copyright (c) 2020, AMD Inc. All rights reserved.<BR>
|
Copyright (c) 2020, AMD Inc. All rights reserved.<BR>
|
||||||
|
Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
|
||||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
|
|
||||||
**/
|
**/
|
||||||
@ -36,3 +37,45 @@ StandardSignatureIsAuthenticAMD (
|
|||||||
RegEcx == CPUID_SIGNATURE_AUTHENTIC_AMD_ECX &&
|
RegEcx == CPUID_SIGNATURE_AUTHENTIC_AMD_ECX &&
|
||||||
RegEdx == CPUID_SIGNATURE_AUTHENTIC_AMD_EDX);
|
RegEdx == CPUID_SIGNATURE_AUTHENTIC_AMD_EDX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Return the 32bit CPU family and model value.
|
||||||
|
|
||||||
|
@return CPUID[01h].EAX with Processor Type and Stepping ID cleared.
|
||||||
|
**/
|
||||||
|
UINT32
|
||||||
|
EFIAPI
|
||||||
|
GetCpuFamilyModel (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
CPUID_VERSION_INFO_EAX Eax;
|
||||||
|
|
||||||
|
AsmCpuid (CPUID_VERSION_INFO, &Eax.Uint32, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Mask other fields than Family and Model.
|
||||||
|
//
|
||||||
|
Eax.Bits.SteppingId = 0;
|
||||||
|
Eax.Bits.ProcessorType = 0;
|
||||||
|
Eax.Bits.Reserved1 = 0;
|
||||||
|
Eax.Bits.Reserved2 = 0;
|
||||||
|
return Eax.Uint32;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Return the CPU stepping ID.
|
||||||
|
@return CPU stepping ID value in CPUID[01h].EAX.
|
||||||
|
**/
|
||||||
|
UINT8
|
||||||
|
EFIAPI
|
||||||
|
GetCpuSteppingId (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
CPUID_VERSION_INFO_EAX Eax;
|
||||||
|
|
||||||
|
AsmCpuid (CPUID_VERSION_INFO, &Eax.Uint32, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
return (UINT8) Eax.Bits.SteppingId;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user