summaryrefslogtreecommitdiff
path: root/BeagleBoardPkg/InterruptDxe/HardwareInterrupt.c
diff options
context:
space:
mode:
Diffstat (limited to 'BeagleBoardPkg/InterruptDxe/HardwareInterrupt.c')
-rw-r--r--BeagleBoardPkg/InterruptDxe/HardwareInterrupt.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/BeagleBoardPkg/InterruptDxe/HardwareInterrupt.c b/BeagleBoardPkg/InterruptDxe/HardwareInterrupt.c
index 3e69515dfe..c87d564063 100644
--- a/BeagleBoardPkg/InterruptDxe/HardwareInterrupt.c
+++ b/BeagleBoardPkg/InterruptDxe/HardwareInterrupt.c
@@ -234,12 +234,16 @@ IrqInterruptHandler (
Vector = MmioRead32(INTCPS_SIR_IRQ) & INTCPS_SIR_IRQ_MASK;
+ // Needed to prevent infinite nesting if Time Driver lowers TPL
+ MmioWrite32(INTCPS_CONTROL, INTCPS_CONTROL_NEWIRQAGR);
+
InterruptHandler = gRegisteredInterruptHandlers[Vector];
if (InterruptHandler != NULL) {
// Call the registered interrupt handler.
InterruptHandler(Vector, SystemContext);
}
+ // Needed to clear after running the handler
MmioWrite32(INTCPS_CONTROL, INTCPS_CONTROL_NEWIRQAGR);
}