]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseTimerLibLocalApic/x86TimerLib.c
fix one bug on Timer Frequency return.
[mirror_edk2.git] / MdePkg / Library / BaseTimerLibLocalApic / x86TimerLib.c
index e3af546367e10a4b68e53d621c0d2e71723f04d6..235fe7be6d73950f95c03dce369510a2dbe7db90 100644 (file)
 **/\r
 \r
 //\r
-// The following 2 arrays are used in calculating the frequency of local APIC\r
+// The following array is used in calculating the frequency of local APIC\r
 // timer. Refer to IA-32 developers' manual for more details.\r
 //\r
-\r
-GLOBAL_REMOVE_IF_UNREFERENCED\r
-CONST UINT32                          mTimerLibLocalApicFrequencies[] = {\r
-  100000000,\r
-  133000000,\r
-  200000000,\r
-  166000000\r
-};\r
-\r
 GLOBAL_REMOVE_IF_UNREFERENCED\r
 CONST UINT8                           mTimerLibLocalApicDivisor[] = {\r
   0x02, 0x04, 0x08, 0x10,\r
@@ -73,7 +64,7 @@ InternalX86GetTimerFrequency (
   )\r
 {\r
   return\r
-    mTimerLibLocalApicFrequencies[AsmMsrBitFieldRead32 (44, 16, 18)] /\r
+    PcdGet32(PcdFSBClock) /\r
     mTimerLibLocalApicDivisor[MmioBitFieldRead32 (ApicBase + 0x3e0, 0, 3)];\r
 }\r
 \r
@@ -115,8 +106,6 @@ InternalX86Delay (
 {\r
   INT32                             Ticks;\r
 \r
-  ApicBase = InternalX86GetApicBase ();\r
-\r
   //\r
   // The target timer count is calculated here\r
   //\r
@@ -212,7 +201,7 @@ GetPerformanceCounter (
   VOID\r
   )\r
 {\r
-  return InternalX86GetTimerTick (InternalX86GetApicBase ());\r
+  return (UINT64)(UINT32)InternalX86GetTimerTick (InternalX86GetApicBase ());\r
 }\r
 \r
 /**\r
@@ -241,8 +230,8 @@ GetPerformanceCounter (
 UINT64\r
 EFIAPI\r
 GetPerformanceCounterProperties (\r
-  IN      UINT64                    *StartValue,\r
-  IN      UINT64                    *EndValue\r
+  OUT      UINT64                    *StartValue,  OPTIONAL\r
+  OUT      UINT64                    *EndValue     OPTIONAL\r
   )\r
 {\r
   UINTN                             ApicBase;\r
@@ -257,5 +246,5 @@ GetPerformanceCounterProperties (
     *EndValue = 0;\r
   }\r
 \r
-  return InternalX86GetTimerFrequency (ApicBase);\r
+  return (UINT64) InternalX86GetTimerFrequency (ApicBase);;\r
 }\r