summaryrefslogtreecommitdiffstats
path: root/ArmPkg/Library/ArmGenericTimerVirtCounterLib
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2017-01-20 11:58:37 +0000
committerArd Biesheuvel <ard.biesheuvel@linaro.org>2017-01-20 15:51:34 +0000
commit734bd6cc41097bde7cc7d54084a042ff9b0ca0f5 (patch)
tree36e10d04e9812bb3069aadf5f3a7aa1b30385536 /ArmPkg/Library/ArmGenericTimerVirtCounterLib
parent90d1f671cdad43fa80ba295b3f8d1133d68229df (diff)
downloadedk2-734bd6cc41097bde7cc7d54084a042ff9b0ca0f5.tar.gz
edk2-734bd6cc41097bde7cc7d54084a042ff9b0ca0f5.tar.bz2
edk2-734bd6cc41097bde7cc7d54084a042ff9b0ca0f5.zip
ArmPkg/ArmLib: remove indirection layer from timer register accessors
The generic timer support libraries call the actual system register accessor function via a single pair of functions ArmArchTimerReadReg() and ArmArchTimerWriteReg(), which take an enum argument to identify the register, and return output values by pointer reference. Since these functions are never called with a non-immediate argument, we can simply replace each invocation with the underlying system register accessor instead. This is mostly functionally equivalent, with the exception of the bounds check for the enum (which is pointless given the fact that we never pass a variable), the check for the presence of the architected timer (which only makes sense for ARMv7, but is highly unlikely to vary between platforms that are similar enough to run the same firmware image), and a check for enum values that refer to the HYP view of the timer, which we never referred to anywhere in the code in the first place. So get rid of the middle man, and update the ArmGenericTimerPhyCounterLib and ArmGenericTimerVirtCounterLib implementations to call the system register accessors directly. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> Tested-by: Ryan Harkin <ryan.harkin@linaro.org>
Diffstat (limited to 'ArmPkg/Library/ArmGenericTimerVirtCounterLib')
-rw-r--r--ArmPkg/Library/ArmGenericTimerVirtCounterLib/ArmGenericTimerVirtCounterLib.c42
1 files changed, 14 insertions, 28 deletions
diff --git a/ArmPkg/Library/ArmGenericTimerVirtCounterLib/ArmGenericTimerVirtCounterLib.c b/ArmPkg/Library/ArmGenericTimerVirtCounterLib/ArmGenericTimerVirtCounterLib.c
index f99c8525b9..69a4ceb62d 100644
--- a/ArmPkg/Library/ArmGenericTimerVirtCounterLib/ArmGenericTimerVirtCounterLib.c
+++ b/ArmPkg/Library/ArmGenericTimerVirtCounterLib/ArmGenericTimerVirtCounterLib.c
@@ -14,7 +14,7 @@
**/
#include <Library/ArmGenericTimerCounterLib.h>
-#include <Library/ArmArchTimer.h>
+#include <Library/ArmLib.h>
VOID
EFIAPI
@@ -24,7 +24,7 @@ ArmGenericTimerEnableTimer (
{
UINTN TimerCtrlReg;
- ArmArchTimerReadReg (CntvCtl, (VOID *)&TimerCtrlReg);
+ TimerCtrlReg = ArmReadCntvCtl ();
TimerCtrlReg |= ARM_ARCH_TIMER_ENABLE;
//
@@ -36,7 +36,7 @@ ArmGenericTimerEnableTimer (
// leaving this in once KVM gets fixed.
//
TimerCtrlReg &= ~ARM_ARCH_TIMER_IMASK;
- ArmArchTimerWriteReg (CntvCtl, (VOID *)&TimerCtrlReg);
+ ArmWriteCntvCtl (TimerCtrlReg);
}
VOID
@@ -47,9 +47,9 @@ ArmGenericTimerDisableTimer (
{
UINTN TimerCtrlReg;
- ArmArchTimerReadReg (CntvCtl, (VOID *)&TimerCtrlReg);
+ TimerCtrlReg = ArmReadCntvCtl ();
TimerCtrlReg &= ~ARM_ARCH_TIMER_ENABLE;
- ArmArchTimerWriteReg (CntvCtl, (VOID *)&TimerCtrlReg);
+ ArmWriteCntvCtl (TimerCtrlReg);
}
VOID
@@ -58,7 +58,7 @@ ArmGenericTimerSetTimerFreq (
IN UINTN FreqInHz
)
{
- ArmArchTimerWriteReg (CntFrq, (VOID *)&FreqInHz);
+ ArmWriteCntFrq (FreqInHz);
}
UINTN
@@ -67,9 +67,7 @@ ArmGenericTimerGetTimerFreq (
VOID
)
{
- UINTN ArchTimerFreq = 0;
- ArmArchTimerReadReg (CntFrq, (VOID *)&ArchTimerFreq);
- return ArchTimerFreq;
+ return ArmReadCntFrq ();
}
UINTN
@@ -78,10 +76,7 @@ ArmGenericTimerGetTimerVal (
VOID
)
{
- UINTN ArchTimerValue;
- ArmArchTimerReadReg (CntvTval, (VOID *)&ArchTimerValue);
-
- return ArchTimerValue;
+ return ArmReadCntvTval ();
}
@@ -91,7 +86,7 @@ ArmGenericTimerSetTimerVal (
IN UINTN Value
)
{
- ArmArchTimerWriteReg (CntvTval, (VOID *)&Value);
+ ArmWriteCntvTval (Value);
}
UINT64
@@ -100,10 +95,7 @@ ArmGenericTimerGetSystemCount (
VOID
)
{
- UINT64 SystemCount;
- ArmArchTimerReadReg (CntvCt, (VOID *)&SystemCount);
-
- return SystemCount;
+ return ArmReadCntvCt ();
}
UINTN
@@ -112,10 +104,7 @@ ArmGenericTimerGetTimerCtrlReg (
VOID
)
{
- UINTN Value;
- ArmArchTimerReadReg (CntvCtl, (VOID *)&Value);
-
- return Value;
+ return ArmReadCntvCtl ();
}
VOID
@@ -124,7 +113,7 @@ ArmGenericTimerSetTimerCtrlReg (
UINTN Value
)
{
- ArmArchTimerWriteReg (CntvCtl, (VOID *)&Value);
+ ArmWriteCntvCtl (Value);
}
UINT64
@@ -133,10 +122,7 @@ ArmGenericTimerGetCompareVal (
VOID
)
{
- UINT64 Value;
- ArmArchTimerReadReg (CntvCval, (VOID *)&Value);
-
- return Value;
+ return ArmReadCntvCval ();
}
VOID
@@ -145,5 +131,5 @@ ArmGenericTimerSetCompareVal (
IN UINT64 Value
)
{
- ArmArchTimerWriteReg (CntvCval, (VOID *)&Value);
+ ArmWriteCntvCval (Value);
}