summaryrefslogtreecommitdiffstats
path: root/ArmPkg/Drivers/TimerDxe
diff options
context:
space:
mode:
Diffstat (limited to 'ArmPkg/Drivers/TimerDxe')
-rw-r--r--ArmPkg/Drivers/TimerDxe/TimerDxe.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/ArmPkg/Drivers/TimerDxe/TimerDxe.c b/ArmPkg/Drivers/TimerDxe/TimerDxe.c
index 2416c90f55..33d7c92222 100644
--- a/ArmPkg/Drivers/TimerDxe/TimerDxe.c
+++ b/ArmPkg/Drivers/TimerDxe/TimerDxe.c
@@ -306,12 +306,13 @@ TimerInterruptHandler (
//
OriginalTPL = gBS->RaiseTPL (TPL_HIGH_LEVEL);
+ // Signal end of interrupt early to help avoid losing subsequent ticks
+ // from long duration handlers
+ gInterrupt->EndOfInterrupt (gInterrupt, Source);
+
// Check if the timer interrupt is active
if ((ArmGenericTimerGetTimerCtrlReg () ) & ARM_ARCH_TIMER_ISTATUS) {
- // Signal end of interrupt early to help avoid losing subsequent ticks from long duration handlers
- gInterrupt->EndOfInterrupt (gInterrupt, Source);
-
if (mTimerNotifyFunction) {
mTimerNotifyFunction (mTimerPeriod * mElapsedPeriod);
}
@@ -339,9 +340,6 @@ TimerInterruptHandler (
ArmGenericTimerEnableTimer ();
}
- // Enable timer interrupts
- gInterrupt->EnableInterruptSource (gInterrupt, Source);
-
gBS->RestoreTPL (OriginalTPL);
}