mirror of https://github.com/acidanthera/audk.git
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:
parent
1c1e70fa6e
commit
d326412cce
|
@ -31,8 +31,6 @@
|
|||
//
|
||||
// Notifications
|
||||
//
|
||||
VOID *CpuProtocolNotificationToken = NULL;
|
||||
EFI_EVENT CpuProtocolNotificationEvent = (EFI_EVENT)NULL;
|
||||
EFI_EVENT EfiExitBootServicesEvent = (EFI_EVENT)NULL;
|
||||
|
||||
|
||||
|
@ -298,37 +296,6 @@ EFI_HARDWARE_INTERRUPT_PROTOCOL gHardwareInterruptProtocol = {
|
|||
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
|
||||
|
||||
|
@ -347,6 +314,7 @@ InterruptDxeInitialize (
|
|||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_CPU_ARCH_PROTOCOL *Cpu;
|
||||
|
||||
// Make sure the Interrupt Controller Protocol is not already installed in the system.
|
||||
ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gHardwareInterruptProtocolGuid);
|
||||
|
@ -362,11 +330,22 @@ InterruptDxeInitialize (
|
|||
NULL);
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
// Register for an ExitBootServicesEvent
|
||||
|
|
|
@ -53,5 +53,5 @@
|
|||
[FixedPcd.common]
|
||||
gEmbeddedTokenSpaceGuid.PcdInterruptBaseAddress
|
||||
|
||||
[depex]
|
||||
TRUE
|
||||
[Depex]
|
||||
gEfiCpuArchProtocolGuid
|
||||
|
|
Loading…
Reference in New Issue