ACPI Timer implements one instance of Timer Library.\r
\r
Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) Microsoft Corporation.\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#include <PiDxe.h>\r
-#include <Library/TimerLib.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/HobLib.h>\r
\r
-extern GUID mFrequencyHobGuid;\r
-\r
-/**\r
- The constructor function enables ACPI IO space.\r
-\r
- If ACPI I/O space not enabled, this function will enable it.\r
- It will always return RETURN_SUCCESS.\r
-\r
- @retval EFI_SUCCESS The constructor always returns RETURN_SUCCESS.\r
-\r
-**/\r
-RETURN_STATUS\r
-EFIAPI\r
-AcpiTimerLibConstructor (\r
- VOID\r
- );\r
-\r
-/**\r
- Calculate TSC frequency.\r
-\r
- The TSC counting frequency is determined by comparing how far it counts\r
- during a 101.4 us period as determined by the ACPI timer.\r
- The ACPI timer is used because it counts at a known frequency.\r
- The TSC is sampled, followed by waiting 363 counts of the ACPI timer,\r
- or 101.4 us. The TSC is then sampled again. The difference multiplied by\r
- 9861 is the TSC frequency. There will be a small error because of the\r
- overhead of reading the ACPI timer. An attempt is made to determine and\r
- compensate for this error.\r
-\r
- @return The number of TSC counts per second.\r
-\r
-**/\r
-UINT64\r
-InternalCalculateTscFrequency (\r
- VOID\r
- );\r
-\r
-//\r
-// Cached performance counter frequency\r
-//\r
-UINT64 mPerformanceCounterFrequency = 0;\r
-\r
-/**\r
- Internal function to retrieves the 64-bit frequency in Hz.\r
-\r
- Internal function to retrieves the 64-bit frequency in Hz.\r
-\r
- @return The frequency in Hz.\r
-\r
-**/\r
-UINT64\r
-InternalGetPerformanceCounterFrequency (\r
- VOID\r
- )\r
-{\r
- return mPerformanceCounterFrequency;\r
-}\r
+#include "DxeStandaloneMmAcpiTimerLib.h"\r
\r
/**\r
The constructor function enables ACPI IO space, and caches PerformanceCounterFrequency.\r
IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_HOB_GUID_TYPE *GuidHob;\r
-\r
- //\r
- // Enable ACPI IO space.\r
- //\r
- AcpiTimerLibConstructor ();\r
-\r
- //\r
- // Initialize PerformanceCounterFrequency\r
- //\r
- GuidHob = GetFirstGuidHob (&mFrequencyHobGuid);\r
- if (GuidHob != NULL) {\r
- mPerformanceCounterFrequency = *(UINT64*)GET_GUID_HOB_DATA (GuidHob);\r
- } else {\r
- mPerformanceCounterFrequency = InternalCalculateTscFrequency ();\r
- }\r
-\r
- return EFI_SUCCESS;\r
+ return CommonAcpiTimerLibConstructor ();\r
}\r