From 9c41921b39966d76f483fa4cce7aae55e7516e50 Mon Sep 17 00:00:00 2001 From: qwang12 Date: Thu, 19 Jul 2007 02:59:30 +0000 Subject: [PATCH] add in PeiServicesTablePointerLibMm7.inf git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3343 6f19259b-4bc3-4df7-8a09-765794883524 --- .../PeiServicesTablePointer.c | 68 +++++++++++++++++++ .../PeiServicesTablePointerLibMm7.inf | 47 +++++++++++++ .../PeiServicesTablePointerLibMm7.msa | 49 +++++++++++++ 3 files changed, 164 insertions(+) create mode 100644 MdePkg/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointer.c create mode 100644 MdePkg/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointerLibMm7.inf create mode 100644 MdePkg/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointerLibMm7.msa diff --git a/MdePkg/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointer.c b/MdePkg/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointer.c new file mode 100644 index 0000000000..e484337df8 --- /dev/null +++ b/MdePkg/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointer.c @@ -0,0 +1,68 @@ +/** @file + PEI Services Table Pointer Library. + + 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: PeiServicesTablePointer.c + +**/ + + +#include + + +#include +#include +#include + +/** + The function returns the pointer to PeiServices. + + The function returns the pointer to PeiServices. + It will ASSERT() if the pointer to PeiServices is NULL. + + @retval The pointer to PeiServices. + +**/ +EFI_PEI_SERVICES ** +EFIAPI +GetPeiServicesTablePointer ( + VOID + ) +{ + EFI_PEI_SERVICES **PeiServices; + + PeiServices = (EFI_PEI_SERVICES **)(UINTN)AsmReadMm7 (); + ASSERT (PeiServices != NULL); + return PeiServices; +} + +/** + The constructor function caches the pointer to PEI services. + + The constructor function caches the pointer to PEI services. + It will always return EFI_SUCCESS. + + @param FfsHeader Pointer to FFS header the loaded driver. + @param PeiServices Pointer to the PEI services. + + @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. + +**/ +EFI_STATUS +EFIAPI +PeiServicesTablePointerLibConstructor ( + IN EFI_FFS_FILE_HEADER *FfsHeader, + IN EFI_PEI_SERVICES **PeiServices + ) +{ + AsmWriteMm7 ((UINT64)(UINTN)PeiServices); + return EFI_SUCCESS; +} diff --git a/MdePkg/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointerLibMm7.inf b/MdePkg/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointerLibMm7.inf new file mode 100644 index 0000000000..7964e0c064 --- /dev/null +++ b/MdePkg/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointerLibMm7.inf @@ -0,0 +1,47 @@ +#/** @file +# Component description file for MM7 Pei Services Table Pointer Library +# +# PEI Services Table Library implementation that retrieves a pointer to the PEI +# Services Table from the MM7 on IA-32 and x64. +# 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. +# +# +#**/ + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = PeiServicesTablePointerLibMm7 + FILE_GUID = e6e9c1f8-2c8a-4f4b-a27c-c382e4bb8e67 + MODULE_TYPE = PEIM + VERSION_STRING = 1.0 + LIBRARY_CLASS = PeiServicesTablePointerLib|PEIM PEI_CORE + EDK_RELEASE_VERSION = 0x00020000 + EFI_SPECIFICATION_VERSION = 0x00020000 + + CONSTRUCTOR = PeiServicesTablePointerLibConstructor + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources.common] + PeiServicesTablePointer.c + + +[Packages] + MdePkg/MdePkg.dec + + +[LibraryClasses] + DebugLib + BaseLib + diff --git a/MdePkg/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointerLibMm7.msa b/MdePkg/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointerLibMm7.msa new file mode 100644 index 0000000000..2e6d8fbe15 --- /dev/null +++ b/MdePkg/Library/PeiServicesTablePointerLibMm7/PeiServicesTablePointerLibMm7.msa @@ -0,0 +1,49 @@ + + + + PeiServicesTablePointerLibMm7 + PEIM + e6e9c1f8-2c8a-4f4b-a27c-c382e4bb8e67 + 1.0 + Component description file for MM7 Pei Services Table Pointer Library + PEI Services Table Library implementation that retrieves a pointer to the PEI + Services Table from the MM7 on IA-32 and x64. + 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 + false + PeiServicesTablePointerLibMm7 + + + + PeiServicesTablePointerLib + + + BaseLib + + + DebugLib + + + + PeiServicesTablePointer.c + + + + + + EFI_SPECIFICATION_VERSION 0x00020000 + EDK_RELEASE_VERSION 0x00020000 + + PeiServicesTablePointerLibConstructor + + + \ No newline at end of file -- 2.39.2