4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This file declares the Boot Script Executer PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This PPI is published by a PEIM upon dispatch and provides an execution engine for the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Framework boot script. This PEIM should be platform neutral and have no specific knowledge of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync platform instructions or other information. The ability to interpret the boot script depends on the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync abundance of other PPIs that are available. For example, if the script requests an SMBus command
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync execution, the PEIM looks for a relevant PPI that is available to execute it, rather than executing it
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync by issuing the native IA-32 instruction.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials are licensed and made available under
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncthe terms and conditions of the BSD License that accompanies this distribution.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThe full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynchttp://opensource.org/licenses/bsd-license.php.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @par Revision Reference:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This PPI is defined in Framework of EFI BootScript spec.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Version 0.91.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef _PEI_BOOT_SCRIPT_EXECUTER_PPI_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _PEI_BOOT_SCRIPT_EXECUTER_PPI_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0xabd42895, 0x78cf, 0x4872, {0x84, 0x44, 0x1b, 0x5c, 0x18, 0x0b, 0xfb, 0xff } \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Executes the Framework boot script table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param PeiServices A pointer to the system PEI Services Table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This A pointer to the EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Address The physical memory address where the table is stored.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync It must be zero if the table to be executed is stored in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync a firmware volume file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FvFile The firmware volume file name that contains the table to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync be executed. It must be NULL if the table to be executed
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is stored in physical memory.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The boot script table was executed successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER Address is zero and FvFile is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND The file name specified in FvFile cannot be found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The format of the boot script table is invalid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Or, an unsupported opcode occurred in the table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Or there were opcode execution errors, such as an
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync insufficient dependency.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_PEI_BOOT_SCRIPT_EXECUTE)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PHYSICAL_ADDRESS Address,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_GUID *FvFile OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI produces the function which interprets and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// executes the Framework boot script table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Executes a boot script table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PEI_BOOT_SCRIPT_EXECUTE Execute;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiPeiBootScriptExecuterPpiGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif