diff options
author | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
---|---|---|
committer | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
commit | b7c51c9cf4864df6aabb99a1ae843becd577237c (patch) | |
tree | eebe9b0d0ca03062955223097e57da84dd618b9a /Include/AmiDxeLib.h | |
download | zprj-b7c51c9cf4864df6aabb99a1ae843becd577237c.tar.xz |
Diffstat (limited to 'Include/AmiDxeLib.h')
-rw-r--r-- | Include/AmiDxeLib.h | 1018 |
1 files changed, 1018 insertions, 0 deletions
diff --git a/Include/AmiDxeLib.h b/Include/AmiDxeLib.h new file mode 100644 index 0000000..2982104 --- /dev/null +++ b/Include/AmiDxeLib.h @@ -0,0 +1,1018 @@ +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2010, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//********************************************************************** + +//********************************************************************** +// $Header: /Alaska/Projects/Intel/Haswell/LynxPoint_SharkBay-DT_Crb_1AQQW/Include/AmiDxeLib.h 2 10/25/12 8:50a Wesleychen $ +// +// $Revision: 2 $ +// +// $Date: 10/25/12 8:50a $ +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/Projects/Intel/Haswell/LynxPoint_SharkBay-DT_Crb_1AQQW/Include/AmiDxeLib.h $ +// +// 2 10/25/12 8:50a Wesleychen +// - Update Core to 4.6.5.4. +// - Reprogram 'SaveStateMemPoll' functon. +// +// 68 7/19/12 5:08p Felixp +// Declaration of the IsValidDevicePath is added. +// +// 67 4/30/12 3:59p Artems +// [TAG] EIP N/A +// [Category] Improvement +// [Description] Modified GraphicsConsole driver to output whole string +// instead of symbol-by-symbol output +// [Files] Gc.c, AmiDxeLib.h, EfiLib.c, UefiHiiUtils.c +// +// 66 11/08/11 5:22p Oleksiyy +// [TAG] EIP64296 +// [Category] New Feature +// [Description] Creation and filling of Firmware Performance Data Table +// is added. +// [Files] AcpiCore.c, AmiDxeLib.h, CSM.c, DxeMain.c, EfiLib.c, +// Image.c, S3Resume.c and FirmPerfDataTab.h +// +// 65 7/22/11 2:51p Oleksiyy +// [TAG] EIP64391 +// [Category] Improvement +// [Description] Some BOOT_SCRIPT_S3_xxx macros was updated with correct +// parameters. +// [Files] AmiDxeLib.h +// +// 64 7/22/11 10:03a Oleksiyy +// [TAG] EIP64391 +// [Category] Improvement +// [Description] Some BOOT_SCRIPT_S3_xxx macros was updated with correct +// parameters. +// [Files] AmiDxeLib.h +// +// 63 6/24/11 1:44p Felixp +// PI definitions of the BOOT_SCRIPT_S3_ macros are updated to detect +// which protocol to use (S3SaveState or BootScriptSave). +// +// 62 6/23/11 8:36p Artems +// Backward compatibility bug fix - temporary disable new boot script till +// modules are ready +// +// 61 6/16/11 3:42p Felixp +// +// 60 6/16/11 2:57p Felixp +// Surround backward compatibility definitions with #if +// BACKWARD_COMPATIBLE_MODE +// +// 59 6/16/11 9:24a Felixp +// Enhancements: +// 1. SMM-related functions and global variables are split into Framework +// and PI instances. Proper instance is selected based on supported +// version of the PI specification and module type. +// 2. BOOT_SCRIPT_S3_... macros moved to AmiDxeLib.h from BootScripSave.h. +// (both Framework and PI modes are supported). +// +// 58 2/05/11 2:02p Artems +// Added helper function to initialize global pointers in SMM +// +// 57 11/17/10 4:30p Felixp +// Declarations of EfiAtRuntime and EfiGoneVirtual functions are added. +// +// 56 10/01/10 2:57p Felixp +// declaration of LibInitStatusCodePtr is added. +// +// 55 2/23/10 10:13p Felixp +// HiiLibSetBrowserData function is added +// +// 54 10/14/09 10:41p Felixp +// +// 53 10/14/09 3:49p Felixp +// HII_LIBRARY_FUNCTIONS_SUPPORT macro added. +// +// 52 10/09/09 4:28p Felixp +// UEFI 2.1 related updates. +// +// 51 8/21/09 3:04p Felixp +// LanguageCodesEqual function is added. +// +// 50 5/21/09 4:28p Felixp +// New function InitAmiRuntimeLib is added. +// The function can be used by Runtime drivers to initialize library +// (the function calls InitAmiLib) and register callbacks +// on exit boot services and virtual address change events. +// +// 49 5/14/09 9:42a Felixp +// New functions: InitSmmHandlerEx and GetSmstConfigurationTable are +// added. +// +// 48 9/30/08 12:09a Felixp +// WriteBootToOsPerformanceData function added +// +// 47 6/06/08 10:47a Felixp +// +// 44 9/04/07 12:10p Felixp +// TheImageHandle global variable is added. The variable is initialized in +// the InitAmiLib routine with the current image handle. +// +// 43 8/30/07 11:03p Felixp +// GetBootMode routine is added. The routine can be used by DXE/EFI +// modules to get current boot mode. +// +// 42 4/20/07 5:08p Felixp +// Status Code macros redefined +// +// 41 4/19/07 12:31p Felixp +// New functions added: LibGetDxeSvcTbl and LibAllocateCspResource +// LibAllocateCspResource replaces AllocCspResource +// AllocCspResource preserved for backward compatibility. +// +// 39 4/17/07 10:56a Yakovlevs +// AllocCspResource function preserved for compatibility witn core 4.5.3 +// +// 36 4/13/07 6:51p Yakovlevs +// Added function prototype LibGetDxeSvcTbl() +// changed name of AllocateCspResource() to LibAllocateCspResource +// +// +// EFI_HANDLE ImgHandle,EFI_HANDLE CntrHandle); +// +// +// 35 3/08/07 3:01a Felixp +// Status code reporting macros PROGRESS_CODE and ERROR_CODE added +// +// 34 2/12/07 1:37p Felixp +// +// 33 2/12/07 1:19p Felixp +// DPGetEndNode declaration added +// +// 32 11/26/06 11:49p Yakovlevs +// Added Functions AmiIsaIrqMAsk() and AmiIsaDmaMask() to sinchronize IRQ +// allocation in SIO and CSM modules +// +// 31 11/26/06 11:00p Yakovlevs +// Added AMI_IRQ_DMA_MASK_VARIABLE_GUID +// +// 30 10/13/06 2:36p Felixp +// +// 29 10/12/06 6:43p Felixp +// DPNextInstance, DPCreateNode, DPIsMultiInstance functions added +// +// 28 10/12/06 9:37a Felixp +// CreateLegacyBootEvent & CreateReadyToBootEvent functions added +// +// 27 9/08/06 9:20a Felixp +// +// 26 8/24/06 9:10a Felixp +// x64 support +// +// 25 5/20/06 9:35p Felixp +// +// 24 3/13/06 1:15a Felixp +// +// 23 11/16/05 11:15a Yakovlevs +// DPCmp(), DPCut() functions added +// +// 22 11/11/05 2:47p Felixp +// GetControllerName added +// +// 21 11/11/05 11:47a Markw +// Renamed IntallSmmHandler to InitSmmHandler because of build errors +// because another driver used InstallSmmHandler. +// +// 20 11/08/05 5:59p Markw +// Created InstallSmiHandler library function. +// +// 19 11/07/05 3:15p Felixp +// CopyItemLst prototype added +// +// 18 6/29/05 10:41a Yakovlevs +// +// 17 6/28/05 6:45p Yakovlevs +// Added: Function AllocCspResources() and CSP_RES_ITEM Structure +// definition +// +// 16 6/03/05 3:45p Yakovlevs +// +// 15 4/06/05 9:33a Felixp +// Function LoadStrings added +// +// 14 4/04/05 2:58p Felixp +// LoadResources function added +// +// 13 3/25/05 11:34a Felixp +// RegisterProtocolCallback function added +// +// 12 3/21/05 11:46a Felixp +// Bit definitions moved from AmiDxeLib.h to AmiLib.h +// +// 11 3/17/05 1:28p Felixp +// ReadImageResource funciton added +// +// 10 3/04/05 10:21a Mandal +// +// 9 3/03/05 12:31p Felixp +// GetDefaultLang added +// +// 8 2/11/05 5:51p Felixp +// DPAddNode, DPAddInstance functions added +// +// 7 2/08/05 5:24p Felixp +// Parameter added to DPIsOneOf. +// +// 6 2/07/05 5:20p Felixp +// GetEfiVariable funciton added +// +// 5 2/07/05 4:22p Yakovlevs +// +// 4 2/03/05 8:00p Felixp +// DPLength and DPIsOneOf functions added +// +// 3 2/01/05 2:27a Felixp +// +// 2 2/01/05 2:00a Felixp +// I/O routine declarations moved from AmiDxeLib.h to AmiLib.h +// +// 1 1/28/05 12:44p Felixp +// +// 3 1/18/05 3:21p Felixp +// PrintDebugMessage renamed to Trace +// +// 2 1/17/05 3:46p Andriyn +// +// 1 12/23/04 9:41a Felixp +// +// 31 12/20/04 5:07p Felixp +// +// 30 12/17/04 6:45p Felixp +// DEBUG_MSG renamed to TRACE +// +// 29 12/17/04 6:40p Olegi +// +// 28 12/16/04 6:34a Felixp +// +// 27 11/19/04 1:33a Felixp +// GetImageName debug routine added (image name by image handle) +// +// 26 11/18/04 6:10p Felixp +// FindNextHobByType removed (moved to AmiLib.h) +// +// 25 11/17/04 3:31p Markw +// +// 24 11/16/04 5:03p Markw +// Added ASSERT. +// +// 23 11/10/04 5:15p Felixp +// Level parameter added to Trace fucntion +// +// 22 11/02/04 5:33p Felixp +// +// 21 10/22/04 7:35p Felixp +// +// 20 10/14/04 12:04p Felixp +// +// 19 9/22/04 8:39p Yakovlevs +// Added definition of GCD - TestRegion() Function to check if reg1 +// belongs to reg2 +// +// 18 8/28/04 1:49a Felixp +// NVRAM Routines fixes +// +// 17 8/10/04 1:03p Yakovlevs +// +// 16 8/06/04 12:17p Yakovlevs +// Defined BIT mask from BIT00 to BIT32 to help set it in chipset +// registers +// +// 15 7/13/04 10:42a Felixp +// +// 14 4/22/04 5:39p Markw +// Changed FvReadFile to FvReadPe32Image. +// +// 13 4/17/04 4:23p Felixp +// +// 12 4/14/04 11:01a Markw +// Added FvReadFile. +// +// 11 4/13/04 5:37p Felixp +// +// 10 4/13/04 5:36p Felixp +// +// 9 4/11/04 2:49p Felixp +// +// 8 4/10/04 4:38p Felixp +// +// 7 4/07/04 12:46a Felixp +// REAL PLATFORM DEBUGGING (lots of bug fixes) +// +// 6 4/05/04 1:10a Felixp +// +// 5 3/30/04 3:26p Felixp +// +// 4 3/30/04 9:32a Markw +// Added DEBUG_MSG macro. +// +// 3 3/28/04 2:11p Felixp +// 1. PE Loader and some other commonly used code moved to the Library +// 2. Warnings fixed (from now on warning will be treated as error) +// +// 2 3/24/04 1:29p Felixp +// +// 1 3/23/04 5:52p Felixp +// +//********************************************************************** +//<AMI_FHDR_START> +// +// Name: AmiDxeLib.h +// +// Description: +// +//<AMI_FHDR_END> +//********************************************************************** +#ifndef __AMI_DXE_LIB__H__ +#define __AMI_DXE_LIB__H__ +#ifdef __cplusplus +extern "C" { +#endif +#include <amilib.h> +#include <Dxe.h> +#include <Protocol/FirmwareVolume.h> +#include <Protocol/HiiUtilities.h> +#include <Protocol/SmmBase.h> +#include <Protocol/SmmBase2.h> +#include <Protocol/BootScriptSave.h> +#if PI_SPECIFICATION_VERSION >= 0x0001000A +#include <Protocol/S3SaveState.h> +#endif + +//****************************************************************************/ +// TYPE DECLARATIONS +//****************************************************************************/ +//********************************************************************** +//<AMI_THDR_START> +// +// Name: DBE_DATABASE_STRUCT +// +// Fields: +// ColNum Type Description +// 1 UINTN Initial elements Count of index array to be created +// 2 UINTN Current RecordCount stored in Database +// 3 UINTN Number of Indexes in Database +// 4 DBE_INDEX* Pointerto the indexes information of this Database; +// 5 VOID *IndexArray; +// +// Description: Initial structure to hold Database information +// +// Notes: +// +//<AMI_THDR_END> +//********************************************************************** + +typedef struct _DBE_KEY_FIELD DBE_KEY_FIELD; + +typedef INTN (EFIAPI *DBE_CMP)( + IN VOID *pContext, + IN VOID *pRecord1, + IN VOID *pRecord2 +); + +struct _DBE_KEY_FIELD { + DBE_CMP RRcmp; + DBE_CMP KRcmp; + VOID *pContext; +}; + +typedef struct _DBE_OFFSET_KEY_CONTEXT { + UINTN Offset; + UINTN Size; +}DBE_OFFSET_KEY_CONTEXT; + +typedef struct _DBE_DATABASE{ + EFI_MEMORY_TYPE MemoryType; + UINTN InitialCount; + UINTN RecordCount; + UINTN KeyCount; + DBE_KEY_FIELD *KeyField; + VOID *IndexArray; +}DBE_DATABASE; + +struct _DLINK; +typedef struct _DLINK DLINK; +struct _DLINK{ + DLINK *pNext, *pPrev; +}; + +typedef struct _DLIST{ + UINTN Size; + DLINK *pHead, *pTail; +} DLIST; + +//Structure to store pointers to data +//similar to VECTOR +typedef struct _T_ITEM_LIST { + UINTN InitialCount; + UINTN ItemCount; + VOID **Items; +}T_ITEM_LIST; + +//Structure to reserve CSP resources +typedef struct _CSP_RES_ITEM { + UINT64 ResBase; + UINTN ResLength; + UINTN ResType; + UINT64 Attributes; +} CSP_RES_ITEM; + +#pragma pack(push,1) +typedef struct{ + EFI_GUID SubtypeGuid; + UINT32 NumberOfPackages; +} HII_RESOURCE_SECTION_HEADER; +#pragma pack(pop) + +//****************************************************************************/ +// MACROS DECLARATIONS +//****************************************************************************/ +#define AMI_IRQ_DMA_MASK_VARIABLE_GUID \ + { 0xfc8be767, 0x89f1, 0x4d6e, 0x80, 0x99, 0x6f, 0x2, 0x1e, 0xbc, 0x87, 0xcc } + +// {395C33FE-287F-413e-A055-8088C0E1D43E} +#define EFI_SMM_RUNTIME_SERVICES_TABLE_GUID \ + { 0x395c33fe, 0x287f, 0x413e, { 0xa0, 0x55, 0x80, 0x88, 0xc0, 0xe1, 0xd4, 0x3e } } + +#define OFFSET_CONTEXT(Type, Field) { EFI_FIELD_OFFSET(Type,Field), EFI_FIELD_SIZE(Type,Field) } +#define OFFSET_KEY(Context) { &OffsetRRCmp, &OffsetKRCmp, &Context } +#define ADDRESS_KEY { &AddrRRCmp, &AddrKRCmp, NULL } + +#define new(Type) Malloc(sizeof(Type)) +#define delete(p) FreePool(p) +#define DListEmpty(pList) (!(pList)->pHead) + +#ifdef EFI_DEBUG +#define TRACE(Arguments) Trace Arguments + +#ifndef ASSERT +#define ASSERT(Condition) if(!(Condition)) { \ + Trace(-1,"ASSERT in %s on %i: %s\n",__FILE__, __LINE__, #Condition);\ + EFI_DEADLOOP() \ + } +#define ASSERT_EFI_ERROR(Status) ASSERT(!EFI_ERROR(Status)) +#endif + +#define VERIFY ASSERT +#define VERIFY_EFI_ERROR ASSERT_EFI_ERROR + +#else // EFI_DEBUG==0 +#define TRACE(Arguments) + +#ifndef ASSERT +#define ASSERT(Condition) +#define ASSERT_EFI_ERROR(Status) + +#endif + +#define VERIFY(x) (x) +#define VERIFY_EFI_ERROR(x) (x) +#endif + +#define PROGRESS_CODE(Code)\ + LibReportStatusCode(EFI_PROGRESS_CODE, Code, 0, NULL, NULL) + +#define ERROR_CODE(Code, Severity)\ + LibReportStatusCode(EFI_ERROR_CODE|(Severity), Code, 0, NULL, NULL) + +#define DEVICE_PROGRESS_CODE(Code,DeviceHandle)\ + LibReportStatusCode(EFI_PROGRESS_CODE, Code, 0, NULL, NULL) + +#define DEVICE_ERROR_CODE(Code, Severity, DeviceHandle)\ + LibReportStatusCode(EFI_ERROR_CODE|(Severity), Code, 0, NULL, NULL) + +//Performance Measurement Macros +#ifdef EFI_DXE_PERFORMANCE +#define PERF_START(handle, token, host, ticker) StartMeasure (handle, token, host, ticker) +#define PERF_END(handle, token, host, ticker) EndMeasure (handle, token, host, ticker) +#define PERF_CODE(code) code +#else +#define PERF_START(handle, token, host, ticker) +#define PERF_END(handle, token, host, ticker) +#define PERF_CODE(code) +#endif + +#if (EFI_SPECIFICATION_VERSION > 0x00020000) +#define LANGUAGE_RFC_4646 +#define LANGUAGE_CODE_ENGLISH "en-US" +#else +#define LANGUAGE_ISO_639_2 +#define LANGUAGE_CODE_ENGLISH "eng" +#endif + +#define HII_RESOURCES_FFS_SECTION_GUID\ + {0x97e409e6, 0x4cc1, 0x11d9, 0x81, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0} + +//the macro serves as an indicator that this version of library +//contains HII-related functions such as HiiLibGetString/HiiLibSetString +#define HII_LIBRARY_FUNCTIONS_SUPPORT + +#if (!defined(BACKWARD_COMPATIBLE_MODE) || defined(SMM_BUILD)) && PI_SPECIFICATION_VERSION >= 0x0001000A +#define pSmst pSmstPi +#define pSmmBase pSmmBasePi +#define GetSmstConfigurationTable GetSmstConfigurationTablePi +#define InitSmmHandler InitSmmHandlerPi +#define InitSmmHandlerEx InitSmmHandlerPi +#define InitAmiSmmLib InitAmiSmmLibPi +#else +#define pSmst pSmstFramework +#define pSmmBase pSmmBaseFramework +#define GetSmstConfigurationTable GetSmstConfigurationTableFramework +#define InitSmmHandler InitSmmHandlerFramework +#define InitSmmHandlerEx InitSmmHandlerExFramework +#define InitAmiSmmLib InitAmiSmmLibFramework +#endif + +//Boot Script macros +#if PI_SPECIFICATION_VERSION >= 0x0001000A +#if BACKWARD_COMPATIBLE_MODE +#define __PI_BOOT_SCRIPT_MACRO__(This, FrameworkCommand, PiCommand)\ + ( (This==_GetBootScriptSaveInterface()) ? (FrameworkCommand) : (PiCommand) ) +#else +#define __PI_BOOT_SCRIPT_MACRO__(This, FrameworkCommand, PiCommand) PiCommand +#endif + +// S3SaveStateProtocol +#define BOOT_SCRIPT_S3_IO_WRITE_MACRO(This, Width, Address, Count, Buffer) \ + __PI_BOOT_SCRIPT_MACRO__(This,\ + BOOT_SCRIPT_IO_WRITE_MACRO(This, EFI_ACPI_S3_RESUME_SCRIPT_TABLE, Width, Address, Count, Buffer),\ + ((EFI_S3_SAVE_STATE_PROTOCOL*)This)->Write((EFI_S3_SAVE_STATE_PROTOCOL*)This,EFI_BOOT_SCRIPT_IO_WRITE_OPCODE,Width,(UINT64)Address,(UINTN)Count,Buffer)\ + ) + +#define BOOT_SCRIPT_S3_IO_READ_WRITE_MACRO(This,Width,Address,Data,DataMask) \ + __PI_BOOT_SCRIPT_MACRO__(This,\ + BOOT_SCRIPT_IO_READ_WRITE_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Data,DataMask),\ + ((EFI_S3_SAVE_STATE_PROTOCOL*)This)->Write((EFI_S3_SAVE_STATE_PROTOCOL*)This,EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE,Width,(UINT64)Address,Data,DataMask)\ + ) + +#define BOOT_SCRIPT_S3_MEM_WRITE_MACRO(This,Width,Address,Count,Buffer) \ + __PI_BOOT_SCRIPT_MACRO__(This,\ + BOOT_SCRIPT_MEM_WRITE_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Count,Buffer),\ + ((EFI_S3_SAVE_STATE_PROTOCOL*)This)->Write((EFI_S3_SAVE_STATE_PROTOCOL*)This,EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE,Width,(UINT64)Address,(UINTN)Count,Buffer)\ + ) + +#define BOOT_SCRIPT_S3_MEM_READ_WRITE_MACRO(This,Width,Address,Data,DataMask) \ + __PI_BOOT_SCRIPT_MACRO__(This,\ + BOOT_SCRIPT_MEM_READ_WRITE_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Data,DataMask),\ + ((EFI_S3_SAVE_STATE_PROTOCOL*)This)->Write((EFI_S3_SAVE_STATE_PROTOCOL*)This,EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE,Width,(UINT64)Address,Data,DataMask)\ + ) + +#define BOOT_SCRIPT_S3_PCI_CONFIG_WRITE_MACRO(This,Width,Address,Count,Buffer) \ + __PI_BOOT_SCRIPT_MACRO__(This,\ + BOOT_SCRIPT_PCI_CONFIG_WRITE_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Count,Buffer),\ + ((EFI_S3_SAVE_STATE_PROTOCOL*)This)->Write((EFI_S3_SAVE_STATE_PROTOCOL*)This,EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE,Width,(UINT64)Address,(UINTN)Count,Buffer)\ + ) + +#define BOOT_SCRIPT_S3_PCI_CONFIG_READ_WRITE_MACRO(This,Width,Address,Data,DataMask) \ + __PI_BOOT_SCRIPT_MACRO__(This,\ + BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Data,DataMask),\ + ((EFI_S3_SAVE_STATE_PROTOCOL*)This)->Write((EFI_S3_SAVE_STATE_PROTOCOL*)This,EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE,Width,(UINT64)Address,Data,DataMask)\ + ) + +#define BOOT_SCRIPT_S3_SMBUS_EXECUTE_MACRO(This,SlaveAddress,Command,Operation,PecCheck,Length,Buffer) \ + __PI_BOOT_SCRIPT_MACRO__(This,\ + BOOT_SCRIPT_SMBUS_EXECUTE_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,SlaveAddress,Command,Operation,PecCheck,Length,Buffer),\ + ((EFI_S3_SAVE_STATE_PROTOCOL*)This)->Write((EFI_S3_SAVE_STATE_PROTOCOL*)This,EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE,SlaveAddress,Command,Operation,PecCheck,Length,Buffer)\ + ) + +#define BOOT_SCRIPT_S3_STALL_MACRO(This,Duration) \ + __PI_BOOT_SCRIPT_MACRO__(This,\ + BOOT_SCRIPT_STALL_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Duration),\ + ((EFI_S3_SAVE_STATE_PROTOCOL*)This)->Write((EFI_S3_SAVE_STATE_PROTOCOL*)This,EFI_BOOT_SCRIPT_STALL_OPCODE,Duration)\ + ) + +#define BOOT_SCRIPT_S3_DISPATCH_MACRO(This,EntryPoint) \ + __PI_BOOT_SCRIPT_MACRO__(This,\ + BOOT_SCRIPT_DISPATCH_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,EntryPoint),\ + ((EFI_S3_SAVE_STATE_PROTOCOL*)This)->Write((EFI_S3_SAVE_STATE_PROTOCOL*)This,EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE,(EFI_PHYSICAL_ADDRESS)EntryPoint,NULL)\ + ) + +#define BOOT_SCRIPT_S3_IO_POLL_MACRO(This,Width,Address,Mask,Data) \ + __PI_BOOT_SCRIPT_MACRO__(This,\ + BOOT_SCRIPT_IO_POLL_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Mask,Data),\ + ((EFI_S3_SAVE_STATE_PROTOCOL*)This)->Write((EFI_S3_SAVE_STATE_PROTOCOL*)This,EFI_BOOT_SCRIPT_IO_POLL_OPCODE,Width,(UINT64)Address,Data,Mask,(UINT64)-1)\ + ) + +#define BOOT_SCRIPT_S3_IO_POLL2_MACRO(This,Width,Address,Mask,Data,Delay) \ + This->Write(This,EFI_BOOT_SCRIPT_IO_POLL_OPCODE,Width,(UINT64)Address,Data,Mask,(UINT64)Delay) + +#if 0 +#define BOOT_SCRIPT_S3_MEM_POLL_MACRO(This,Width,Address,Mask,Data) \ + __PI_BOOT_SCRIPT_MACRO__(This,\ + BOOT_SCRIPT_MEM_POLL_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Mask,Data),\ + ((EFI_S3_SAVE_STATE_PROTOCOL*)This)->Write((EFI_S3_SAVE_STATE_PROTOCOL*)This,EFI_BOOT_SCRIPT_MEM_POLL_OPCODE,Width,(UINT64)Address,Data,Mask,(UINT64)-1)\ + ) + +#define BOOT_SCRIPT_S3_MEM_POLL2_MACRO(This,Width,Address,Mask,Data,Delay) \ + This->Write(This,EFI_BOOT_SCRIPT_MEM_POLL_OPCODE,Width,(UINT64)Address,Data,Mask,(UINT64)Delay) +#else +#define BOOT_SCRIPT_S3_MEM_POLL_MACRO(This,Width,Address,Mask,Data) \ + __PI_BOOT_SCRIPT_MACRO__(This,\ + BOOT_SCRIPT_MEM_POLL_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Mask,Data),\ + ((EFI_S3_SAVE_STATE_PROTOCOL*)This)->Write((EFI_S3_SAVE_STATE_PROTOCOL*)This,EFI_BOOT_SCRIPT_MEM_POLL_OPCODE,Width,(UINT64)Address,Mask,Data,(UINT64)-1)\ + ) + +#define BOOT_SCRIPT_S3_MEM_POLL2_MACRO(This,Width,Address,Mask,Data,Delay) \ + This->Write(This,EFI_BOOT_SCRIPT_MEM_POLL_OPCODE,Width,(UINT64)Address,Mask,Data,(UINT64)Delay) +#endif + +#define BOOT_SCRIPT_S3_PCI_POLL_MACRO(This,Width,Address,Mask,Data) \ + __PI_BOOT_SCRIPT_MACRO__(This,\ + BOOT_SCRIPT_PCI_POLL_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Mask,Data),\ + ((EFI_S3_SAVE_STATE_PROTOCOL*)This)->Write((EFI_S3_SAVE_STATE_PROTOCOL*)This,EFI_BOOT_SCRIPT_PCI_CONFIG_POLL_OPCODE,Width,(UINT64)Address,Data,Mask,(UINT64)-1)\ + ) + +#define BOOT_SCRIPT_S3_PCI_POLL2_MACRO(This,Width,Address,Mask,Data,Delay) \ + This->Write(This,EFI_BOOT_SCRIPT_PCI_CONFIG_POLL_OPCODE,Width,(UINT64)Address,Data,Mask,(UINT64)Delay) + +#define BOOT_SCRIPT_S3_DISPATCH_2_MACRO(This,EntryPoint,Context) \ + This->Write(This,EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE,(EFI_PHYSICAL_ADDRESS)EntryPoint,(EFI_PHYSICAL_ADDRESS)Context) + +#define BOOT_SCRIPT_S3_PCI_CONFIG2_WRITE_MACRO(This,Width,Segment,Address,Count,Buffer) \ + This->Write(This,EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE,Width,(UINT16)Segment,(UINT64)Address,(UINTN)Count,Buffer) + +#define BOOT_SCRIPT_S3_PCI_CONFIG2_READ_WRITE_MACRO(This,Width,Segment,Address,Data,DataMask) \ + This->Write(This,EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE,Width,(UINT16)Segment,(UINT64)Address,Data,DataMask) + +#define BOOT_SCRIPT_S3_PCI_CFG2_POLL_MACRO(This,Width,Segment,Address,Mask,Result,Delay) \ + This->Write(This,EFI_BOOT_SCRIPT_PCI_CONFIG2_POLL_OPCODE,Width,(UINT16)Segment,(UINT64)Address,Mask,Result,(UINT64)Delay) + +#else // #if PI_SPECIFICATION_VERSION >= 0x0001000A + +// BootScriptSave +//************************************************ +// S3 specific macros below. Generic macros below. +//************************************************ +#define BOOT_SCRIPT_S3_IO_WRITE_MACRO(This,Width,Address,Count,Buffer) \ + BOOT_SCRIPT_IO_WRITE_MACRO(This, EFI_ACPI_S3_RESUME_SCRIPT_TABLE, Width, Address, Count, Buffer) + +#define BOOT_SCRIPT_S3_IO_READ_WRITE_MACRO(This,Width,Address,Data,DataMask) \ + BOOT_SCRIPT_IO_READ_WRITE_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Data,DataMask) + +#define BOOT_SCRIPT_S3_MEM_WRITE_MACRO(This,Width,Address,Count,Buffer) \ + BOOT_SCRIPT_MEM_WRITE_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Count,Buffer) + +#define BOOT_SCRIPT_S3_MEM_READ_WRITE_MACRO(This,Width,Address,Data,DataMask) \ + BOOT_SCRIPT_MEM_READ_WRITE_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Data,DataMask) + +#define BOOT_SCRIPT_S3_PCI_CONFIG_WRITE_MACRO(This,Width,Address,Count,Buffer) \ + BOOT_SCRIPT_PCI_CONFIG_WRITE_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Count,Buffer) + +#define BOOT_SCRIPT_S3_PCI_CONFIG_READ_WRITE_MACRO(This,Width,Address,Data,DataMask) \ + BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Data,DataMask) + +#define BOOT_SCRIPT_S3_SMBUS_EXECUTE_MACRO(This,SlaveAddress,Command,Operation,PecCheck,Length,Buffer) \ + BOOT_SCRIPT_SMBUS_EXECUTE_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,SlaveAddress,Command,Operation,PecCheck,Length,Buffer) + +#define BOOT_SCRIPT_S3_STALL_MACRO(This,Duration) \ + BOOT_SCRIPT_STALL_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Duration) + +#define BOOT_SCRIPT_S3_DISPATCH_MACRO(This,EntryPoint) \ + BOOT_SCRIPT_DISPATCH_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,EntryPoint) + +//OEM +#define BOOT_SCRIPT_S3_IO_POLL_MACRO(This,Width,Address,Mask,Result) \ + BOOT_SCRIPT_IO_POLL_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Mask,Result) + +#define BOOT_SCRIPT_S3_MEM_POLL_MACRO(This,Width,Address,Mask,Result) \ + BOOT_SCRIPT_MEM_POLL_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Mask,Result) + +#define BOOT_SCRIPT_S3_PCI_POLL_MACRO(This,Width,Address,Mask,Result) \ + BOOT_SCRIPT_PCI_POLL_MACRO(This,EFI_ACPI_S3_RESUME_SCRIPT_TABLE,Width,Address,Mask,Result) +#endif // #if PI_SPECIFICATION_VERSION >= 0x0001000A + +//****************************************************************************/ +// VARIABLE DECLARATIONS +//****************************************************************************/ +extern EFI_SYSTEM_TABLE *pST; +extern EFI_BOOT_SERVICES *pBS; +extern EFI_RUNTIME_SERVICES *pRS; +#if (!defined(BACKWARD_COMPATIBLE_MODE) || defined(SMM_BUILD)) && PI_SPECIFICATION_VERSION >= 0x0001000A +extern EFI_SMM_BASE2_PROTOCOL *pSmmBasePi; +extern EFI_SMM_SYSTEM_TABLE2 *pSmstPi; +#else +extern EFI_SMM_BASE_PROTOCOL *pSmmBaseFramework; +extern EFI_SMM_SYSTEM_TABLE *pSmstFramework; +#endif +extern EFI_HANDLE TheImageHandle; +extern EFI_GUID guidDevicePath; +extern EFI_GUID guidFV; +//****************************************************************************/ +// FUNCTION DECLARATIONS +//****************************************************************************/ +VOID * GetEfiConfigurationTable( + IN EFI_SYSTEM_TABLE *SystemTable, + IN EFI_GUID *Guid +); + +DBE_DATABASE* DbeCreateDatabase(UINTN KeyCount, UINTN InitialCount); + +EFI_STATUS DbeInsert(DBE_DATABASE *Database,VOID* Record); + +EFI_STATUS DbeLocateKey(IN DBE_DATABASE *Database,IN UINTN KeyNo,IN VOID *KeyValue,OUT VOID **Record,OUT INT8 *Vicinity, OPTIONAL OUT UINTN *RecordIndex); + +EFI_STATUS DbeGoToIndex(IN DBE_DATABASE *Database,IN UINTN KeyNo, IN INTN Index, OUT VOID **Record); + +EFI_STATUS DbeDelete(IN DBE_DATABASE *Database, IN VOID* Data, BOOLEAN FreeData); + +INTN OffsetRRCmp( + IN VOID *pContext, IN VOID *pRecord1, IN VOID *pRecord2 +); + +INTN OffsetKRCmp( + IN VOID *pContext, IN VOID *pKey, IN VOID *pRecord +); + +INTN AddrRRCmp( + IN VOID* *pContext, VOID *pRecord1, VOID *pRecord2 +); + +INTN AddrKRCmp( + IN DBE_OFFSET_KEY_CONTEXT *pContext, VOID *pKey, VOID *pRecord +); + +//List functions +VOID DListInit(DLIST* pList); +VOID DListAdd(DLIST* pList, DLINK* pElement); +VOID DListDelete(DLIST* pList, DLINK* pElement); +VOID DListInsert(DLIST* pList, DLINK* pElement, DLINK* pAfter); + +/* +EFI_STATUS DbeAddIndexKeyEntry(DBE_DATABASE *Database, UINTN KeyNo, VOID* Data); + +EFI_STATUS DbeNext(IN DBE_DATABASE *Database,IN UINTN KeyNo,IN OUT VOID **Record); + +EFI_STATUS DbePrev(IN DBE_DATABASE *Database,IN UINTN KeyNo,IN OUT VOID **Record); + +EFI_STATUS DbeFirst(IN DBE_DATABASE *Database,IN UINTN KeyNo, OUT VOID **Record); + +EFI_STATUS DbeLast(IN DBE_DATABASE *Database,IN UINTN KeyNo, OUT VOID **Record); + +EFI_STATUS DbeDelIndexKeyEntry(IN DBE_DATABASE *Database, IN UINTN KeyNo, IN VOID* Data); + +VOID* DbeGetKeyPtrValue(IN DBE_DATABASE *Database, IN UINTN KeyNo, VOID* Data); + +VOID* DbeGetKeyPtrAddr(IN DBE_DATABASE *Database, IN UINTN KeyNo, VOID* Data); + +VOID* DbeGetKeyPtrPtr(IN DBE_DATABASE *Database, IN UINTN KeyNo, VOID* Data); +*/ + +#ifdef EFI_DEBUG +void Trace(UINTN /* Level*/, CHAR8 * /*sFormat*/,...); +void PrintDebugMessageVaList(UINTN /* Level*/, CHAR8 * /*sFormat*/, va_list /*ArgList*/); +BOOLEAN GetImageName(EFI_HANDLE ImageHandle, CHAR8 *sName); +#endif +BOOLEAN GetControllerName(EFI_HANDLE Controller, CHAR16 **wsName); + +void* Malloc(UINTN Size); + +void* MallocZ(UINTN Size); + +VOID InitAmiLib( + IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable +); + +UINTN DPLength(EFI_DEVICE_PATH_PROTOCOL *pDp); +VOID* DPCopy(EFI_DEVICE_PATH_PROTOCOL *pDp); +VOID* DPAdd(EFI_DEVICE_PATH_PROTOCOL *pDp1, EFI_DEVICE_PATH_PROTOCOL *pDp2); +VOID* DPAddNode(EFI_DEVICE_PATH_PROTOCOL *pDp1, EFI_DEVICE_PATH_PROTOCOL *pDp2); +VOID* DPAddInstance(EFI_DEVICE_PATH_PROTOCOL *pDp1, EFI_DEVICE_PATH_PROTOCOL *pDp2); +VOID* DPGetLastNode(EFI_DEVICE_PATH_PROTOCOL *pDp); +INTN DPCmp(EFI_DEVICE_PATH_PROTOCOL *pDp1, EFI_DEVICE_PATH_PROTOCOL *pDp2); +VOID* DPCut(EFI_DEVICE_PATH_PROTOCOL *pDp); +BOOLEAN DPIsOneOf(EFI_DEVICE_PATH_PROTOCOL *pAll, EFI_DEVICE_PATH_PROTOCOL *pOne, BOOLEAN ExactMatch); +VOID* DPNextInstance(EFI_DEVICE_PATH_PROTOCOL **ppDp, UINTN *pSize); +VOID* DPCreateNode(UINT8 Type, UINT8 SubType, UINT16 Length); +BOOLEAN DPIsMultiInstance(EFI_DEVICE_PATH_PROTOCOL* pDp); +EFI_DEVICE_PATH_PROTOCOL* DPGetEndNode(EFI_DEVICE_PATH_PROTOCOL *pDp); + +EFI_EVENT TimerStart(BOOLEAN *pTimerFlag, UINT64 Delay); +void TimerStop(BOOLEAN TimerFlag, EFI_EVENT Event); + +EFI_STATUS FvReadPe32Image ( + IN EFI_GUID *NameGuid, + IN OUT VOID **Buffer, + IN OUT UINTN *BufferSize, + OUT UINT32 *AuthenticationStatus); + +EFI_STATUS ReadImage ( + IN BOOLEAN BootPolicy, IN EFI_DEVICE_PATH_PROTOCOL *FilePath, + IN OUT VOID **ppSource, IN OUT UINTN *pSourceSize OPTIONAL, + OUT UINTN *pImageSize OPTIONAL, + OUT EFI_HANDLE *phDevice OPTIONAL, OUT EFI_DEVICE_PATH_PROTOCOL **ppPath OPTIONAL +); + +//Tests if region1(s-e) belongs to the region2(S-E) +//returns EFI_ACCESS_DENIED if Belongs=FALSE and region 1 belong to region 2 +//returns EFI_ACCESS_DENIED if Belongs=TRUE and region 1 don't belong to region 2 +//returns EFI_SUCCESS in all other cases. +EFI_STATUS TestRegions(UINT64 s, UINT64 e, UINT64 S, UINT64 E, BOOLEAN Belongs); + +EFI_STATUS AppendItemLst(T_ITEM_LIST *Lst, VOID* pRes); + +EFI_STATUS InsertItemLst(T_ITEM_LIST *Lst, VOID* pRes, UINTN ItemIndex); + +EFI_STATUS DeleteItemLst(T_ITEM_LIST *Lst, UINTN ItemIndex, BOOLEAN FreeData); + +VOID ClearItemLst(T_ITEM_LIST *Lst, BOOLEAN FreeData); + +EFI_STATUS CopyItemLst(T_ITEM_LIST *Lst, T_ITEM_LIST **NewLstPtr); + +EFI_STATUS GetEfiVariable( + IN CHAR16 *sName, IN EFI_GUID *pGuid, + OUT UINT32 *pAttributes OPTIONAL, + IN OUT UINTN *pDataSize, OUT VOID **ppData +); + +EFI_STATUS GetDefaultLang(UINT16 *DefaultLang); + +EFI_STATUS ReadImageResource( + EFI_HANDLE ImageHandle, EFI_GUID *pGuid, + VOID **ppData, UINTN *pDataSize +); + +EFI_STATUS RegisterProtocolCallback( + IN EFI_GUID *pProtocol, IN EFI_EVENT_NOTIFY NotifyFunction, + IN VOID *pNotifyContext, OUT EFI_EVENT *pEvent, + OUT VOID **ppRegistration +); + +EFI_STATUS LoadResources( + EFI_HANDLE ImageHandle, UINTN NumberOfCallbacks, + CALLBACK_INFO *pCallBack, INIT_HII_PACK InitFunction +); + +EFI_STATUS LoadStrings( + EFI_HANDLE ImageHandle, EFI_HII_HANDLE *pHiiHandle +); + +EFI_STATUS HiiLibGetString( + IN EFI_HII_HANDLE HiiHandle, IN STRING_REF StringId, + IN OUT UINTN *StringSize, OUT EFI_STRING String +); +EFI_STATUS HiiLibSetString( + IN EFI_HII_HANDLE HiiHandle, IN STRING_REF StringId, IN EFI_STRING String +); +EFI_STATUS HiiLibPublishPackages( + IN VOID *PackagePointers, IN UINTN NumberOfPackages, + IN EFI_GUID *PackageGuid, IN EFI_HANDLE DriverHandle OPTIONAL, + OUT EFI_HII_HANDLE *HiiHandle +); +EFI_STATUS HiiLibGetBrowserData( + IN OUT UINTN *BufferSize, OUT VOID *Buffer, + IN CONST EFI_GUID *VarStoreGuid, OPTIONAL + IN CONST CHAR16 *VarStoreName OPTIONAL +); +EFI_STATUS HiiLibSetBrowserData( + IN UINTN BufferSize, IN VOID *Buffer, + IN CONST EFI_GUID *VarStoreGuid, OPTIONAL + IN CONST CHAR16 *VarStoreName OPTIONAL +); +EFI_STATUS HiiLibGetGlyphWidth( + IN CHAR16 Char, OUT UINT16 *Width +); + +EFI_STATUS LibGetDxeSvcTbl(DXE_SERVICES **ppDxe OPTIONAL); + +EFI_STATUS LibAllocCspResource(CSP_RES_ITEM *ResTable, UINTN ResCount, + EFI_HANDLE ImgHandle,EFI_HANDLE CntrHandle); + +EFI_STATUS AllocCspResource(DXE_SERVICES *Dxe, CSP_RES_ITEM *ResTable, UINTN ResCount, + EFI_HANDLE ImgHandle,EFI_HANDLE CntrHandle, BOOLEAN AddSpace); + +#if (!defined(BACKWARD_COMPATIBLE_MODE) || defined(SMM_BUILD)) && PI_SPECIFICATION_VERSION >= 0x0001000A +EFI_STATUS InitSmmHandlerPi( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable, + IN EFI_STATUS (*InSmmFunction)(EFI_HANDLE,EFI_SYSTEM_TABLE*), + IN EFI_STATUS (*NotInSmmFunction)(EFI_HANDLE,EFI_SYSTEM_TABLE *) OPTIONAL +); + +VOID* GetSmstConfigurationTablePi(IN EFI_GUID *TableGuid); + +EFI_STATUS InitAmiSmmLibPi( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable +); +#else +EFI_STATUS InitSmmHandlerFramework( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable, + IN EFI_STATUS (*InSmmFunction)(EFI_HANDLE,EFI_SYSTEM_TABLE*), + IN EFI_STATUS (*NotInSmmFunction)(EFI_HANDLE,EFI_SYSTEM_TABLE *) OPTIONAL +); + +EFI_STATUS InitSmmHandlerExFramework( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable, + IN EFI_STATUS (*InSmmFunction)(EFI_HANDLE,EFI_SYSTEM_TABLE*), + IN EFI_STATUS (*NotInSmmFunction)(EFI_HANDLE,EFI_SYSTEM_TABLE *) OPTIONAL +); + +VOID* GetSmstConfigurationTableFramework(IN EFI_GUID *TableGuid); + +EFI_STATUS InitAmiSmmLibFramework( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable +); +#endif + +EFI_STATUS CreateReadyToBootEvent( + IN EFI_TPL NotifyTpl, IN EFI_EVENT_NOTIFY NotifyFunction, + IN VOID *pNotifyContext, OUT EFI_EVENT *pEvent +); +EFI_STATUS CreateLegacyBootEvent( + IN EFI_TPL NotifyTpl, IN EFI_EVENT_NOTIFY NotifyFunction, + IN VOID *pNotifyContext, OUT EFI_EVENT *pEvent +); + +#if EFI_SPECIFICATION_VERSION>=0x20000 +EFI_STATUS LibReportStatusCode( + IN EFI_STATUS_CODE_TYPE Type, IN EFI_STATUS_CODE_VALUE Value, + IN UINT32 Instance, IN EFI_GUID *CallerId OPTIONAL, + IN EFI_STATUS_CODE_DATA *Data OPTIONAL +); +#else +#define LibReportStatusCode pRS->ReportStatusCode +#endif + +EFI_STATUS AmiIsaIrqMask(UINT16 *IsaIrqMask, BOOLEAN Get); +EFI_STATUS AmiIsaDmaMask(UINT8 *IsaIrqMask, BOOLEAN Get); + +//returns current boot mode +EFI_BOOT_MODE GetBootMode(); + +//Performance Measurement Functions +EFI_STATUS StartMeasure ( + IN EFI_HANDLE Handle, IN CHAR16 *Token, + IN CHAR16 *Host, IN UINT64 Ticker +); + +EFI_STATUS EndMeasure ( + IN EFI_HANDLE Handle, IN CHAR16 *Token, + IN CHAR16 *Host, IN UINT64 Ticker +); + +VOID WriteBootToOsPerformanceData(); + +typedef enum { + FillOsLoaderLoadImageStart, + FillOsLoaderStartImageStart, + FillExitBootServicesEntry, + FillExitBootServicesExit +} FPDT_FILL_TYPE; + +VOID AmiFillFpdt (IN FPDT_FILL_TYPE FieldToFill); + +VOID EFIAPI InitAmiRuntimeLib( + IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable, + IN EFI_EVENT_NOTIFY ExitBsCallback OPTIONAL, + IN EFI_EVENT_NOTIFY GoVirtualCallback OPTIONAL +); +//The EfiAtRuntime and EfiGoneVirtual functions will only work +//if library has been initialized with InitAmiRuntimeLib +BOOLEAN EFIAPI EfiAtRuntime(); +BOOLEAN EFIAPI EfiGoneVirtual(); + +BOOLEAN LanguageCodesEqual(CONST CHAR8* LangCode1, CONST CHAR8* LangCode2); +EFI_STATUS LibInitStatusCodePtr(); +#ifdef PEI_BUILD +#define _GetBootScriptSaveInterface() NULL +#else +VOID* _GetBootScriptSaveInterface(); +#endif +EFI_STATUS IsValidDevicePath( + IN EFI_DEVICE_PATH_PROTOCOL *pDp +); +/****** DO NOT WRITE BELOW THIS LINE *******/ +#ifdef __cplusplus +} +#endif +#endif +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2010, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//********************************************************************** |