/** Shutdown our hardware DXE Core will disable interrupts and turn off the timer and disable interrupts after all the event handlers have run. @param[in] Event The Event that is being processed @param[in] Context Event Context **/ VOID EFIAPI GicV2ExitBootServicesEvent ( IN EFI_EVENT Event, IN VOID *Context ) { UINTN Index; UINT32 GicInterrupt; // Disable all the interrupts for (Index = 0; Index < mGicNumInterrupts; Index++) { GicV2DisableInterruptSource (&gHardwareInterruptV2Protocol, Index); } // Acknowledge all pending interrupts do { GicInterrupt = ArmGicV2AcknowledgeInterrupt (mGicInterruptInterfaceBase); if ((GicInterrupt & ARM_GIC_ICCIAR_ACKINTID) < mGicNumInterrupts) { GicV2EndOfInterrupt (&gHardwareInterruptV2Protocol, GicInterrupt); } } while (!ARM_GIC_IS_SPECIAL_INTERRUPTS (GicInterrupt)); // Disable Gic Interface ArmGicV2DisableInterruptInterface (mGicInterruptInterfaceBase); // Disable Gic Distributor ArmGicDisableDistributor (mGicDistributorBase); }
VOID EFIAPI ArmGicDisableInterruptInterface ( IN INTN GicInterruptInterfaceBase ) { return ArmGicV2DisableInterruptInterface (GicInterruptInterfaceBase); }