Omap35xxPkg/InterruptDxe: Fix dependency chain with the Arch Cpu Dxe

The CPU Dxe should be loaded before the Interrupt Dxe.




git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11969 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
oliviermartin 2011-07-04 10:09:04 +00:00
parent 1c1e70fa6e
commit d326412cce
2 changed files with 17 additions and 38 deletions

View File

@ -31,8 +31,6 @@
// //
// Notifications // Notifications
// //
VOID *CpuProtocolNotificationToken = NULL;
EFI_EVENT CpuProtocolNotificationEvent = (EFI_EVENT)NULL;
EFI_EVENT EfiExitBootServicesEvent = (EFI_EVENT)NULL; EFI_EVENT EfiExitBootServicesEvent = (EFI_EVENT)NULL;
@ -298,37 +296,6 @@ EFI_HARDWARE_INTERRUPT_PROTOCOL gHardwareInterruptProtocol = {
EndOfInterrupt EndOfInterrupt
}; };
//
// Notification routines
//
VOID
CpuProtocolInstalledNotification (
IN EFI_EVENT Event,
IN VOID *Context
)
{
EFI_STATUS Status;
EFI_CPU_ARCH_PROTOCOL *Cpu;
//
// 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, EXCEPT_ARM_IRQ, NULL);
ASSERT_EFI_ERROR(Status);
//
// Register to receive interrupts
//
Status = Cpu->RegisterInterruptHandler (Cpu, EXCEPT_ARM_IRQ, IrqInterruptHandler);
ASSERT_EFI_ERROR(Status);
}
/** /**
Initialize the state information for the CPU Architectural Protocol Initialize the state information for the CPU Architectural Protocol
@ -347,6 +314,7 @@ InterruptDxeInitialize (
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_CPU_ARCH_PROTOCOL *Cpu;
// Make sure the Interrupt Controller Protocol is not already installed in the system. // Make sure the Interrupt Controller Protocol is not already installed in the system.
ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gHardwareInterruptProtocolGuid); ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gHardwareInterruptProtocolGuid);
@ -362,11 +330,22 @@ InterruptDxeInitialize (
NULL); NULL);
ASSERT_EFI_ERROR(Status); ASSERT_EFI_ERROR(Status);
// Set up to be notified when the Cpu protocol is installed. //
Status = gBS->CreateEvent(EVT_NOTIFY_SIGNAL, TPL_CALLBACK, CpuProtocolInstalledNotification, NULL, &CpuProtocolNotificationEvent); // Get the CPU protocol that this driver requires.
//
Status = gBS->LocateProtocol(&gEfiCpuArchProtocolGuid, NULL, (VOID **)&Cpu);
ASSERT_EFI_ERROR(Status); ASSERT_EFI_ERROR(Status);
Status = gBS->RegisterProtocolNotify(&gEfiCpuArchProtocolGuid, CpuProtocolNotificationEvent, (VOID *)&CpuProtocolNotificationToken); //
// Unregister the default exception handler.
//
Status = Cpu->RegisterInterruptHandler(Cpu, EXCEPT_ARM_IRQ, NULL);
ASSERT_EFI_ERROR(Status);
//
// Register to receive interrupts
//
Status = Cpu->RegisterInterruptHandler(Cpu, EXCEPT_ARM_IRQ, IrqInterruptHandler);
ASSERT_EFI_ERROR(Status); ASSERT_EFI_ERROR(Status);
// Register for an ExitBootServicesEvent // Register for an ExitBootServicesEvent

View File

@ -53,5 +53,5 @@
[FixedPcd.common] [FixedPcd.common]
gEmbeddedTokenSpaceGuid.PcdInterruptBaseAddress gEmbeddedTokenSpaceGuid.PcdInterruptBaseAddress
[depex] [Depex]
TRUE gEfiCpuArchProtocolGuid