X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=ArmPkg%2FLibrary%2FArmGenericTimerVirtCounterLib%2FArmGenericTimerVirtCounterLib.c;h=c941895a3574b0246a8718e3ee3ef02db664deda;hp=f99c8525b9009aa9631ba371b7d9156bce7b58e1;hb=411a373ed6426fb1bff253905b6a59ada44e18ad;hpb=bcf37cf6002ba538b63172a496b142ab322eff95 diff --git a/ArmPkg/Library/ArmGenericTimerVirtCounterLib/ArmGenericTimerVirtCounterLib.c b/ArmPkg/Library/ArmGenericTimerVirtCounterLib/ArmGenericTimerVirtCounterLib.c index f99c8525b9..c941895a35 100644 --- a/ArmPkg/Library/ArmGenericTimerVirtCounterLib/ArmGenericTimerVirtCounterLib.c +++ b/ArmPkg/Library/ArmGenericTimerVirtCounterLib/ArmGenericTimerVirtCounterLib.c @@ -14,7 +14,7 @@ **/ #include -#include +#include VOID EFIAPI @@ -24,19 +24,9 @@ ArmGenericTimerEnableTimer ( { UINTN TimerCtrlReg; - ArmArchTimerReadReg (CntvCtl, (VOID *)&TimerCtrlReg); + TimerCtrlReg = ArmReadCntvCtl (); TimerCtrlReg |= ARM_ARCH_TIMER_ENABLE; - - // - // When running under KVM, we need to unmask the interrupt on the timer side - // as KVM will mask it when servicing the interrupt at the hypervisor level - // and delivering the virtual timer interrupt to the guest. Otherwise, the - // interrupt will fire again, trapping into the hypervisor again, etc. etc. - // This is scheduled to be fixed on the KVM side, but there is no harm in - // leaving this in once KVM gets fixed. - // - TimerCtrlReg &= ~ARM_ARCH_TIMER_IMASK; - ArmArchTimerWriteReg (CntvCtl, (VOID *)&TimerCtrlReg); + ArmWriteCntvCtl (TimerCtrlReg); } VOID @@ -47,9 +37,9 @@ ArmGenericTimerDisableTimer ( { UINTN TimerCtrlReg; - ArmArchTimerReadReg (CntvCtl, (VOID *)&TimerCtrlReg); + TimerCtrlReg = ArmReadCntvCtl (); TimerCtrlReg &= ~ARM_ARCH_TIMER_ENABLE; - ArmArchTimerWriteReg (CntvCtl, (VOID *)&TimerCtrlReg); + ArmWriteCntvCtl (TimerCtrlReg); } VOID @@ -58,7 +48,7 @@ ArmGenericTimerSetTimerFreq ( IN UINTN FreqInHz ) { - ArmArchTimerWriteReg (CntFrq, (VOID *)&FreqInHz); + ArmWriteCntFrq (FreqInHz); } UINTN @@ -67,9 +57,7 @@ ArmGenericTimerGetTimerFreq ( VOID ) { - UINTN ArchTimerFreq = 0; - ArmArchTimerReadReg (CntFrq, (VOID *)&ArchTimerFreq); - return ArchTimerFreq; + return ArmReadCntFrq (); } UINTN @@ -78,10 +66,7 @@ ArmGenericTimerGetTimerVal ( VOID ) { - UINTN ArchTimerValue; - ArmArchTimerReadReg (CntvTval, (VOID *)&ArchTimerValue); - - return ArchTimerValue; + return ArmReadCntvTval (); } @@ -91,7 +76,7 @@ ArmGenericTimerSetTimerVal ( IN UINTN Value ) { - ArmArchTimerWriteReg (CntvTval, (VOID *)&Value); + ArmWriteCntvTval (Value); } UINT64 @@ -100,10 +85,7 @@ ArmGenericTimerGetSystemCount ( VOID ) { - UINT64 SystemCount; - ArmArchTimerReadReg (CntvCt, (VOID *)&SystemCount); - - return SystemCount; + return ArmReadCntvCt (); } UINTN @@ -112,10 +94,7 @@ ArmGenericTimerGetTimerCtrlReg ( VOID ) { - UINTN Value; - ArmArchTimerReadReg (CntvCtl, (VOID *)&Value); - - return Value; + return ArmReadCntvCtl (); } VOID @@ -124,7 +103,7 @@ ArmGenericTimerSetTimerCtrlReg ( UINTN Value ) { - ArmArchTimerWriteReg (CntvCtl, (VOID *)&Value); + ArmWriteCntvCtl (Value); } UINT64 @@ -133,10 +112,7 @@ ArmGenericTimerGetCompareVal ( VOID ) { - UINT64 Value; - ArmArchTimerReadReg (CntvCval, (VOID *)&Value); - - return Value; + return ArmReadCntvCval (); } VOID @@ -145,5 +121,5 @@ ArmGenericTimerSetCompareVal ( IN UINT64 Value ) { - ArmArchTimerWriteReg (CntvCval, (VOID *)&Value); + ArmWriteCntvCval (Value); }