]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Pei/BootMode/BootMode.c
Add PeiCore module for enabling NT32Pkg, please attention this PeiCore does follows...
[mirror_edk2.git] / MdeModulePkg / Core / Pei / BootMode / BootMode.c
diff --git a/MdeModulePkg/Core/Pei/BootMode/BootMode.c b/MdeModulePkg/Core/Pei/BootMode/BootMode.c
new file mode 100644 (file)
index 0000000..0576ab0
--- /dev/null
@@ -0,0 +1,111 @@
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation                                                         \r
+All rights reserved. This program and the accompanying materials                          \r
+are licensed and made available under the terms and conditions of the BSD License         \r
+which accompanies this distribution.  The full text of the license may be found at        \r
+http://opensource.org/licenses/bsd-license.php                                            \r
+                                                                                          \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+Module Name:\r
+\r
+  BootMode.c\r
+\r
+Abstract:\r
+\r
+  EFI PEI Core Boot Mode services\r
+\r
+\r
+\r
+Revision History\r
+\r
+--*/\r
+\r
+//\r
+// Include common header file for this module.\r
+//\r
+#include "CommonHeader.h"\r
+\r
+#include <PeiMain.h>\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+PeiGetBootMode (\r
+  IN EFI_PEI_SERVICES  **PeiServices,\r
+  OUT EFI_BOOT_MODE *BootMode\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  This service enables PEIMs to ascertain the present value of the boot mode.  \r
+\r
+Arguments:\r
+\r
+  PeiServices    - The PEI core services table.\r
+  BootMode       - A pointer to contain the value of the boot mode. \r
+\r
+Returns:\r
+\r
+  EFI_SUCCESS           - The boot mode was returned successfully.\r
+  EFI_INVALID_PARAMETER - BootMode is NULL.\r
+\r
+--*/\r
+{\r
+  PEI_CORE_INSTANCE                    *PrivateData;    \r
+  EFI_HOB_HANDOFF_INFO_TABLE    *HandOffHob;\r
+\r
+\r
+  if (BootMode == NULL) {\r
+    return EFI_INVALID_PARAMETER;\r
+  }\r
+\r
+  PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS(PeiServices);\r
+  \r
+  HandOffHob  = (PrivateData->HobList.HandoffInformationTable);\r
+  \r
+  *BootMode   = HandOffHob->BootMode;\r
+  \r
+\r
+  return EFI_SUCCESS;   \r
+}\r
+\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+PeiSetBootMode (\r
+  IN EFI_PEI_SERVICES  **PeiServices,\r
+  IN EFI_BOOT_MODE     BootMode\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  This service enables PEIMs to update the boot mode variable.    \r
+\r
+Arguments:\r
+\r
+  PeiServices    - The PEI core services table.\r
+  BootMode       - The value of the boot mode to set.\r
+\r
+Returns:\r
+\r
+  EFI_SUCCESS    - The value was successfully updated\r
+\r
+--*/\r
+{\r
+  PEI_CORE_INSTANCE                    *PrivateData;    \r
+  EFI_HOB_HANDOFF_INFO_TABLE    *HandOffHob;\r
+\r
+\r
+  PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS(PeiServices);\r
+  \r
+  HandOffHob  = (PrivateData->HobList.HandoffInformationTable);\r
+  \r
+  HandOffHob->BootMode = BootMode;\r
+\r
+\r
+  return EFI_SUCCESS;   \r
+}\r