diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk/FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk.c b/EdkCompatibilityPkg/Compatibility/FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk/FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk.c new file mode 100644 index 0000000000..ba4e99ddbb --- /dev/null +++ b/EdkCompatibilityPkg/Compatibility/FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk/FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk.c @@ -0,0 +1,72 @@ +/** @file + Framework SMM Status Code Protocol on PI SMM Status Code Protocol Thunk. + + This thunk driver locates PI SMM Status Code Protocol in the SMM protocol database and + installs it in the UEFI protocol database. + + Note that Framework SMM Status Code Protocol and PI SMM Status Code Protocol have identical protocol + GUID and interface structure, but they are in different handle databases. + + Copyright (c) 2010, 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 that 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. + +**/ + +#include + +#include + +#include +#include +#include + +/** + Entry point of this thunk driver. + + @param ImageHandle The firmware allocated handle for the EFI image. + @param SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + +**/ +EFI_STATUS +EFIAPI +SmmStatusCodeThunkMain ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + EFI_HANDLE Handle; + EFI_SMM_STATUS_CODE_PROTOCOL *SmmStatusCode; + + // + // Locate the PI SMM Status Code Protocol in the SMM protocol database. + // + Status = gSmst->SmmLocateProtocol ( + &gEfiSmmStatusCodeProtocolGuid, + NULL, + (VOID **)&SmmStatusCode + ); + ASSERT_EFI_ERROR (Status); + + // + // Install the PI SMM Status Code Protocol into the UEFI protocol database. + // + Handle = NULL; + Status = SystemTable->BootServices->InstallProtocolInterface ( + &Handle, + &gEfiSmmStatusCodeProtocolGuid, + EFI_NATIVE_INTERFACE, + SmmStatusCode + ); + ASSERT_EFI_ERROR (Status); + + return EFI_SUCCESS; +} diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk/FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk.inf b/EdkCompatibilityPkg/Compatibility/FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk/FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk.inf new file mode 100644 index 0000000000..ca172faef8 --- /dev/null +++ b/EdkCompatibilityPkg/Compatibility/FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk/FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk.inf @@ -0,0 +1,47 @@ +## @file +# Framework SMM Status Code Protocol on PI SMM Status Code Protocol Thunk driver. +# +# Copyright (c) 2010, 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 = FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk + FILE_GUID = 88B49226-A63F-4505-9D3C-B5A67B846133 + MODULE_TYPE = DXE_SMM_DRIVER + PI_SPECIFICATION_VERSION = 0x0001000A + ENTRY_POINT = SmmStatusCodeThunkMain + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk.c + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + UefiDriverEntryPoint + SmmServicesTableLib + DebugLib + BaseLib + +[Protocols] + gEfiSmmStatusCodeProtocolGuid ## PRODUCES/CONSUMES + +[Depex] + gEfiSmmStatusCodeProtocolGuid + diff --git a/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc b/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc index 97dbd4d9a6..7c616b75b1 100644 --- a/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc +++ b/EdkCompatibilityPkg/EdkCompatibilityPkg.dsc @@ -284,6 +284,7 @@ define GCC_MACRO = -DEFI_SPECIFICATION_VERSION=0x00020000 -DPI_S EdkCompatibilityPkg/Compatibility/SmmAccess2OnSmmAccessThunk/SmmAccess2OnSmmAccessThunk.inf EdkCompatibilityPkg/Compatibility/SmmControl2OnSmmControlThunk/SmmControl2OnSmmControlThunk.inf EdkCompatibilityPkg/Compatibility/PiSmmStatusCodeOnFrameworkSmmStatusCodeThunk/PiSmmStatusCodeOnFrameworkSmmStatusCodeThunk.inf + EdkCompatibilityPkg/Compatibility/FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk/FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk.inf [Components.IPF] EdkCompatibilityPkg/Foundation/Cpu/Itanium/CpuIa64Lib/CpuIA64Lib.inf