diff options
-rw-r--r-- | HisiPkg/D01BoardPkg/Bds/BootMenu.c | 40 | ||||
-rw-r--r-- | HisiPkg/D01BoardPkg/D01BoardPkg.fdf | 1 |
2 files changed, 41 insertions, 0 deletions
diff --git a/HisiPkg/D01BoardPkg/Bds/BootMenu.c b/HisiPkg/D01BoardPkg/Bds/BootMenu.c index 16d9f4cfc..e265c130f 100644 --- a/HisiPkg/D01BoardPkg/Bds/BootMenu.c +++ b/HisiPkg/D01BoardPkg/Bds/BootMenu.c @@ -711,6 +711,43 @@ BootEBL ( return Status;
}
+ +EFI_STATUS +BootShell ( + IN LIST_ENTRY *BootOptionsList + ) +{ + EFI_STATUS Status; + + // Start EFI Shell + Status = BdsLoadApplication (mImageHandle, L"Shell", 0, NULL); + if (Status == EFI_NOT_FOUND) { + Print (L"Error: EFI Application not found.\n"); + } else if (EFI_ERROR(Status)) { + Print (L"Error: Status Code: 0x%X\n",(UINT32)Status); + } + + return Status; +} + +EFI_STATUS +Reboot ( + IN LIST_ENTRY *BootOptionsList + ) +{ + gRT->ResetSystem(EfiResetCold, EFI_SUCCESS, 0, NULL); + return EFI_UNSUPPORTED; +} + +EFI_STATUS +Shutdown ( + IN LIST_ENTRY *BootOptionsList + ) +{ + gRT->ResetSystem(EfiResetShutdown, EFI_SUCCESS, 0, NULL); + return EFI_UNSUPPORTED; +} + EFI_STATUS BootLinuxAtagLoader ( IN LIST_ENTRY *BootOptionsList @@ -775,6 +812,9 @@ struct BOOT_MAIN_ENTRY { } BootMainEntries[] = {
{ L"Boot Manager", BootMenuManager },
{ L"EBL", BootEBL }, + { L"Shell", BootShell }, + { L"Reboot", Reboot }, + { L"Shutdown", Shutdown }, { L"GO", BootGo }, };
diff --git a/HisiPkg/D01BoardPkg/D01BoardPkg.fdf b/HisiPkg/D01BoardPkg/D01BoardPkg.fdf index 9939562a6..8f9861690 100644 --- a/HisiPkg/D01BoardPkg/D01BoardPkg.fdf +++ b/HisiPkg/D01BoardPkg/D01BoardPkg.fdf @@ -203,6 +203,7 @@ READ_LOCK_STATUS = TRUE # UEFI application (Shell Embedded Boot Loader) # INF HisiPkg/D01BoardPkg/Application/Ebl/Ebl.inf + INF ShellBinPkg/UefiShell/UefiShell.inf # # Bds |