]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/SecPeiDxeTimerLibCpu/IpfTimerLib.c
MdePkg: Removing ipf which is no longer supported from edk2.
[mirror_edk2.git] / MdePkg / Library / SecPeiDxeTimerLibCpu / IpfTimerLib.c
diff --git a/MdePkg/Library/SecPeiDxeTimerLibCpu/IpfTimerLib.c b/MdePkg/Library/SecPeiDxeTimerLibCpu/IpfTimerLib.c
deleted file mode 100644 (file)
index 714b99e..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-/** @file\r
-  Timer Library functions built upon ITC on IPF.\r
-\r
-  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
-  This program and the accompanying materials\r
-  are licensed and made available under the terms and conditions of the BSD License\r
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php.\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#include <Base.h>\r
-#include <Library/TimerLib.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/PalLib.h>\r
-\r
-\r
-/**\r
-  Performs a delay measured as number of ticks.\r
-\r
-  An internal function to perform a delay measured as number of ticks. It's\r
-  invoked by MicroSecondDelay() and NanoSecondDelay().\r
-\r
-  @param  Delay The number of ticks to delay.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-InternalIpfDelay (\r
-  IN      INT64                     Delay\r
-  )\r
-{\r
-  INT64                             Ticks;\r
-\r
-  //\r
-  // The target timer count is calculated here\r
-  //\r
-  Ticks = (INT64)AsmReadItc () + Delay;\r
-\r
-  //\r
-  // Wait until time out\r
-  // Delay > 2^63 could not be handled by this function\r
-  // Timer wrap-arounds are handled correctly by this function\r
-  //\r
-  while (Ticks - (INT64)AsmReadItc() >= 0);\r
-}\r
-\r
-/**\r
-  Stalls the CPU for at least the given number of microseconds.\r
-\r
-  Stalls the CPU for the number of microseconds specified by MicroSeconds.\r
-\r
-  @param  MicroSeconds  The minimum number of microseconds to delay.\r
-\r
-  @return The value of MicroSeconds inputted.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-MicroSecondDelay (\r
-  IN      UINTN                     MicroSeconds\r
-  )\r
-{\r
-  InternalIpfDelay (\r
-    GetPerformanceCounterProperties (NULL, NULL) *\r
-    MicroSeconds /\r
-    1000000\r
-    );\r
-  return MicroSeconds;\r
-}\r
-\r
-/**\r
-  Stalls the CPU for at least the given number of nanoseconds.\r
-\r
-  Stalls the CPU for the number of nanoseconds specified by NanoSeconds.\r
-\r
-  @param  NanoSeconds The minimum number of nanoseconds to delay.\r
-\r
-  @return The value of NanoSeconds inputted.\r
-\r
-**/\r
-UINTN\r
-EFIAPI\r
-NanoSecondDelay (\r
-  IN      UINTN                     NanoSeconds\r
-  )\r
-{\r
-  InternalIpfDelay (\r
-    GetPerformanceCounterProperties (NULL, NULL) *\r
-    NanoSeconds /\r
-    1000000000\r
-    );\r
-  return NanoSeconds;\r
-}\r
-\r
-/**\r
-  Retrieves the current value of a 64-bit free running performance counter.\r
-\r
-  The counter can either count up by 1 or count down by 1. If the physical\r
-  performance counter counts by a larger increment, then the counter values\r
-  must be translated. The properties of the counter can be retrieved from\r
-  GetPerformanceCounterProperties().\r
-\r
-  @return The current value of the free running performance counter.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-GetPerformanceCounter (\r
-  VOID\r
-  )\r
-{\r
-  return AsmReadItc ();\r
-}\r
-\r
-/**\r
-  Retrieves the 64-bit frequency in Hz and the range of performance counter\r
-  values.\r
-\r
-  If StartValue is not NULL, then the value that the performance counter starts\r
-  with immediately after is it rolls over is returned in StartValue. If\r
-  EndValue is not NULL, then the value that the performance counter end with\r
-  immediately before it rolls over is returned in EndValue. The 64-bit\r
-  frequency of the performance counter in Hz is always returned. If StartValue\r
-  is less than EndValue, then the performance counter counts up. If StartValue\r
-  is greater than EndValue, then the performance counter counts down. For\r
-  example, a 64-bit free running counter that counts up would have a StartValue\r
-  of 0 and an EndValue of 0xFFFFFFFFFFFFFFFF. A 24-bit free running counter\r
-  that counts down would have a StartValue of 0xFFFFFF and an EndValue of 0.\r
-\r
-  @param  StartValue  The value the performance counter starts with when it\r
-                      rolls over.\r
-  @param  EndValue    The value that the performance counter ends with before\r
-                      it rolls over.\r
-\r
-  @return The frequency in Hz.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-GetPerformanceCounterProperties (\r
-  OUT      UINT64                    *StartValue,  OPTIONAL\r
-  OUT      UINT64                    *EndValue     OPTIONAL\r
-  )\r
-{\r
-  PAL_CALL_RETURN                   PalRet;\r
-  UINT64                            BaseFrequence;\r
-\r
-  if (StartValue != NULL) {\r
-    *StartValue = 0;\r
-  }\r
-\r
-  if (EndValue != NULL) {\r
-    *EndValue = (UINT64)(-1);\r
-  }\r
-\r
-  PalRet = PalCall (PAL_FREQ_BASE, 0, 0, 0);\r
-  if (PalRet.Status != 0) {\r
-    return 1000000;\r
-  }\r
-  BaseFrequence = PalRet.r9;\r
-\r
-  PalRet = PalCall (PAL_FREQ_RATIOS, 0, 0, 0);\r
-  if (PalRet.Status != 0) {\r
-    return 1000000;\r
-  }\r
-\r
-  return BaseFrequence * (PalRet.r11 >> 32) / (UINT32)PalRet.r11;\r
-}\r
-\r
-/**\r
-  Converts elapsed ticks of performance counter to time in nanoseconds.\r
-\r
-  This function converts the elapsed ticks of running performance counter to\r
-  time value in unit of nanoseconds.\r
-\r
-  @param  Ticks     The number of elapsed ticks of running performance counter.\r
-\r
-  @return The elapsed time in nanoseconds.\r
-\r
-**/\r
-UINT64\r
-EFIAPI\r
-GetTimeInNanoSecond (\r
-  IN      UINT64                     Ticks\r
-  )\r
-{\r
-  UINT64  Frequency;\r
-  UINT64  NanoSeconds;\r
-  UINT64  Remainder;\r
-  INTN    Shift;\r
-\r
-  Frequency = GetPerformanceCounterProperties (NULL, NULL);\r
-\r
-  //\r
-  //          Ticks\r
-  // Time = --------- x 1,000,000,000\r
-  //        Frequency\r
-  //\r
-  NanoSeconds = MultU64x32 (DivU64x64Remainder (Ticks, Frequency, &Remainder), 1000000000u);\r
-\r
-  //\r
-  // Ensure (Remainder * 1,000,000,000) will not overflow 64-bit.\r
-  // Since 2^29 < 1,000,000,000 = 0x3B9ACA00 < 2^30, Remainder should < 2^(64-30) = 2^34,\r
-  // i.e. highest bit set in Remainder should <= 33.\r
-  //\r
-  Shift = MAX (0, HighBitSet64 (Remainder) - 33);\r
-  Remainder = RShiftU64 (Remainder, (UINTN) Shift);\r
-  Frequency = RShiftU64 (Frequency, (UINTN) Shift);\r
-  NanoSeconds += DivU64x64Remainder (MultU64x32 (Remainder, 1000000000u), Frequency, NULL);\r
-\r
-  return NanoSeconds;\r
-}\r