#include <Library/PcdLib.h>\r
#include <Library/DebugLib.h>\r
\r
-#define APIC_SVR 0x0f0\r
-#define APIC_LVTERR 0x370\r
-#define APIC_TMICT 0x380\r
-#define APIC_TMCCT 0x390\r
-#define APIC_TDCR 0x3e0\r
+#define APIC_SVR 0x0f0\r
+#define APIC_LVTERR 0x370\r
+#define APIC_TMICT 0x380\r
+#define APIC_TMCCT 0x390\r
+#define APIC_TDCR 0x3e0\r
\r
//\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
GLOBAL_REMOVE_IF_UNREFERENCED\r
-CONST UINT8 mTimerLibLocalApicDivisor[] = {\r
+CONST UINT8 mTimerLibLocalApicDivisor[] = {\r
0x02, 0x04, 0x08, 0x10,\r
0x02, 0x04, 0x08, 0x10,\r
0x20, 0x40, 0x80, 0x01,\r
VOID\r
)\r
{\r
- UINTN MsrValue;\r
- UINTN ApicBase;\r
+ UINTN MsrValue;\r
+ UINTN ApicBase;\r
\r
- MsrValue = (UINTN) AsmReadMsr64 (27);\r
+ MsrValue = (UINTN)AsmReadMsr64 (27);\r
ApicBase = MsrValue & 0xffffff000ULL;\r
\r
//\r
UINT32\r
EFIAPI\r
InternalX86GetTimerFrequency (\r
- IN UINTN ApicBase\r
+ IN UINTN ApicBase\r
)\r
{\r
return\r
- PcdGet32(PcdFSBClock) /\r
+ PcdGet32 (PcdFSBClock) /\r
mTimerLibLocalApicDivisor[MmioBitFieldRead32 (ApicBase + APIC_TDCR, 0, 3)];\r
}\r
\r
INT32\r
EFIAPI\r
InternalX86GetTimerTick (\r
- IN UINTN ApicBase\r
+ IN UINTN ApicBase\r
)\r
{\r
return MmioRead32 (ApicBase + APIC_TMCCT);\r
**/\r
UINT32\r
InternalX86GetInitTimerCount (\r
- IN UINTN ApicBase\r
+ IN UINTN ApicBase\r
)\r
{\r
return MmioRead32 (ApicBase + APIC_TMICT);\r
VOID\r
EFIAPI\r
InternalX86Delay (\r
- IN UINTN ApicBase,\r
- IN UINT32 Delay\r
+ IN UINTN ApicBase,\r
+ IN UINT32 Delay\r
)\r
{\r
- INT32 Ticks;\r
- UINT32 Times;\r
- UINT32 InitCount;\r
- UINT32 StartTick;\r
+ INT32 Ticks;\r
+ UINT32 Times;\r
+ UINT32 InitCount;\r
+ UINT32 StartTick;\r
\r
//\r
// In case Delay is too larger, separate it into several small delay slot.\r
//\r
InitCount = InternalX86GetInitTimerCount (ApicBase);\r
ASSERT (InitCount != 0);\r
- Times = Delay / (InitCount / 2);\r
- Delay = Delay % (InitCount / 2);\r
+ Times = Delay / (InitCount / 2);\r
+ Delay = Delay % (InitCount / 2);\r
\r
//\r
// Get Start Tick and do delay\r
//\r
- StartTick = InternalX86GetTimerTick (ApicBase);\r
+ StartTick = InternalX86GetTimerTick (ApicBase);\r
do {\r
//\r
// Wait until time out by Delay value\r
UINTN\r
EFIAPI\r
MicroSecondDelay (\r
- IN UINTN MicroSeconds\r
+ IN UINTN MicroSeconds\r
)\r
{\r
- UINTN ApicBase;\r
+ UINTN ApicBase;\r
\r
ApicBase = InternalX86GetApicBase ();\r
InternalX86Delay (\r
UINTN\r
EFIAPI\r
NanoSecondDelay (\r
- IN UINTN NanoSeconds\r
+ IN UINTN NanoSeconds\r
)\r
{\r
- UINTN ApicBase;\r
+ UINTN ApicBase;\r
\r
ApicBase = InternalX86GetApicBase ();\r
InternalX86Delay (\r
UINT64\r
EFIAPI\r
GetPerformanceCounterProperties (\r
- OUT UINT64 *StartValue OPTIONAL,\r
- OUT UINT64 *EndValue OPTIONAL\r
+ OUT UINT64 *StartValue OPTIONAL,\r
+ OUT UINT64 *EndValue OPTIONAL\r
)\r
{\r
- UINTN ApicBase;\r
+ UINTN ApicBase;\r
\r
ApicBase = InternalX86GetApicBase ();\r
\r
*EndValue = 0;\r
}\r
\r
- return (UINT64) InternalX86GetTimerFrequency (ApicBase);\r
+ return (UINT64)InternalX86GetTimerFrequency (ApicBase);\r
}\r
\r
/**\r
UINT64\r
EFIAPI\r
GetTimeInNanoSecond (\r
- IN UINT64 Ticks\r
+ IN UINT64 Ticks\r
)\r
{\r
UINT64 Frequency;\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
+ 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