From 804405e7d10525e41720216137b2551f62a0663f Mon Sep 17 00:00:00 2001 From: eric_tian Date: Mon, 30 Jun 2008 05:08:49 +0000 Subject: Port EdkUnixPkg to UnixPkg. The changes are listed as follows: 1. change *.msa to *.inf, and create platform configuration files .dec&.dsc&.fdf to comply with Edk2 build process 2. using PCD mechanism to replace macro. 3. change Sec code to cowork with PI1.0 Pei Core and produce temparory memory ppi. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5380 6f19259b-4bc3-4df7-8a09-765794883524 --- UnixPkg/BootModePei/BootModePei.c | 101 ++++++++++++++++++++++++++++++++++++ UnixPkg/BootModePei/BootModePei.inf | 57 ++++++++++++++++++++ UnixPkg/BootModePei/BootModePei.msa | 65 +++++++++++++++++++++++ 3 files changed, 223 insertions(+) create mode 100644 UnixPkg/BootModePei/BootModePei.c create mode 100644 UnixPkg/BootModePei/BootModePei.inf create mode 100644 UnixPkg/BootModePei/BootModePei.msa (limited to 'UnixPkg/BootModePei') diff --git a/UnixPkg/BootModePei/BootModePei.c b/UnixPkg/BootModePei/BootModePei.c new file mode 100644 index 0000000000..b7f3ad0598 --- /dev/null +++ b/UnixPkg/BootModePei/BootModePei.c @@ -0,0 +1,101 @@ +/**@file + +Copyright (c) 2006 - 2008, 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 Unix + +**/ + + + +// +// 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, "Unix 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/UnixPkg/BootModePei/BootModePei.inf b/UnixPkg/BootModePei/BootModePei.inf new file mode 100644 index 0000000000..d99150761f --- /dev/null +++ b/UnixPkg/BootModePei/BootModePei.inf @@ -0,0 +1,57 @@ +#/** @file +# Component description file for BootMode module +# +# This module provides platform specific function to detect boot mode. +# Copyright (c) 2006 - 2008, 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] + INF_VERSION = 0x00010005 + BASE_NAME = BootModePei + FILE_GUID = f3ff9aee-8985-11db-b133-0040d02b1835 + 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.common] + BootModePei.c + + +[Packages] + MdePkg/MdePkg.dec + + +[LibraryClasses] + PeiServicesTablePointerLib + PeiServicesLib + BaseLib + PeimEntryPoint + DebugLib + + +[Ppis] + gEfiPeiMasterBootModePpiGuid # PPI ALWAYS_PRODUCED + gEfiPeiBootInRecoveryModePpiGuid # PPI SOMETIMES_PRODUCED + + +[Depex] + TRUE + diff --git a/UnixPkg/BootModePei/BootModePei.msa b/UnixPkg/BootModePei/BootModePei.msa new file mode 100644 index 0000000000..5b2c8d843c --- /dev/null +++ b/UnixPkg/BootModePei/BootModePei.msa @@ -0,0 +1,65 @@ + + + + BootMode + PEIM + f3ff9aee-8985-11db-b133-0040d02b1835 + 1.0 + Component description file for BootMode module + This module provides platform specific function to detect boot mode. + 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. + FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052 + + + IA32 X64 IPF EBC + false + BootMode + + + + DebugLib + + + PeimEntryPoint + + + BaseLib + + + PeiServicesLib + + + PeiServicesTablePointerLib + + + + BootMode.c + BootMode.dxs + + + + + + + + + gEfiPeiBootInRecoveryModePpiGuid + + + gEfiPeiMasterBootModePpiGuid + + + + EFI_SPECIFICATION_VERSION 0x00020000 + EDK_RELEASE_VERSION 0x00020000 + + InitializeBootMode + + + -- cgit v1.2.3