REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1909 Cc: Ray Ni <ray.ni@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Amy Chan <amy.chan@intel.com> Cc: Rangasai V Chaganty <rangasai.v.chaganty@intel.com> Signed-off-by: Donald Kuo <donald.kuo@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com>
		
			
				
	
	
		
			42 lines
		
	
	
		
			987 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			987 B
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  CPUID Leaf 0x15 for Core Crystal Clock frequency instance as Base Timer Library.
 | 
						|
 | 
						|
  Copyright (c) 2019 Intel Corporation. All rights reserved.<BR>
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#include <Base.h>
 | 
						|
#include <Library/TimerLib.h>
 | 
						|
#include <Library/BaseLib.h>
 | 
						|
 | 
						|
/**
 | 
						|
  CPUID Leaf 0x15 for Core Crystal Clock Frequency.
 | 
						|
 | 
						|
  The TSC counting frequency is determined by using CPUID leaf 0x15. Frequency in MHz = Core XTAL frequency * EBX/EAX.
 | 
						|
  In newer flavors of the CPU, core xtal frequency is returned in ECX or 0 if not supported.
 | 
						|
  @return The number of TSC counts per second.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
CpuidCoreClockCalculateTscFrequency (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Internal function to retrieves the 64-bit frequency in Hz.
 | 
						|
 | 
						|
  Internal function to retrieves the 64-bit frequency in Hz.
 | 
						|
 | 
						|
  @return The frequency in Hz.
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
InternalGetPerformanceCounterFrequency (
 | 
						|
  VOID
 | 
						|
  )
 | 
						|
{
 | 
						|
  return CpuidCoreClockCalculateTscFrequency ();
 | 
						|
}
 | 
						|
 |