From 89b6542cc4f09374c764cfb401d1c7921ff485e7 Mon Sep 17 00:00:00 2001 From: qwang12 Date: Tue, 26 Jun 2007 10:10:18 +0000 Subject: [PATCH 1/1] add in BootModePei git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2754 6f19259b-4bc3-4df7-8a09-765794883524 --- Nt32Pkg/BootModePei/BootMode.c | 101 +++++++++++++++++++++++++++++++ Nt32Pkg/BootModePei/BootMode.dxs | 31 ++++++++++ Nt32Pkg/BootModePei/BootMode.inf | 94 ++++++++++++++++++++++++++++ Nt32Pkg/BootModePei/BootMode.msa | 54 +++++++++++++++++ 4 files changed, 280 insertions(+) create mode 100644 Nt32Pkg/BootModePei/BootMode.c create mode 100644 Nt32Pkg/BootModePei/BootMode.dxs create mode 100644 Nt32Pkg/BootModePei/BootMode.inf create mode 100644 Nt32Pkg/BootModePei/BootMode.msa diff --git a/Nt32Pkg/BootModePei/BootMode.c b/Nt32Pkg/BootModePei/BootMode.c new file mode 100644 index 0000000000..3ac2044c8f --- /dev/null +++ b/Nt32Pkg/BootModePei/BootMode.c @@ -0,0 +1,101 @@ +/*++ + +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + BootMode.c + +Abstract: + + Tiano PEIM to provide the platform support functionality within Windows + +--*/ + + + +// +// The package level header files this module uses +// +#include +// +// The protocols, PPI and GUID defintions for this module +// +#include +#include +// +// The Library classes this module consumes +// +#include +#include + + +// +// Module globals +// +EFI_PEI_PPI_DESCRIPTOR mPpiListBootMode = { + (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), + &gEfiPeiMasterBootModePpiGuid, + NULL +}; + +EFI_PEI_PPI_DESCRIPTOR mPpiListRecoveryBootMode = { + (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), + &gEfiPeiBootInRecoveryModePpiGuid, + NULL +}; + +EFI_STATUS +EFIAPI +InitializeBootMode ( + IN EFI_FFS_FILE_HEADER *FfsHeader, + IN EFI_PEI_SERVICES **PeiServices + ) +/*++ + +Routine Description: + + Peform the boot mode determination logic + +Arguments: + + PeiServices - General purpose services available to every PEIM. + +Returns: + + Status - EFI_SUCCESS if the boot mode could be set + +--*/ +// TODO: FfsHeader - add argument and description to function comment +{ + EFI_STATUS Status; + UINTN BootMode; + + DEBUG ((EFI_D_ERROR, "NT32 Boot Mode PEIM Loaded\n")); + + // + // Let's assume things are OK if not told otherwise + // Should we read an environment variable in order to easily change this? + // + BootMode = BOOT_WITH_FULL_CONFIGURATION; + + Status = (**PeiServices).SetBootMode (PeiServices, (UINT8) BootMode); + ASSERT_EFI_ERROR (Status); + + Status = (**PeiServices).InstallPpi (PeiServices, &mPpiListBootMode); + ASSERT_EFI_ERROR (Status); + + if (BootMode == BOOT_IN_RECOVERY_MODE) { + Status = (**PeiServices).InstallPpi (PeiServices, &mPpiListRecoveryBootMode); + ASSERT_EFI_ERROR (Status); + } + + return Status; +} diff --git a/Nt32Pkg/BootModePei/BootMode.dxs b/Nt32Pkg/BootModePei/BootMode.dxs new file mode 100644 index 0000000000..cbc94c74bb --- /dev/null +++ b/Nt32Pkg/BootModePei/BootMode.dxs @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + BootMode.dxs + +Abstract: + + Dependency expression file for BootMode. + +--*/ + +// +// Include common header file for this module. +// +#include + +DEPENDENCY_START + TRUE +DEPENDENCY_END + + diff --git a/Nt32Pkg/BootModePei/BootMode.inf b/Nt32Pkg/BootModePei/BootMode.inf new file mode 100644 index 0000000000..6f3c7c0b24 --- /dev/null +++ b/Nt32Pkg/BootModePei/BootMode.inf @@ -0,0 +1,94 @@ +#/** @file +# Component description file for BootMode module +# +# This module provides platform specific function to detect boot mode. +# Copyright (c) 2006 - 2007, Intel Corporation +# +# All rights reserved. This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# +#**/ + +################################################################################ +# +# Defines Section - statements that will be processed to create a Makefile. +# +################################################################################ +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = BootMode + FILE_GUID = B7611005-1F26-45ba-A3DB-01F39DDB2785 + MODULE_TYPE = PEIM + VERSION_STRING = 1.0 + EDK_RELEASE_VERSION = 0x00020000 + EFI_SPECIFICATION_VERSION = 0x00020000 + + ENTRY_POINT = InitializeBootMode + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 IPF EBC +# + +################################################################################ +# +# Sources Section - list of files that are required for the build to succeed. +# +################################################################################ + +[Sources.common] + BootMode.dxs + BootMode.c + CommonHeader.h + + +################################################################################ +# +# Includes Section - list of Include locations that are required for +# this module. +# +################################################################################ + +[Includes] + $(WORKSPACE)/MdePkg/Include/Library + +################################################################################ +# +# Package Dependency Section - list of Package files that are required for +# this module. +# +################################################################################ + +[Packages] + MdePkg/MdePkg.dec + + +################################################################################ +# +# Library Class Section - list of Library Classes that are required for +# this module. +# +################################################################################ + +[LibraryClasses] + PeimEntryPoint + DebugLib + + +################################################################################ +# +# PPI C Name Section - list of PPI and PPI Notify C Names that this module +# uses or produces. +# +################################################################################ + +[Ppis] + gEfiPeiMasterBootModePpiGuid # PPI ALWAYS_PRODUCED + gEfiPeiBootInRecoveryModePpiGuid # PPI SOMETIMES_PRODUCED + diff --git a/Nt32Pkg/BootModePei/BootMode.msa b/Nt32Pkg/BootModePei/BootMode.msa new file mode 100644 index 0000000000..e8225a8a85 --- /dev/null +++ b/Nt32Pkg/BootModePei/BootMode.msa @@ -0,0 +1,54 @@ + + + + BootMode + PEIM + B7611005-1F26-45ba-A3DB-01F39DDB2785 + 1.0 + Component description file for BootMode module + This module provides platform specific function to detect boot mode. + Copyright (c) 2006 - 2007, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052 + + + IA32 X64 IPF EBC + false + BootMode + + + + DebugLib + + + PeimEntryPoint + + + + BootMode.c + BootMode.dxs + + + + + + + gEfiPeiBootInRecoveryModePpiGuid + + + gEfiPeiMasterBootModePpiGuid + + + + EFI_SPECIFICATION_VERSION 0x00020000 + EDK_RELEASE_VERSION 0x00020000 + + InitializeBootMode + + + \ No newline at end of file -- 2.39.2