BaseCpuTimerLib.c 985 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /** @file
  2. CPUID Leaf 0x15 for Core Crystal Clock frequency instance as Base Timer Library.
  3. Copyright (c) 2019 Intel Corporation. All rights reserved.<BR>
  4. SPDX-License-Identifier: BSD-2-Clause-Patent
  5. **/
  6. #include <Base.h>
  7. #include <Library/TimerLib.h>
  8. #include <Library/BaseLib.h>
  9. /**
  10. CPUID Leaf 0x15 for Core Crystal Clock Frequency.
  11. The TSC counting frequency is determined by using CPUID leaf 0x15. Frequency in MHz = Core XTAL frequency * EBX/EAX.
  12. In newer flavors of the CPU, core xtal frequency is returned in ECX or 0 if not supported.
  13. @return The number of TSC counts per second.
  14. **/
  15. UINT64
  16. CpuidCoreClockCalculateTscFrequency (
  17. VOID
  18. );
  19. /**
  20. Internal function to retrieves the 64-bit frequency in Hz.
  21. Internal function to retrieves the 64-bit frequency in Hz.
  22. @return The frequency in Hz.
  23. **/
  24. UINT64
  25. InternalGetPerformanceCounterFrequency (
  26. VOID
  27. )
  28. {
  29. return CpuidCoreClockCalculateTscFrequency ();
  30. }