**/\r
\r
#include <Library/ArmGenericTimerCounterLib.h>\r
-#include <Library/ArmArchTimer.h>\r
+#include <Library/ArmLib.h>\r
\r
VOID\r
EFIAPI\r
{\r
UINTN TimerCtrlReg;\r
\r
- ArmArchTimerReadReg (CntvCtl, (VOID *)&TimerCtrlReg);\r
+ TimerCtrlReg = ArmReadCntvCtl ();\r
TimerCtrlReg |= ARM_ARCH_TIMER_ENABLE;\r
-\r
- //\r
- // When running under KVM, we need to unmask the interrupt on the timer side\r
- // as KVM will mask it when servicing the interrupt at the hypervisor level\r
- // and delivering the virtual timer interrupt to the guest. Otherwise, the\r
- // interrupt will fire again, trapping into the hypervisor again, etc. etc.\r
- // This is scheduled to be fixed on the KVM side, but there is no harm in\r
- // leaving this in once KVM gets fixed.\r
- //\r
- TimerCtrlReg &= ~ARM_ARCH_TIMER_IMASK;\r
- ArmArchTimerWriteReg (CntvCtl, (VOID *)&TimerCtrlReg);\r
+ ArmWriteCntvCtl (TimerCtrlReg);\r
}\r
\r
VOID\r
{\r
UINTN TimerCtrlReg;\r
\r
- ArmArchTimerReadReg (CntvCtl, (VOID *)&TimerCtrlReg);\r
+ TimerCtrlReg = ArmReadCntvCtl ();\r
TimerCtrlReg &= ~ARM_ARCH_TIMER_ENABLE;\r
- ArmArchTimerWriteReg (CntvCtl, (VOID *)&TimerCtrlReg);\r
+ ArmWriteCntvCtl (TimerCtrlReg);\r
}\r
\r
VOID\r
IN UINTN FreqInHz\r
)\r
{\r
- ArmArchTimerWriteReg (CntFrq, (VOID *)&FreqInHz);\r
+ ArmWriteCntFrq (FreqInHz);\r
}\r
\r
UINTN\r
VOID\r
)\r
{\r
- UINTN ArchTimerFreq = 0;\r
- ArmArchTimerReadReg (CntFrq, (VOID *)&ArchTimerFreq);\r
- return ArchTimerFreq;\r
+ return ArmReadCntFrq ();\r
}\r
\r
UINTN\r
VOID\r
)\r
{\r
- UINTN ArchTimerValue;\r
- ArmArchTimerReadReg (CntvTval, (VOID *)&ArchTimerValue);\r
-\r
- return ArchTimerValue;\r
+ return ArmReadCntvTval ();\r
}\r
\r
\r
IN UINTN Value\r
)\r
{\r
- ArmArchTimerWriteReg (CntvTval, (VOID *)&Value);\r
+ ArmWriteCntvTval (Value);\r
}\r
\r
UINT64\r
VOID\r
)\r
{\r
- UINT64 SystemCount;\r
- ArmArchTimerReadReg (CntvCt, (VOID *)&SystemCount);\r
-\r
- return SystemCount;\r
+ return ArmReadCntvCt ();\r
}\r
\r
UINTN\r
VOID\r
)\r
{\r
- UINTN Value;\r
- ArmArchTimerReadReg (CntvCtl, (VOID *)&Value);\r
-\r
- return Value;\r
+ return ArmReadCntvCtl ();\r
}\r
\r
VOID\r
UINTN Value\r
)\r
{\r
- ArmArchTimerWriteReg (CntvCtl, (VOID *)&Value);\r
+ ArmWriteCntvCtl (Value);\r
}\r
\r
UINT64\r
VOID\r
)\r
{\r
- UINT64 Value;\r
- ArmArchTimerReadReg (CntvCval, (VOID *)&Value);\r
-\r
- return Value;\r
+ return ArmReadCntvCval ();\r
}\r
\r
VOID\r
IN UINT64 Value\r
)\r
{\r
- ArmArchTimerWriteReg (CntvCval, (VOID *)&Value);\r
+ ArmWriteCntvCval (Value);\r
}\r