123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /*++ @file
- Reset Architectural Protocol as defined in UEFI/PI under Emulation
- Copyright (c) 2004 - 2009, Intel Corporation. All rights reserved.<BR>
- Portions copyright (c) 2010 - 2011, Apple Inc. All rights reserved.
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include <PiDxe.h>
- #include <Library/BaseLib.h>
- #include <Library/DebugLib.h>
- #include <Library/UefiLib.h>
- #include <Library/UefiDriverEntryPoint.h>
- #include <Library/MemoryAllocationLib.h>
- #include <Library/UefiBootServicesTableLib.h>
- #include <Library/EmuThunkLib.h>
- #include <Protocol/Reset.h>
- VOID
- EFIAPI
- EmuResetSystem (
- IN EFI_RESET_TYPE ResetType,
- IN EFI_STATUS ResetStatus,
- IN UINTN DataSize,
- IN VOID *ResetData OPTIONAL
- )
- {
- EFI_STATUS Status;
- UINTN HandleCount;
- EFI_HANDLE *HandleBuffer;
- UINTN Index;
- //
- // Disconnect all
- //
- Status = gBS->LocateHandleBuffer (
- AllHandles,
- NULL,
- NULL,
- &HandleCount,
- &HandleBuffer
- );
- if (!EFI_ERROR (Status)) {
- for (Index = 0; Index < HandleCount; Index++) {
- Status = gBS->DisconnectController (HandleBuffer[Index], NULL, NULL);
- }
- gBS->FreePool (HandleBuffer);
- }
- //
- // Discard ResetType, always return 0 as exit code
- //
- gEmuThunk->Exit (0);
- //
- // Should never go here
- //
- ASSERT (FALSE);
- return;
- }
- EFI_STATUS
- EFIAPI
- InitializeEmuReset (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
- )
- /*++
- Routine Description:
- Arguments:
- ImageHandle of the loaded driver
- Pointer to the System Table
- Returns:
- Status
- **/
- {
- EFI_STATUS Status;
- EFI_HANDLE Handle;
- SystemTable->RuntimeServices->ResetSystem = EmuResetSystem;
- Handle = NULL;
- Status = gBS->InstallMultipleProtocolInterfaces (
- &Handle,
- &gEfiResetArchProtocolGuid,
- NULL,
- NULL
- );
- ASSERT_EFI_ERROR (Status);
- return Status;
- }
|