diff options
Diffstat (limited to 'ArmPkg/Drivers/TimerDxe')
-rw-r--r-- | ArmPkg/Drivers/TimerDxe/TimerDxe.c | 10 |
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);
}
|