From 69b5dc9f8e926b5341405b729e58426c2a121470 Mon Sep 17 00:00:00 2001 From: Olivier Martin Date: Fri, 4 Jul 2014 11:25:29 +0000 Subject: ArmPkg/ArmGic: Move the installation and the registration to InstallAndRegisterInterruptService() It will allow reusing the same code for GICv2 and GICv3 only drivers. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15623 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPkg/Drivers/ArmGic/ArmGicDxe.c | 56 +++------------------------------------ 1 file changed, 3 insertions(+), 53 deletions(-) (limited to 'ArmPkg/Drivers/ArmGic/ArmGicDxe.c') diff --git a/ArmPkg/Drivers/ArmGic/ArmGicDxe.c b/ArmPkg/Drivers/ArmGic/ArmGicDxe.c index c360d113be..ab912d79be 100644 --- a/ArmPkg/Drivers/ArmGic/ArmGicDxe.c +++ b/ArmPkg/Drivers/ArmGic/ArmGicDxe.c @@ -24,34 +24,19 @@ Abstract: #include -#include #include -#include #include -#include -#include #include #include #include #include -#include -#include +#include "ArmGicDxe.h" #define ARM_GIC_DEFAULT_PRIORITY 0x80 extern EFI_HARDWARE_INTERRUPT_PROTOCOL gHardwareInterruptProtocol; -// -// Notifications -// -EFI_EVENT EfiExitBootServicesEvent = (EFI_EVENT)NULL; - -// Maximum Number of Interrupts -UINTN mGicNumInterrupts = 0; - -HARDWARE_INTERRUPT_HANDLER *gRegisteredInterruptHandlers = NULL; - /** Register Handler for the specified interrupt source. @@ -244,11 +229,6 @@ IrqInterruptHandler ( EndOfInterrupt (&gHardwareInterruptProtocol, GicInterrupt); } -// -// Making this global saves a few bytes in image size -// -EFI_HANDLE gHardwareInterruptHandle = NULL; - // // The protocol instance produced by this driver // @@ -315,7 +295,6 @@ InterruptDxeInitialize ( UINTN Index; UINT32 RegOffset; UINTN RegShift; - EFI_CPU_ARCH_PROTOCOL *Cpu; UINT32 CpuTarget; // Make sure the Interrupt Controller Protocol is not already installed in the system. @@ -370,37 +349,8 @@ InterruptDxeInitialize ( // Enable gic distributor ArmGicEnableDistributor (PcdGet32(PcdGicDistributorBase)); - // Initialize the array for the Interrupt Handlers - gRegisteredInterruptHandlers = (HARDWARE_INTERRUPT_HANDLER*)AllocateZeroPool (sizeof(HARDWARE_INTERRUPT_HANDLER) * mGicNumInterrupts); - - Status = gBS->InstallMultipleProtocolInterfaces ( - &gHardwareInterruptHandle, - &gHardwareInterruptProtocolGuid, &gHardwareInterruptProtocol, - NULL - ); - ASSERT_EFI_ERROR (Status); - - // - // Get the CPU protocol that this driver requires. - // - Status = gBS->LocateProtocol(&gEfiCpuArchProtocolGuid, NULL, (VOID **)&Cpu); - ASSERT_EFI_ERROR(Status); - - // - // Unregister the default exception handler. - // - Status = Cpu->RegisterInterruptHandler(Cpu, ARM_ARCH_EXCEPTION_IRQ, NULL); - ASSERT_EFI_ERROR(Status); - - // - // Register to receive interrupts - // - Status = Cpu->RegisterInterruptHandler(Cpu, ARM_ARCH_EXCEPTION_IRQ, IrqInterruptHandler); - ASSERT_EFI_ERROR(Status); - - // Register for an ExitBootServicesEvent - Status = gBS->CreateEvent (EVT_SIGNAL_EXIT_BOOT_SERVICES, TPL_NOTIFY, ExitBootServicesEvent, NULL, &EfiExitBootServicesEvent); - ASSERT_EFI_ERROR (Status); + Status = InstallAndRegisterInterruptService ( + &gHardwareInterruptProtocol, IrqInterruptHandler, ExitBootServicesEvent); return Status; } -- cgit v1.2.3