+++ /dev/null
-/** @file\r
-\r
- Root include file for Mde Package Base type modules\r
-\r
- This is the include file for any module of type base. Base modules only use \r
- types defined via this include file and can be ported easily to any \r
- environment. There are a set of base libraries in the Mde Package that can\r
- be used to implement base modules.\r
-\r
-Copyright (c) 2006 - 2007, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-\r
-#ifndef __BASE_H__\r
-#define __BASE_H__\r
-\r
-//\r
-// Include processor specific binding\r
-//\r
-#include <ProcessorBind.h>\r
-\r
-typedef struct {\r
- UINT32 Data1;\r
- UINT16 Data2;\r
- UINT16 Data3;\r
- UINT8 Data4[8];\r
-} GUID;\r
-\r
-typedef UINT64 PHYSICAL_ADDRESS;\r
-\r
-//\r
-// LIST_ENTRY definition\r
-//\r
-typedef struct _LIST_ENTRY LIST_ENTRY;\r
-\r
-struct _LIST_ENTRY {\r
- LIST_ENTRY *ForwardLink;\r
- LIST_ENTRY *BackLink;\r
-};\r
-\r
-//\r
-// Modifiers to absract standard types to aid in debug of problems\r
-//\r
-#define CONST const\r
-#define STATIC static\r
-#define VOID void\r
-\r
-//\r
-// Modifiers for Data Types used to self document code.\r
-// This concept is borrowed for UEFI specification.\r
-//\r
-#ifndef IN\r
-//\r
-// Some other envirnments use this construct, so #ifndef to prevent\r
-// mulitple definition.\r
-//\r
-#define IN\r
-#define OUT\r
-#define OPTIONAL\r
-#endif\r
-\r
-//\r
-// Constants. They may exist in other build structures, so #ifndef them.\r
-//\r
-#ifndef TRUE\r
-//\r
-// UEFI specification claims 1 and 0. We are concerned about the \r
-// complier portability so we did it this way.\r
-//\r
-#define TRUE ((BOOLEAN)(1==1))\r
-#endif\r
-\r
-#ifndef FALSE\r
-#define FALSE ((BOOLEAN)(0==1))\r
-#endif\r
-\r
-#ifndef NULL\r
-#define NULL ((VOID *) 0)\r
-#endif\r
-\r
-#define BIT0 0x00000001\r
-#define BIT1 0x00000002\r
-#define BIT2 0x00000004\r
-#define BIT3 0x00000008\r
-#define BIT4 0x00000010\r
-#define BIT5 0x00000020\r
-#define BIT6 0x00000040\r
-#define BIT7 0x00000080\r
-#define BIT8 0x00000100\r
-#define BIT9 0x00000200\r
-#define BIT10 0x00000400\r
-#define BIT11 0x00000800\r
-#define BIT12 0x00001000\r
-#define BIT13 0x00002000\r
-#define BIT14 0x00004000\r
-#define BIT15 0x00008000\r
-#define BIT16 0x00010000\r
-#define BIT17 0x00020000\r
-#define BIT18 0x00040000\r
-#define BIT19 0x00080000\r
-#define BIT20 0x00100000\r
-#define BIT21 0x00200000\r
-#define BIT22 0x00400000\r
-#define BIT23 0x00800000\r
-#define BIT24 0x01000000\r
-#define BIT25 0x02000000\r
-#define BIT26 0x04000000\r
-#define BIT27 0x08000000\r
-#define BIT28 0x10000000\r
-#define BIT29 0x20000000\r
-#define BIT30 0x40000000\r
-#define BIT31 0x80000000\r
-#define BIT32 0x0000000100000000UL\r
-#define BIT33 0x0000000200000000UL\r
-#define BIT34 0x0000000400000000UL\r
-#define BIT35 0x0000000800000000UL\r
-#define BIT36 0x0000001000000000UL\r
-#define BIT37 0x0000002000000000UL\r
-#define BIT38 0x0000004000000000UL\r
-#define BIT39 0x0000008000000000UL\r
-#define BIT40 0x0000010000000000UL\r
-#define BIT41 0x0000020000000000UL\r
-#define BIT42 0x0000040000000000UL\r
-#define BIT43 0x0000080000000000UL\r
-#define BIT44 0x0000100000000000UL\r
-#define BIT45 0x0000200000000000UL\r
-#define BIT46 0x0000400000000000UL\r
-#define BIT47 0x0000800000000000UL\r
-#define BIT48 0x0001000000000000UL\r
-#define BIT49 0x0002000000000000UL\r
-#define BIT50 0x0004000000000000UL\r
-#define BIT51 0x0008000000000000UL\r
-#define BIT52 0x0010000000000000UL\r
-#define BIT53 0x0020000000000000UL\r
-#define BIT54 0x0040000000000000UL\r
-#define BIT55 0x0080000000000000UL\r
-#define BIT56 0x0100000000000000UL\r
-#define BIT57 0x0200000000000000UL\r
-#define BIT58 0x0400000000000000UL\r
-#define BIT59 0x0800000000000000UL\r
-#define BIT60 0x1000000000000000UL\r
-#define BIT61 0x2000000000000000UL\r
-#define BIT62 0x4000000000000000UL\r
-#define BIT63 0x8000000000000000UL\r
-\r
-//\r
-// Support for variable length argument lists using the ANSI standard.\r
-// \r
-// Since we are using the ANSI standard we used the standard nameing and\r
-// did not folow the coding convention\r
-//\r
-// VA_LIST - typedef for argument list.\r
-// VA_START (VA_LIST Marker, argument before the ...) - Init Marker for use.\r
-// VA_END (VA_LIST Marker) - Clear Marker\r
-// VA_ARG (VA_LIST Marker, var arg size) - Use Marker to get an argumnet from\r
-// the ... list. You must know the size and pass it in this macro.\r
-//\r
-// example:\r
-//\r
-// UINTN\r
-// ExampleVarArg (\r
-// IN UINTN NumberOfArgs,\r
-// ...\r
-// )\r
-// {\r
-// VA_LIST Marker;\r
-// UINTN Index;\r
-// UINTN Result;\r
-//\r
-// //\r
-// // Initialize the Marker\r
-// //\r
-// VA_START (Marker, NumberOfArgs);\r
-// for (Index = 0, Result = 0; Index < NumberOfArgs; Index++) {\r
-// //\r
-// // The ... list is a series of UINTN values, so average them up.\r
-// //\r
-// Result += VA_ARG (Marker, UINTN);\r
-// }\r
-//\r
-// VA_END (Marker);\r
-// return Result\r
-// }\r
-//\r
-\r
-#define _INT_SIZE_OF(n) ((sizeof (n) + sizeof (UINTN) - 1) &~(sizeof (UINTN) - 1))\r
-\r
-//\r
-// Also support coding convention rules for var arg macros\r
-//\r
-#ifndef VA_START\r
-\r
-typedef CHAR8 *VA_LIST;\r
-#define VA_START(ap, v) (ap = (VA_LIST) & (v) + _INT_SIZE_OF (v))\r
-#define VA_ARG(ap, t) (*(t *) ((ap += _INT_SIZE_OF (t)) - _INT_SIZE_OF (t)))\r
-#define VA_END(ap) (ap = (VA_LIST) 0)\r
-\r
-#endif\r
-\r
-//\r
-// Macro that returns the byte offset of a field in a data structure. \r
-//\r
-#define OFFSET_OF(TYPE, Field) ((UINTN) &(((TYPE *)0)->Field))\r
-\r
-///\r
-/// CONTAINING_RECORD - returns a pointer to the structure\r
-/// from one of it's elements.\r
-///\r
-#define _CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))\r
-\r
-///\r
-/// ALIGN_POINTER - aligns a pointer to the lowest boundry\r
-///\r
-#define ALIGN_POINTER(p, s) ((VOID *) ((UINTN)(p) + (((s) - ((UINTN) (p))) & ((s) - 1))))\r
-\r
-///\r
-/// ALIGN_VARIABLE - aligns a variable up to the next natural boundry for int size of a processor\r
-///\r
-#define ALIGN_VARIABLE(Value, Adjustment) \\r
- Adjustment = 0U; \\r
- if ((UINTN) (Value) % sizeof (UINTN)) { \\r
- (Adjustment) = (UINTN)(sizeof (UINTN) - ((UINTN) (Value) % sizeof (UINTN))); \\r
- } \\r
- (Value) = (UINTN)((UINTN) (Value) + (UINTN) (Adjustment))\r
-\r
-//\r
-// Return the maximum of two operands. \r
-// This macro returns the maximum of two operand specified by a and b. \r
-// Both a and b must be the same numerical types, signed or unsigned.\r
-//\r
-#define MAX(a, b) \\r
- (((a) > (b)) ? (a) : (b))\r
-\r
-\r
-//\r
-// Return the minimum of two operands. \r
-// This macro returns the minimal of two operand specified by a and b. \r
-// Both a and b must be the same numerical types, signed or unsigned.\r
-//\r
-#define MIN(a, b) \\r
- (((a) < (b)) ? (a) : (b))\r
-\r
-\r
-//\r
-// EFI Error Codes common to all execution phases\r
-//\r
-\r
-typedef INTN RETURN_STATUS;\r
-\r
-///\r
-/// Set the upper bit to indicate EFI Error.\r
-///\r
-#define ENCODE_ERROR(a) (MAX_BIT | (a))\r
-\r
-#define ENCODE_WARNING(a) (a)\r
-#define RETURN_ERROR(a) ((a) < 0)\r
-\r
-#define RETURN_SUCCESS 0\r
-#define RETURN_LOAD_ERROR ENCODE_ERROR (1)\r
-#define RETURN_INVALID_PARAMETER ENCODE_ERROR (2)\r
-#define RETURN_UNSUPPORTED ENCODE_ERROR (3)\r
-#define RETURN_BAD_BUFFER_SIZE ENCODE_ERROR (4)\r
-#define RETURN_BUFFER_TOO_SMALL ENCODE_ERROR (5)\r
-#define RETURN_NOT_READY ENCODE_ERROR (6)\r
-#define RETURN_DEVICE_ERROR ENCODE_ERROR (7)\r
-#define RETURN_WRITE_PROTECTED ENCODE_ERROR (8)\r
-#define RETURN_OUT_OF_RESOURCES ENCODE_ERROR (9)\r
-#define RETURN_VOLUME_CORRUPTED ENCODE_ERROR (10)\r
-#define RETURN_VOLUME_FULL ENCODE_ERROR (11)\r
-#define RETURN_NO_MEDIA ENCODE_ERROR (12)\r
-#define RETURN_MEDIA_CHANGED ENCODE_ERROR (13)\r
-#define RETURN_NOT_FOUND ENCODE_ERROR (14)\r
-#define RETURN_ACCESS_DENIED ENCODE_ERROR (15)\r
-#define RETURN_NO_RESPONSE ENCODE_ERROR (16)\r
-#define RETURN_NO_MAPPING ENCODE_ERROR (17)\r
-#define RETURN_TIMEOUT ENCODE_ERROR (18)\r
-#define RETURN_NOT_STARTED ENCODE_ERROR (19)\r
-#define RETURN_ALREADY_STARTED ENCODE_ERROR (20)\r
-#define RETURN_ABORTED ENCODE_ERROR (21)\r
-#define RETURN_ICMP_ERROR ENCODE_ERROR (22)\r
-#define RETURN_TFTP_ERROR ENCODE_ERROR (23)\r
-#define RETURN_PROTOCOL_ERROR ENCODE_ERROR (24)\r
-#define RETURN_INCOMPATIBLE_VERSION ENCODE_ERROR (25)\r
-#define RETURN_SECURITY_VIOLATION ENCODE_ERROR (26)\r
-#define RETURN_CRC_ERROR ENCODE_ERROR (27)\r
-#define RETURN_END_OF_MEDIA ENCODE_ERROR (28)\r
-#define RETURN_END_OF_FILE ENCODE_ERROR (31)\r
-\r
-#define RETURN_WARN_UNKNOWN_GLYPH ENCODE_WARNING (1)\r
-#define RETURN_WARN_DELETE_FAILURE ENCODE_WARNING (2)\r
-#define RETURN_WARN_WRITE_FAILURE ENCODE_WARNING (3)\r
-#define RETURN_WARN_BUFFER_TOO_SMALL ENCODE_WARNING (4)\r
-\r
-#endif\r
-\r
+++ /dev/null
-/** @file\r
- Processor or compiler specific defines and types for EBC.\r
-\r
- We currently only have one EBC complier so there may be some Intel compiler\r
- specific functions in this file.\r
-\r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: ProcessorBind.h\r
-\r
-**/\r
-\r
-#ifndef __PROCESSOR_BIND_H__\r
-#define __PROCESSOR_BIND_H__\r
-\r
-//\r
-// Define the processor type so other code can make processor based choices\r
-//\r
-#define MDE_CPU_EBC\r
-\r
-//\r
-// Native integer types\r
-//\r
-typedef char INT8;\r
-typedef unsigned char BOOLEAN;\r
-typedef unsigned char UINT8;\r
-typedef unsigned char CHAR8;\r
-\r
-typedef short INT16;\r
-typedef unsigned short UINT16;\r
-typedef unsigned short CHAR16;\r
-\r
-typedef int INT32;\r
-typedef unsigned int UINT32;\r
-\r
-typedef __int64 INT64;\r
-typedef unsigned __int64 UINT64;\r
-\r
-//\r
-// "long" type scales to the processor native size with EBC compiler\r
-//\r
-typedef long INTN;\r
-typedef unsigned long UINTN;\r
-\r
-#define UINT8_MAX 0xff\r
-\r
-//\r
-// Scalable macro to set the most significant bit in a natural number\r
-//\r
-#define MAX_BIT (1ULL << (sizeof (INTN) * 8 - 1)) \r
-#define MAX_2_BITS (3ULL << (sizeof (INTN) * 8 - 2))\r
-\r
-//\r
-// Maximum legal EBC address\r
-//\r
-#define MAX_ADDRESS ((UINTN) ~0)\r
-\r
-//\r
-// The stack alignment required for EBC\r
-//\r
-#define CPU_STACK_ALIGNMENT sizeof(UINTN)\r
-\r
-//\r
-// Modifier to ensure that all protocol member functions and EFI intrinsics\r
-// use the correct C calling convention. All protocol member functions and\r
-// EFI intrinsics are required to modify thier member functions with EFIAPI.\r
-//\r
-#define EFIAPI \r
-\r
-//\r
-// The Microsoft* C compiler can removed references to unreferenced data items\r
-// if the /OPT:REF linker option is used. We defined a macro as this is a \r
-// a non standard extension. Currently not supported by the EBC compiler\r
-//\r
-#define GLOBAL_REMOVE_IF_UNREFERENCED\r
-\r
-#endif \r
-\r
+++ /dev/null
-/** @file\r
- Processor or Compiler specific defines and types for x64.\r
-\r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: ProcessorBind.h\r
-\r
-**/\r
-\r
-#ifndef __PROCESSOR_BIND_H__\r
-#define __PROCESSOR_BIND_H__\r
-\r
-//\r
-// Define the processor type so other code can make processor based choices\r
-//\r
-#define MDE_CPU_IA32\r
-\r
-//\r
-// Make sure we are useing the correct packing rules per EFI specification\r
-//\r
-#ifndef __GNUC__\r
-#pragma pack()\r
-#endif\r
-\r
-#if _MSC_EXTENSIONS\r
-\r
-//\r
-// Disable warning that make it impossible to compile at /W4\r
-// This only works for Microsoft* tools\r
-//\r
-\r
-//\r
-// Disabling bitfield type checking warnings.\r
-//\r
-#pragma warning ( disable : 4214 )\r
-\r
-//\r
-// Disabling the unreferenced formal parameter warnings.\r
-//\r
-#pragma warning ( disable : 4100 )\r
-\r
-//\r
-// Disable slightly different base types warning as CHAR8 * can not be set\r
-// to a constant string.\r
-//\r
-#pragma warning ( disable : 4057 )\r
-\r
-//\r
-// ASSERT(FALSE) or while (TRUE) are legal constructes so supress this warning\r
-//\r
-#pragma warning ( disable : 4127 )\r
-\r
-//\r
-// This warning is caused by functions defined but not used. For precompiled header only.\r
-//\r
-#pragma warning ( disable : 4505 )\r
-\r
-//\r
-// This warning is caused by empty (after preprocessing) souce file. For precompiled header only.\r
-//\r
-#pragma warning ( disable : 4206 )\r
-\r
-#endif\r
-\r
-\r
-#if !defined(__GNUC__) && (__STDC_VERSION__ < 199901L)\r
- //\r
- // No ANSI C 2000 stdint.h integer width declarations, so define equivalents\r
- //\r
- \r
- #if _MSC_EXTENSIONS \r
- \r
- //\r
- // use Microsoft* C complier dependent interger width types \r
- //\r
- typedef unsigned __int64 UINT64;\r
- typedef __int64 INT64;\r
- typedef unsigned __int32 UINT32;\r
- typedef __int32 INT32;\r
- typedef unsigned short UINT16;\r
- typedef unsigned short CHAR16;\r
- typedef short INT16;\r
- typedef unsigned char BOOLEAN;\r
- typedef unsigned char UINT8;\r
- typedef char CHAR8;\r
- typedef char INT8;\r
- #else\r
-\r
- //\r
- // Assume standard IA-32 alignment. \r
- // Need to check portability of long long\r
- //\r
- typedef unsigned long long UINT64;\r
- typedef long long INT64;\r
- typedef unsigned int UINT32;\r
- typedef int INT32;\r
- typedef unsigned short UINT16;\r
- typedef unsigned short CHAR16;\r
- typedef short INT16;\r
- typedef unsigned char BOOLEAN;\r
- typedef unsigned char UINT8;\r
- typedef char CHAR8;\r
- typedef char INT8;\r
- #endif\r
-\r
- #define UINT8_MAX 0xff\r
-\r
-#else\r
- //\r
- // Use ANSI C 2000 stdint.h integer width declarations\r
- //\r
- #include "stdint.h"\r
- typedef uint8_t BOOLEAN;\r
- typedef int8_t INT8;\r
- typedef uint8_t UINT8;\r
- typedef int16_t INT16;\r
- typedef uint16_t UINT16;\r
- typedef int32_t INT32;\r
- typedef uint32_t UINT32;\r
- typedef int64_t INT64;\r
- typedef uint64_t UINT64;\r
- typedef char CHAR8;\r
- typedef uint16_t CHAR16;\r
-\r
-#endif\r
-\r
-typedef UINT32 UINTN;\r
-typedef INT32 INTN;\r
-\r
-\r
-//\r
-// Processor specific defines\r
-//\r
-#define MAX_BIT 0x80000000\r
-#define MAX_2_BITS 0xC0000000\r
-\r
-//\r
-// Maximum legal IA-32 address\r
-//\r
-#define MAX_ADDRESS 0xFFFFFFFF\r
-\r
-//\r
-// The stack alignment required for IA-32\r
-//\r
-#define CPU_STACK_ALIGNMENT sizeof(UINTN)\r
-\r
-//\r
-// Modifier to ensure that all protocol member functions and EFI intrinsics\r
-// use the correct C calling convention. All protocol member functions and\r
-// EFI intrinsics are required to modify thier member functions with EFIAPI.\r
-//\r
-#if _MSC_EXTENSIONS\r
- //\r
- // Microsoft* compiler requires _EFIAPI useage, __cdecl is Microsoft* specific C.\r
- // \r
- #define EFIAPI __cdecl \r
-#endif\r
-\r
-#if __GNUC__\r
- #define EFIAPI __attribute__((cdecl)) \r
-#endif\r
-\r
-//\r
-// The Microsoft* C compiler can removed references to unreferenced data items\r
-// if the /OPT:REF linker option is used. We defined a macro as this is a \r
-// a non standard extension\r
-//\r
-#if _MSC_EXTENSIONS\r
- #define GLOBAL_REMOVE_IF_UNREFERENCED __declspec(selectany)\r
-#else\r
- #define GLOBAL_REMOVE_IF_UNREFERENCED\r
-#endif\r
-\r
-#endif\r
-\r
+++ /dev/null
-///** @file\r
-// IPF Processor Defines for assembly code\r
-//\r
-// @note\r
-// This file is included by assembly files as well. The assmber can NOT deal\r
-// with /* */ commnets this is why this file is commented not following the\r
-// coding standard\r
-//\r
-//Copyright (c) 2006, Intel Corporation\r
-//All rights reserved. This program and the accompanying materials\r
-//are licensed and made available under the terms and conditions of the BSD License\r
-//which accompanies this distribution. The full text of the license may be found at\r
-//http://opensource.org/licenses/bsd-license.php\r
-//\r
-//THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-//WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-//\r
-//Module Name: IpfDefines.h\r
-//\r
-//**/\r
-\r
-#ifndef _IPFDEFINES_H\r
-#define _IPFDEFINES_H\r
-\r
-//\r
-// IPI DElivery Methods\r
-//\r
-#define IPI_INT_DELIVERY 0x0\r
-#define IPI_PMI_DELIVERY 0x2\r
-#define IPI_NMI_DELIVERY 0x4\r
-#define IPI_INIT_DELIVERY 0x5\r
-#define IPI_ExtINT_DELIVERY 0x7\r
-\r
-//\r
-// Define Itanium-based system registers.\r
-//\r
-// Define Itanium-based system register bit field offsets.\r
-//\r
-// Processor Status Register (PSR) Bit positions\r
-//\r
-// User / System mask\r
-//\r
-#define PSR_RV0 0\r
-#define PSR_BE 1\r
-#define PSR_UP 2\r
-#define PSR_AC 3\r
-#define PSR_MFL 4\r
-#define PSR_MFH 5\r
-\r
-//\r
-// PSR bits 6-12 reserved (must be zero)\r
-//\r
-#define PSR_MBZ0 6\r
-#define PSR_MBZ0_V 0x1ffUL L\r
-\r
-//\r
-// System only mask\r
-//\r
-#define PSR_IC 13\r
-#define PSR_IC_MASK (1 << 13)\r
-#define PSR_I 14\r
-#define PSR_PK 15\r
-#define PSR_MBZ1 16\r
-#define PSR_MBZ1_V 0x1UL L\r
-#define PSR_DT 17\r
-#define PSR_DFL 18\r
-#define PSR_DFH 19\r
-#define PSR_SP 20\r
-#define PSR_PP 21\r
-#define PSR_DI 22\r
-#define PSR_SI 23\r
-#define PSR_DB 24\r
-#define PSR_LP 25\r
-#define PSR_TB 26\r
-#define PSR_RT 27\r
-\r
-//\r
-// PSR bits 28-31 reserved (must be zero)\r
-//\r
-#define PSR_MBZ2 28\r
-#define PSR_MBZ2_V 0xfUL L\r
-\r
-//\r
-// Neither mask\r
-//\r
-#define PSR_CPL 32\r
-#define PSR_CPL_LEN 2\r
-#define PSR_IS 34\r
-#define PSR_MC 35\r
-#define PSR_IT 36\r
-#define PSR_IT_MASK 0x1000000000\r
-#define PSR_ID 37\r
-#define PSR_DA 38\r
-#define PSR_DD 39\r
-#define PSR_SS 40\r
-#define PSR_RI 41\r
-#define PSR_RI_LEN 2\r
-#define PSR_ED 43\r
-#define PSR_BN 44\r
-\r
-//\r
-// PSR bits 45-63 reserved (must be zero)\r
-//\r
-#define PSR_MBZ3 45\r
-#define PSR_MBZ3_V 0xfffffULL\r
-\r
-//\r
-// Floating Point Status Register (FPSR) Bit positions\r
-//\r
-//\r
-// Traps\r
-//\r
-#define FPSR_VD 0\r
-#define FPSR_DD 1\r
-#define FPSR_ZD 2\r
-#define FPSR_OD 3\r
-#define FPSR_UD 4\r
-#define FPSR_ID 5\r
-\r
-//\r
-// Status Field 0 - Controls\r
-//\r
-#define FPSR0_FTZ0 6\r
-#define FPSR0_WRE0 7\r
-#define FPSR0_PC0 8\r
-#define FPSR0_RC0 10\r
-#define FPSR0_TD0 12\r
-\r
-//\r
-// Status Field 0 - Flags\r
-//\r
-#define FPSR0_V0 13\r
-#define FPSR0_D0 14\r
-#define FPSR0_Z0 15\r
-#define FPSR0_O0 16\r
-#define FPSR0_U0 17\r
-#define FPSR0_I0 18\r
-\r
-//\r
-// Status Field 1 - Controls\r
-//\r
-#define FPSR1_FTZ0 19\r
-#define FPSR1_WRE0 20\r
-#define FPSR1_PC0 21\r
-#define FPSR1_RC0 23\r
-#define FPSR1_TD0 25\r
-\r
-//\r
-// Status Field 1 - Flags\r
-//\r
-#define FPSR1_V0 26\r
-#define FPSR1_D0 27\r
-#define FPSR1_Z0 28\r
-#define FPSR1_O0 29\r
-#define FPSR1_U0 30\r
-#define FPSR1_I0 31\r
-\r
-//\r
-// Status Field 2 - Controls\r
-//\r
-#define FPSR2_FTZ0 32\r
-#define FPSR2_WRE0 33\r
-#define FPSR2_PC0 34\r
-#define FPSR2_RC0 36\r
-#define FPSR2_TD0 38\r
-\r
-//\r
-// Status Field 2 - Flags\r
-//\r
-#define FPSR2_V0 39\r
-#define FPSR2_D0 40\r
-#define FPSR2_Z0 41\r
-#define FPSR2_O0 42\r
-#define FPSR2_U0 43\r
-#define FPSR2_I0 44\r
-\r
-//\r
-// Status Field 3 - Controls\r
-//\r
-#define FPSR3_FTZ0 45\r
-#define FPSR3_WRE0 46\r
-#define FPSR3_PC0 47\r
-#define FPSR3_RC0 49\r
-#define FPSR3_TD0 51\r
-\r
-//\r
-// Status Field 0 - Flags\r
-//\r
-#define FPSR3_V0 52\r
-#define FPSR3_D0 53\r
-#define FPSR3_Z0 54\r
-#define FPSR3_O0 55\r
-#define FPSR3_U0 56\r
-#define FPSR3_I0 57\r
-\r
-//\r
-// FPSR bits 58-63 Reserved -- Must be zero\r
-//\r
-#define FPSR_MBZ0 58\r
-#define FPSR_MBZ0_V 0x3fUL L\r
-\r
-//\r
-// For setting up FPSR on kernel entry\r
-// All traps are disabled.\r
-//\r
-#define FPSR_FOR_KERNEL 0x3f\r
-\r
-#define FP_REG_SIZE 16 // 16 byte spill size\r
-#define HIGHFP_REGS_LENGTH (96 * 16)\r
-\r
-//\r
-// Define hardware Task Priority Register (TPR)\r
-//\r
-//\r
-// TPR bit positions\r
-//\r
-#define TPR_MIC 4 // Bits 0 - 3 ignored\r
-#define TPR_MIC_LEN 4\r
-#define TPR_MMI 16 // Mask Maskable Interrupt\r
-//\r
-// Define hardware Interrupt Status Register (ISR)\r
-//\r
-//\r
-// ISR bit positions\r
-//\r
-#define ISR_CODE 0\r
-#define ISR_CODE_LEN 16\r
-#define ISR_CODE_MASK 0xFFFF\r
-#define ISR_IA_VECTOR 16\r
-#define ISR_IA_VECTOR_LEN 8\r
-#define ISR_MBZ0 24\r
-#define ISR_MBZ0_V 0xff\r
-#define ISR_X 32\r
-#define ISR_W 33\r
-#define ISR_R 34\r
-#define ISR_NA 35\r
-#define ISR_SP 36\r
-#define ISR_RS 37\r
-#define ISR_IR 38\r
-#define ISR_NI 39\r
-#define ISR_MBZ1 40\r
-#define ISR_EI 41\r
-#define ISR_ED 43\r
-#define ISR_MBZ2 44\r
-#define ISR_MBZ2_V 0xfffff\r
-\r
-//\r
-// ISR codes\r
-//\r
-// For General exceptions: ISR{3:0}\r
-//\r
-#define ISR_ILLEGAL_OP 0 // Illegal operation fault\r
-#define ISR_PRIV_OP 1 // Privileged operation fault\r
-#define ISR_PRIV_REG 2 // Privileged register fauls\r
-#define ISR_RESVD_REG 3 // Reserved register/field flt\r
-#define ISR_ILLEGAL_ISA 4 // Disabled instruction set transition fault\r
-//\r
-// Define hardware Default Control Register (DCR)\r
-//\r
-//\r
-// DCR bit positions\r
-//\r
-#define DCR_PP 0\r
-#define DCR_BE 1\r
-#define DCR_LC 2\r
-#define DCR_MBZ0 4\r
-#define DCR_MBZ0_V 0xf\r
-#define DCR_DM 8\r
-#define DCR_DP 9\r
-#define DCR_DK 10\r
-#define DCR_DX 11\r
-#define DCR_DR 12\r
-#define DCR_DA 13\r
-#define DCR_DD 14\r
-#define DCR_DEFER_ALL 0x7f00\r
-#define DCR_MBZ1 2\r
-#define DCR_MBZ1_V 0xffffffffffffUL L\r
-\r
-//\r
-// Define hardware RSE Configuration Register\r
-//\r
-// RS Configuration (RSC) bit field positions\r
-//\r
-#define RSC_MODE 0\r
-#define RSC_PL 2\r
-#define RSC_BE 4\r
-#define RSC_MBZ0 5\r
-#define RSC_MBZ0_V 0x3ff\r
-#define RSC_LOADRS 16\r
-#define RSC_LOADRS_LEN 14\r
-#define RSC_MBZ1 30\r
-#define RSC_MBZ1_V 0x3ffffffffUL L\r
-\r
-//\r
-// RSC modes\r
-//\r
-#define RSC_MODE_LY (0x0) // Lazy\r
-#define RSC_MODE_SI (0x1) // Store intensive\r
-#define RSC_MODE_LI (0x2) // Load intensive\r
-#define RSC_MODE_EA (0x3) // Eager\r
-//\r
-// RSC Endian bit values\r
-//\r
-#define RSC_BE_LITTLE 0\r
-#define RSC_BE_BIG 1\r
-\r
-//\r
-// Define Interruption Function State (IFS) Register\r
-//\r
-// IFS bit field positions\r
-//\r
-#define IFS_IFM 0\r
-#define IFS_IFM_LEN 38\r
-#define IFS_MBZ0 38\r
-#define IFS_MBZ0_V 0x1ffffff\r
-#define IFS_V 63\r
-#define IFS_V_LEN 1\r
-\r
-//\r
-// IFS is valid when IFS_V = IFS_VALID\r
-//\r
-#define IFS_VALID 1\r
-\r
-//\r
-// Define Page Table Address (PTA)\r
-//\r
-#define PTA_VE 0\r
-#define PTA_VF 8\r
-#define PTA_SIZE 2\r
-#define PTA_SIZE_LEN 6\r
-#define PTA_BASE 15\r
-\r
-//\r
-// Define Region Register (RR)\r
-//\r
-//\r
-// RR bit field positions\r
-//\r
-#define RR_VE 0\r
-#define RR_MBZ0 1\r
-#define RR_PS 2\r
-#define RR_PS_LEN 6\r
-#define RR_RID 8\r
-#define RR_RID_LEN 24\r
-#define RR_MBZ1 32\r
-\r
-//\r
-// SAL uses region register 0 and RID of 1000\r
-//\r
-#define SAL_RID 0x1000\r
-#define SAL_RR_REG 0x0\r
-#define SAL_TR 0x0\r
-\r
-//\r
-// Total number of region registers\r
-//\r
-#define RR_SIZE 8\r
-\r
-//\r
-// Define Protection Key Register (PKR)\r
-//\r
-// PKR bit field positions\r
-//\r
-#define PKR_V 0\r
-#define PKR_WD 1\r
-#define PKR_RD 2\r
-#define PKR_XD 3\r
-#define PKR_MBZ0 4\r
-#define PKR_KEY 8\r
-#define PKR_KEY_LEN 24\r
-#define PKR_MBZ1 32\r
-\r
-#define PKR_VALID (1 << PKR_V)\r
-\r
-//\r
-// Number of protection key registers\r
-//\r
-#define PKRNUM 8\r
-\r
-//\r
-// Define Interruption TLB Insertion register (ITIR)\r
-//\r
-//\r
-// Define Translation Insertion Format (TR)\r
-//\r
-// PTE0 bit field positions\r
-//\r
-#define PTE0_P 0\r
-#define PTE0_MBZ0 1\r
-#define PTE0_MA 2\r
-#define PTE0_A 5\r
-#define PTE0_D 6\r
-#define PTE0_PL 7\r
-#define PTE0_AR 9\r
-#define PTE0_PPN 12\r
-#define PTE0_MBZ1 48\r
-#define PTE0_ED 52\r
-#define PTE0_IGN0 53\r
-\r
-//\r
-// ITIR bit field positions\r
-//\r
-#define ITIR_MBZ0 0\r
-#define ITIR_PS 2\r
-#define ITIR_PS_LEN 6\r
-#define ITIR_KEY 8\r
-#define ITIR_KEY_LEN 24\r
-#define ITIR_MBZ1 32\r
-#define ITIR_MBZ1_LEN 16\r
-#define ITIR_PPN 48\r
-#define ITIR_PPN_LEN 15\r
-#define ITIR_MBZ2 63\r
-\r
-#define ATTR_IPAGE 0x661 // Access Rights = RWX (bits 11-9=011), PL 0(8-7=0)\r
-#define ATTR_DEF_BITS 0x661 // Access Rights = RWX (bits 11-9=010), PL 0(8-7=0)\r
-// Dirty (bit 6=1), Accessed (bit 5=1),\r
-// MA WB (bits 4-2=000), Present (bit 0=1)\r
-//\r
-// Memory access rights\r
-//\r
-#define AR_UR_KR 0x0 // user/kernel read\r
-#define AR_URX_KRX 0x1 // user/kernel read and execute\r
-#define AR_URW_KRW 0x2 // user/kernel read & write\r
-#define AR_URWX_KRWX 0x3 // user/kernel read,write&execute\r
-#define AR_UR_KRW 0x4 // user read/kernel read,write\r
-#define AR_URX_KRWX 0x5 // user read/execute, kernel all\r
-#define AR_URWX_KRW 0x6 // user all, kernel read & write\r
-#define AR_UX_KRX 0x7 // user execute only, kernel read and execute\r
-//\r
-// Memory attribute values\r
-//\r
-//\r
-// The next 4 are all cached, non-sequential & speculative, coherent\r
-//\r
-#define MA_WBU 0x0 // Write back, unordered\r
-//\r
-// The next 3 are all non-cached, sequential & non-speculative\r
-//\r
-#define MA_UC 0x4 // Non-coalescing, sequential & non-speculative\r
-#define MA_UCE 0x5 // Non-coalescing, sequential, non-speculative\r
-// & fetchadd exported\r
-//\r
-#define MA_WC 0x6 // Non-cached, Coalescing, non-seq., spec.\r
-#define MA_NAT 0xf // NaT page\r
-//\r
-// Definition of the offset of TRAP/INTERRUPT/FAULT handlers from the\r
-// base of IVA (Interruption Vector Address)\r
-//\r
-#define IVT_SIZE 0x8000\r
-#define EXTRA_ALIGNMENT 0x1000\r
-\r
-#define OFF_VHPTFLT 0x0000 // VHPT Translation fault\r
-#define OFF_ITLBFLT 0x0400 // Instruction TLB fault\r
-#define OFF_DTLBFLT 0x0800 // Data TLB fault\r
-#define OFF_ALTITLBFLT 0x0C00 // Alternate ITLB fault\r
-#define OFF_ALTDTLBFLT 0x1000 // Alternate DTLB fault\r
-#define OFF_NESTEDTLBFLT 0x1400 // Nested TLB fault\r
-#define OFF_IKEYMISSFLT 0x1800 // Inst Key Miss fault\r
-#define OFF_DKEYMISSFLT 0x1C00 // Data Key Miss fault\r
-#define OFF_DIRTYBITFLT 0x2000 // Dirty-Bit fault\r
-#define OFF_IACCESSBITFLT 0x2400 // Inst Access-Bit fault\r
-#define OFF_DACCESSBITFLT 0x2800 // Data Access-Bit fault\r
-#define OFF_BREAKFLT 0x2C00 // Break Inst fault\r
-#define OFF_EXTINT 0x3000 // External Interrupt\r
-//\r
-// Offset 0x3400 to 0x0x4C00 are reserved\r
-//\r
-#define OFF_PAGENOTPFLT 0x5000 // Page Not Present fault\r
-#define OFF_KEYPERMFLT 0x5100 // Key Permission fault\r
-#define OFF_IACCESSRTFLT 0x5200 // Inst Access-Rights flt\r
-#define OFF_DACCESSRTFLT 0x5300 // Data Access-Rights fault\r
-#define OFF_GPFLT 0x5400 // General Exception fault\r
-#define OFF_FPDISFLT 0x5500 // Disable-FP fault\r
-#define OFF_NATFLT 0x5600 // NAT Consumption fault\r
-#define OFF_SPECLNFLT 0x5700 // Speculation fault\r
-#define OFF_DBGFLT 0x5900 // Debug fault\r
-#define OFF_ALIGNFLT 0x5A00 // Unaligned Reference fault\r
-#define OFF_LOCKDREFFLT 0x5B00 // Locked Data Reference fault\r
-#define OFF_FPFLT 0x5C00 // Floating Point fault\r
-#define OFF_FPTRAP 0x5D00 // Floating Point Trap\r
-#define OFF_LOPRIVTRAP 0x5E00 // Lower-Privilege Transfer Trap\r
-#define OFF_TAKENBRTRAP 0x5F00 // Taken Branch Trap\r
-#define OFF_SSTEPTRAP 0x6000 // Single Step Trap\r
-//\r
-// Offset 0x6100 to 0x6800 are reserved\r
-//\r
-#define OFF_IA32EXCEPTN 0x6900 // iA32 Exception\r
-#define OFF_IA32INTERCEPT 0x6A00 // iA32 Intercept\r
-#define OFF_IA32INT 0x6B00 // iA32 Interrupt\r
-#define NUMBER_OF_VECTORS 0x100\r
-//\r
-// Privilege levels\r
-//\r
-#define PL_KERNEL 0\r
-#define PL_USER 3\r
-\r
-//\r
-// Instruction set (IS) bits\r
-//\r
-#define IS_IA64 0\r
-#define IS_IA 1\r
-\r
-//\r
-// RSC while in kernel: enabled, little endian, PL = 0, eager mode\r
-//\r
-#define RSC_KERNEL ((RSC_MODE_EA << RSC_MODE) | (RSC_BE_LITTLE << RSC_BE))\r
-\r
-//\r
-// Lazy RSC in kernel: enabled, little endian, pl = 0, lazy mode\r
-//\r
-#define RSC_KERNEL_LAZ ((RSC_MODE_LY << RSC_MODE) | (RSC_BE_LITTLE << RSC_BE))\r
-\r
-//\r
-// RSE disabled: disabled, PL = 0, little endian, eager mode\r
-//\r
-#define RSC_KERNEL_DISABLED ((RSC_MODE_LY << RSC_MODE) | (RSC_BE_LITTLE << RSC_BE))\r
-\r
-#define NAT_BITS_PER_RNAT_REG 63\r
-\r
-//\r
-// Macros for generating PTE0 and PTE1 value\r
-//\r
-#define PTE0(ed, ppn12_47, ar, pl, d, a, ma, p) \\r
- ( ( ed << PTE0_ED ) | \\r
- ( ppn12_47 << PTE0_PPN ) | \\r
- ( ar << PTE0_AR ) | \\r
- ( pl << PTE0_PL ) | \\r
- ( d << PTE0_D ) | \\r
- ( a << PTE0_A ) | \\r
- ( ma << PTE0_MA ) | \\r
- ( p << PTE0_P ) \\r
- )\r
-\r
-#define ITIR(ppn48_63, key, ps) \\r
- ( ( ps << ITIR_PS ) | \\r
- ( key << ITIR_KEY ) | \\r
- ( ppn48_63 << ITIR_PPN ) \\r
- )\r
-\r
-//\r
-// Macro to generate mask value from bit position. The result is a\r
-// 64-bit.\r
-//\r
-#define BITMASK(bp, value) (value << bp)\r
-\r
-#define BUNDLE_SIZE 16\r
-#define SPURIOUS_INT 0xF\r
-\r
-#define FAST_DISABLE_INTERRUPTS rsm BITMASK (PSR_I, 1);;\r
-\r
-#define FAST_ENABLE_INTERRUPTS ssm BITMASK (PSR_I, 1);;\r
-\r
-#endif\r
+++ /dev/null
-//++\r
-// Copyright (c) 2006, Intel Corporation \r
-// All rights reserved. This program and the accompanying materials \r
-// are licensed and made available under the terms and conditions of the BSD License \r
-// which accompanies this distribution. The full text of the license may be found at \r
-// http://opensource.org/licenses/bsd-license.php \r
-// \r
-// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-// \r
-// Module Name:\r
-// IpfMacro.i\r
-//\r
-// Abstract:\r
-// Contains the macros needed for calling procedures in Itanium-based assembly code.\r
-//\r
-//\r
-// Revision History:\r
-//\r
-//--\r
-\r
-#ifndef __IA64PROC_I__\r
-#define __IA64PROC_I__\r
-\r
-\r
-#define PROCEDURE_ENTRY(name) .##text; \\r
- .##type name, @function; \\r
- .##proc name; \\r
-name::\r
-\r
-#define PROCEDURE_EXIT(name) .##endp name\r
-\r
-// Note: use of NESTED_SETUP requires number of locals (l) >= 3\r
-\r
-#define NESTED_SETUP(i,l,o,r) \\r
- alloc loc1=ar##.##pfs,i,l,o,r ;\\r
- mov loc0=b0\r
-\r
-#define NESTED_RETURN \\r
- mov b0=loc0 ;\\r
- mov ar##.##pfs=loc1 ;;\\r
- br##.##ret##.##dpnt b0;;\r
-\r
-#define GLOBAL_FUNCTION(Function) \\r
- .##type Function, @function; \\r
- .##global Function\r
-\r
-#define INTERRUPT_HANDLER_BEGIN(name) \\r
-PROCEDURE_ENTRY(name##HandlerBegin) \\r
-;; \\r
-PROCEDURE_EXIT(name##HandlerBegin)\r
-\r
-#define INTERRUPT_HANDLER_END(name) \\r
-PROCEDURE_ENTRY(name##HandlerEnd) \\r
-;; \\r
-PROCEDURE_EXIT(name##HandlerEnd) \r
-\r
-\r
-#define INTERRUPT_HANDLER_BLOCK_BEGIN \\r
-INTERRUPT_HANDLER_BEGIN(First)\r
-\r
-#define INTERRUPT_HANDLER_BLOCK_END \\r
-INTERRUPT_HANDLER_END(Last)\r
-\r
-\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- Main PAL API's defined in IPF PAL Spec.\r
-\r
- Copyright (c) 2006 - 2007, Intel Corporation\r
- All rights reserved. This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
- Module Name: PalApi.h\r
-\r
-**/\r
-\r
-#ifndef __PAL_API_H__\r
-#define __PAL_API_H__\r
-\r
-//\r
-// IPF Specific Functions\r
-//\r
-\r
-typedef struct {\r
- UINT64 Status;\r
- UINT64 r9;\r
- UINT64 r10;\r
- UINT64 r11;\r
-} PAL_CALL_RETURN;\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- Processor or Compiler specific defines and types for Intel Itanium(TM).\r
-\r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: ProcessorBind.h\r
-\r
-**/\r
-\r
-#ifndef __PROCESSOR_BIND_H__\r
-#define __PROCESSOR_BIND_H__\r
-\r
-\r
-//\r
-// Define the processor type so other code can make processor based choices\r
-//\r
-#define MDE_CPU_IPF\r
-\r
-\r
-//\r
-// Make sure we are useing the correct packing rules per EFI specification\r
-//\r
-#pragma pack()\r
-\r
-\r
-#if _MSC_EXTENSIONS \r
- \r
-//\r
-// Disable warning that make it impossible to compile at /W4\r
-// This only works for Microsoft tools. Copied from the \r
-// IA-32 version of efibind.h\r
-//\r
-\r
-//\r
-// Disabling bitfield type checking warnings.\r
-//\r
-#pragma warning ( disable : 4214 )\r
-\r
-\r
-// Disabling the unreferenced formal parameter warnings.\r
-//\r
-#pragma warning ( disable : 4100 )\r
-\r
-//\r
-// Disable slightly different base types warning as CHAR8 * can not be set\r
-// to a constant string.\r
-//\r
-#pragma warning ( disable : 4057 )\r
-\r
-//\r
-// Disable warning on conversion from function pointer to a data pointer\r
-//\r
-#pragma warning ( disable : 4054 )\r
-\r
-//\r
-// ASSERT(FALSE) or while (TRUE) are legal constructes so supress this warning\r
-//\r
-#pragma warning ( disable : 4127 )\r
-\r
-//\r
-// Can not cast a function pointer to a data pointer. We need to do this on \r
-// IPF to get access to the PLABEL.\r
-//\r
-#pragma warning ( disable : 4514 )\r
-\r
-//\r
-// This warning is caused by functions defined but not used. For precompiled header only.\r
-//\r
-#pragma warning ( disable : 4505 )\r
-\r
-//\r
-// This warning is caused by empty (after preprocessing) souce file. For precompiled header only.\r
-//\r
-#pragma warning ( disable : 4206 )\r
-\r
-#endif\r
-\r
-\r
-#if (__STDC_VERSION__ < 199901L)\r
- //\r
- // No ANSI C 2000 stdint.h integer width declarations, so define equivalents\r
- //\r
- \r
- #if _MSC_EXTENSIONS \r
- \r
-\r
- //\r
- // use Microsoft C complier dependent interger width types \r
- //\r
- typedef unsigned __int64 UINT64;\r
- typedef __int64 INT64;\r
- typedef unsigned __int32 UINT32;\r
- typedef __int32 INT32;\r
- typedef unsigned short UINT16;\r
- typedef unsigned short CHAR16;\r
- typedef short INT16;\r
- typedef unsigned char BOOLEAN;\r
- typedef unsigned char UINT8;\r
- typedef char CHAR8;\r
- typedef char INT8;\r
- #else\r
- #ifdef _EFI_P64 \r
- //\r
- // P64 - is Intel Itanium(TM) speak for pointers being 64-bit and longs and ints \r
- // are 32-bits\r
- //\r
- typedef unsigned long long UINT64;\r
- typedef long long INT64;\r
- typedef unsigned int UINT32;\r
- typedef int INT32;\r
- typedef unsigned short CHAR16;\r
- typedef unsigned short UINT16;\r
- typedef short INT16;\r
- typedef unsigned char BOOLEAN;\r
- typedef unsigned char UINT8;\r
- typedef char CHAR8;\r
- typedef char INT8;\r
- #else\r
- //\r
- // Assume LP64 - longs and pointers are 64-bit. Ints are 32-bit.\r
- //\r
- typedef unsigned long UINT64;\r
- typedef long INT64;\r
- typedef unsigned int UINT32;\r
- typedef int INT32;\r
- typedef unsigned short UINT16;\r
- typedef unsigned short CHAR16;\r
- typedef short INT16;\r
- typedef unsigned char BOOLEAN;\r
- typedef unsigned char UINT8;\r
- typedef char CHAR8;\r
- typedef char INT8;\r
- #endif\r
- #endif\r
-\r
- #define UINT8_MAX 0xff\r
-\r
-#else\r
- //\r
- // Use ANSI C 2000 stdint.h integer width declarations\r
- //\r
- #include <stdint.h>\r
- typedef uint8_t BOOLEAN;\r
- typedef int8_t INT8;\r
- typedef uint8_t UINT8;\r
- typedef int16_t INT16;\r
- typedef uint16_t UINT16;\r
- typedef int32_t INT32;\r
- typedef uint32_t UINT32;\r
- typedef int64_t INT64;\r
- typedef uint64_t UINT64;\r
- typedef char CHAR8;\r
- typedef uint16_t CHAR16;\r
-\r
-#endif\r
-\r
-typedef UINT64 UINTN;\r
-typedef INT64 INTN;\r
-\r
-\r
-//\r
-// Processor specific defines\r
-//\r
-#define MAX_BIT 0x8000000000000000ULL\r
-#define MAX_2_BITS 0xC000000000000000ULL\r
-\r
-//\r
-// Maximum legal Itanium-based address\r
-//\r
-#define MAX_ADDRESS 0xFFFFFFFFFFFFFFFFULL\r
-\r
-//\r
-// Per the Itanium Software Conventions and Runtime Architecture Guide,\r
-// section 3.3.4, IPF stack must always be 16-byte aligned.\r
-//\r
-#define CPU_STACK_ALIGNMENT 16\r
-\r
-//\r
-// Modifier to ensure that all protocol member functions and EFI intrinsics\r
-// use the correct C calling convention. All protocol member functions and\r
-// EFI intrinsics are required to modify thier member functions with EFIAPI.\r
-//\r
-#if _MSC_EXTENSIONS \r
- //\r
- // Microsoft* compiler requires _EFIAPI useage, __cdecl is Microsoft* specific C.\r
- // \r
- #define EFIAPI __cdecl \r
-#else\r
- #define EFIAPI \r
-#endif\r
-\r
-//\r
-// The Microsoft* C compiler can removed references to unreferenced data items\r
-// if the /OPT:REF linker option is used. We defined a macro as this is a \r
-// a non standard extension\r
-//\r
-#if _MSC_EXTENSIONS\r
- #define GLOBAL_REMOVE_IF_UNREFERENCED __declspec(selectany)\r
-#else\r
- #define GLOBAL_REMOVE_IF_UNREFERENCED\r
-#endif\r
-\r
-//\r
-// A pointer to a function in IPF points to a plabel.\r
-//\r
-typedef struct {\r
- UINT64 EntryPoint;\r
- UINT64 GP;\r
-} EFI_PLABEL;\r
-\r
-#include <IpfDefines.h>\r
-\r
-#endif\r
-\r
+++ /dev/null
-/** @file\r
- Main SAL API's defined in SAL 3.0 specification. \r
-\r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: SalApi.h\r
-\r
-**/\r
-\r
-#ifndef __SAL_API_H__\r
-#define __SAL_API_H__\r
-\r
-//\r
-// FIT Types \r
-// Table 2-2 of Intel Itanium Processor Family System Abstraction Layer Specification December 2003\r
-//\r
-#define EFI_SAL_FIT_FIT_HEADER_TYPE 0x00\r
-#define EFI_SAL_FIT_PAL_B_TYPE 0x01\r
-//\r
-// type from 0x02 to 0x0E is reserved.\r
-//\r
-#define EFI_SAL_FIT_PAL_A_TYPE 0x0F\r
-//\r
-// OEM-defined type range is from 0x10 to 0x7E. Here we defined the PEI_CORE type as 0x10\r
-//\r
-#define EFI_SAL_FIT_PEI_CORE_TYPE 0x10\r
-#define EFI_SAL_FIT_UNUSED_TYPE 0x7F\r
-\r
-//\r
-// EFI_SAL_STATUS \r
-//\r
-typedef UINTN EFI_SAL_STATUS;\r
-\r
-#define EFI_SAL_SUCCESS ((EFI_SAL_STATUS) 0)\r
-#define EFI_SAL_MORE_RECORDS ((EFI_SAL_STATUS) 3)\r
-#define EFI_SAL_NOT_IMPLEMENTED ((EFI_SAL_STATUS) - 1)\r
-#define EFI_SAL_INVALID_ARGUMENT ((EFI_SAL_STATUS) - 2)\r
-#define EFI_SAL_ERROR ((EFI_SAL_STATUS) - 3)\r
-#define EFI_SAL_VIRTUAL_ADDRESS_ERROR ((EFI_SAL_STATUS) - 4)\r
-#define EFI_SAL_NO_INFORMATION ((EFI_SAL_STATUS) - 5)\r
-#define EFI_SAL_NOT_ENOUGH_SCRATCH ((EFI_SAL_STATUS) - 9)\r
-\r
-//\r
-// Return values from SAL\r
-//\r
-typedef struct {\r
- EFI_SAL_STATUS Status; // register r8\r
- UINTN r9;\r
- UINTN r10;\r
- UINTN r11;\r
-} SAL_RETURN_REGS;\r
-\r
-//\r
-// Delivery Mode of IPF CPU.\r
-//\r
-typedef enum {\r
- EFI_DELIVERY_MODE_INT,\r
- EFI_DELIVERY_MODE_MPreserved1,\r
- EFI_DELIVERY_MODE_PMI,\r
- EFI_DELIVERY_MODE_MPreserved2,\r
- EFI_DELIVERY_MODE_NMI,\r
- EFI_DELIVERY_MODE_INIT,\r
- EFI_DELIVERY_MODE_MPreserved3,\r
- EFI_DELIVERY_MODE_ExtINT\r
-} EFI_DELIVERY_MODE;\r
-\r
-typedef SAL_RETURN_REGS (EFIAPI *SAL_PROC)\r
- (\r
- IN UINT64 FunctionId,\r
- IN UINT64 Arg2,\r
- IN UINT64 Arg3,\r
- IN UINT64 Arg4,\r
- IN UINT64 Arg5,\r
- IN UINT64 Arg6,\r
- IN UINT64 Arg7,\r
- IN UINT64 Arg8\r
- );\r
-\r
-//\r
-// SAL Procedure FunctionId definition\r
-//\r
-#define EFI_SAL_SET_VECTORS 0x01000000\r
-#define EFI_SAL_GET_STATE_INFO 0x01000001\r
-#define EFI_SAL_GET_STATE_INFO_SIZE 0x01000002\r
-#define EFI_SAL_CLEAR_STATE_INFO 0x01000003\r
-#define EFI_SAL_MC_RENDEZ 0x01000004\r
-#define EFI_SAL_MC_SET_PARAMS 0x01000005\r
-#define EFI_SAL_REGISTER_PHYSICAL_ADDR 0x01000006\r
-#define EFI_SAL_CACHE_FLUSH 0x01000008\r
-#define EFI_SAL_CACHE_INIT 0x01000009\r
-#define EFI_SAL_PCI_CONFIG_READ 0x01000010\r
-#define EFI_SAL_PCI_CONFIG_WRITE 0x01000011\r
-#define EFI_SAL_FREQ_BASE 0x01000012\r
-#define EFI_SAL_UPDATE_PAL 0x01000020\r
-\r
-#define EFI_SAL_FUNCTION_ID_MASK 0x0000ffff\r
-#define EFI_SAL_MAX_SAL_FUNCTION_ID 0x00000021\r
-\r
-//\r
-// SAL Procedure parameter definitions\r
-// Not much point in using typedefs or enums because all params\r
-// are UINT64 and the entry point is common\r
-//\r
-// EFI_SAL_SET_VECTORS\r
-//\r
-#define EFI_SAL_SET_MCA_VECTOR 0x0\r
-#define EFI_SAL_SET_INIT_VECTOR 0x1\r
-#define EFI_SAL_SET_BOOT_RENDEZ_VECTOR 0x2\r
-\r
-typedef struct {\r
- UINT64 Length : 32;\r
- UINT64 ChecksumValid : 1;\r
- UINT64 Reserved1 : 7;\r
- UINT64 ByteChecksum : 8;\r
- UINT64 Reserved2 : 16;\r
-} SAL_SET_VECTORS_CS_N;\r
-\r
-//\r
-// EFI_SAL_GET_STATE_INFO, EFI_SAL_GET_STATE_INFO_SIZE,\r
-// EFI_SAL_CLEAR_STATE_INFO\r
-//\r
-#define EFI_SAL_MCA_STATE_INFO 0x0\r
-#define EFI_SAL_INIT_STATE_INFO 0x1\r
-#define EFI_SAL_CMC_STATE_INFO 0x2\r
-#define EFI_SAL_CP_STATE_INFO 0x3\r
-\r
-//\r
-// EFI_SAL_MC_SET_PARAMS\r
-//\r
-#define EFI_SAL_MC_SET_RENDEZ_PARAM 0x1\r
-#define EFI_SAL_MC_SET_WAKEUP_PARAM 0x2\r
-#define EFI_SAL_MC_SET_CPE_PARAM 0x3\r
-\r
-#define EFI_SAL_MC_SET_INTR_PARAM 0x1\r
-#define EFI_SAL_MC_SET_MEM_PARAM 0x2\r
-\r
-//\r
-// EFI_SAL_REGISTER_PAL_PHYSICAL_ADDR\r
-//\r
-#define EFI_SAL_REGISTER_PAL_ADDR 0x0\r
-\r
-//\r
-// EFI_SAL_CACHE_FLUSH\r
-//\r
-#define EFI_SAL_FLUSH_I_CACHE 0x01\r
-#define EFI_SAL_FLUSH_D_CACHE 0x02\r
-#define EFI_SAL_FLUSH_BOTH_CACHE 0x03\r
-#define EFI_SAL_FLUSH_MAKE_COHERENT 0x04\r
-\r
-//\r
-// EFI_SAL_PCI_CONFIG_READ, EFI_SAL_PCI_CONFIG_WRITE\r
-//\r
-#define EFI_SAL_PCI_CONFIG_ONE_BYTE 0x1\r
-#define EFI_SAL_PCI_CONFIG_TWO_BYTES 0x2\r
-#define EFI_SAL_PCI_CONFIG_FOUR_BYTES 0x4\r
-\r
-typedef struct {\r
- UINT64 Register : 8;\r
- UINT64 Function : 3;\r
- UINT64 Device : 5;\r
- UINT64 Bus : 8;\r
- UINT64 Segment : 8;\r
- UINT64 Reserved : 32;\r
-} SAL_PCI_ADDRESS;\r
-\r
-//\r
-// EFI_SAL_FREQ_BASE\r
-//\r
-#define EFI_SAL_CPU_INPUT_FREQ_BASE 0x0\r
-#define EFI_SAL_PLATFORM_IT_FREQ_BASE 0x1\r
-#define EFI_SAL_PLATFORM_RTC_FREQ_BASE 0x2\r
-\r
-//\r
-// EFI_SAL_UPDATE_PAL\r
-//\r
-#define EFI_SAL_UPDATE_BAD_PAL_VERSION ((UINT64) -1)\r
-#define EFI_SAL_UPDATE_PAL_AUTH_FAIL ((UINT64) -2)\r
-#define EFI_SAL_UPDATE_PAL_BAD_TYPE ((UINT64) -3)\r
-#define EFI_SAL_UPDATE_PAL_READONLY ((UINT64) -4)\r
-#define EFI_SAL_UPDATE_PAL_WRITE_FAIL ((UINT64) -10)\r
-#define EFI_SAL_UPDATE_PAL_ERASE_FAIL ((UINT64) -11)\r
-#define EFI_SAL_UPDATE_PAL_READ_FAIL ((UINT64) -12)\r
-#define EFI_SAL_UPDATE_PAL_CANT_FIT ((UINT64) -13)\r
-\r
-typedef struct {\r
- UINT32 Size;\r
- UINT32 MmddyyyyDate;\r
- UINT16 Version;\r
- UINT8 Type;\r
- UINT8 Reserved[5];\r
- UINT64 FwVendorId;\r
-} SAL_UPDATE_PAL_DATA_BLOCK;\r
-\r
-typedef struct _SAL_UPDATE_PAL_INFO_BLOCK {\r
- struct _SAL_UPDATE_PAL_INFO_BLOCK *Next;\r
- struct SAL_UPDATE_PAL_DATA_BLOCK *DataBlock;\r
- UINT8 StoreChecksum;\r
- UINT8 Reserved[15];\r
-} SAL_UPDATE_PAL_INFO_BLOCK;\r
-\r
-//\r
-// SAL System Table Definitions\r
-//\r
-#pragma pack(1)\r
-typedef struct {\r
- UINT32 Signature;\r
- UINT32 Length;\r
- UINT16 SalRevision;\r
- UINT16 EntryCount;\r
- UINT8 CheckSum;\r
- UINT8 Reserved[7];\r
- UINT16 SalAVersion;\r
- UINT16 SalBVersion;\r
- UINT8 OemId[32];\r
- UINT8 ProductId[32];\r
- UINT8 Reserved2[8];\r
-} SAL_SYSTEM_TABLE_HEADER;\r
-#pragma pack()\r
-\r
-#define EFI_SAL_ST_HEADER_SIGNATURE "SST_"\r
-#define EFI_SAL_REVISION 0x0300\r
-//\r
-// SAL System Types\r
-//\r
-#define EFI_SAL_ST_ENTRY_POINT 0\r
-#define EFI_SAL_ST_MEMORY_DESCRIPTOR 1\r
-#define EFI_SAL_ST_PLATFORM_FEATURES 2\r
-#define EFI_SAL_ST_TR_USAGE 3\r
-#define EFI_SAL_ST_PTC 4\r
-#define EFI_SAL_ST_AP_WAKEUP 5\r
-\r
-#pragma pack(1)\r
-typedef struct {\r
- UINT8 Type; // Type == 0\r
- UINT8 Reserved[7];\r
- UINT64 PalProcEntry;\r
- UINT64 SalProcEntry;\r
- UINT64 SalGlobalDataPointer;\r
- UINT64 Reserved2[2];\r
-} SAL_ST_ENTRY_POINT_DESCRIPTOR;\r
-\r
-//\r
-// Not needed for Itanium-based OS boot\r
-//\r
-typedef struct {\r
- UINT8 Type; // Type == 1\r
- UINT8 NeedVirtualRegistration;\r
- UINT8 MemoryAttributes;\r
- UINT8 PageAccessRights;\r
- UINT8 SupportedAttributes;\r
- UINT8 Reserved;\r
- UINT8 MemoryType;\r
- UINT8 MemoryUsage;\r
- UINT64 PhysicalMemoryAddress;\r
- UINT32 Length;\r
- UINT32 Reserved1;\r
- UINT64 OemReserved;\r
-} SAL_ST_MEMORY_DESCRIPTOR_ENTRY;\r
-\r
-#pragma pack()\r
-//\r
-// Memory Attributes\r
-//\r
-#define SAL_MDT_ATTRIB_WB 0x00\r
-//\r
-// #define SAL_MDT_ATTRIB_UC 0x02\r
-//\r
-#define SAL_MDT_ATTRIB_UC 0x04\r
-#define SAL_MDT_ATTRIB_UCE 0x05\r
-#define SAL_MDT_ATTRIB_WC 0x06\r
-\r
-//\r
-// Supported memory Attributes\r
-//\r
-#define SAL_MDT_SUPPORT_WB 0x1\r
-#define SAL_MDT_SUPPORT_UC 0x2\r
-#define SAL_MDT_SUPPORT_UCE 0x4\r
-#define SAL_MDT_SUPPORT_WC 0x8\r
-\r
-//\r
-// Virtual address registration\r
-//\r
-#define SAL_MDT_NO_VA 0x00\r
-#define SAL_MDT_NEED_VA 0x01\r
-//\r
-// MemoryType info\r
-//\r
-#define SAL_REGULAR_MEMORY 0x0000\r
-#define SAL_MMIO_MAPPING 0x0001\r
-#define SAL_SAPIC_IPI_BLOCK 0x0002\r
-#define SAL_IO_PORT_MAPPING 0x0003\r
-#define SAL_FIRMWARE_MEMORY 0x0004\r
-#define SAL_BLACK_HOLE 0x000A\r
-//\r
-// Memory Usage info\r
-//\r
-#define SAL_MDT_USAGE_UNSPECIFIED 0x00\r
-#define SAL_PAL_CODE 0x01\r
-#define SAL_BOOTSERVICE_CODE 0x02\r
-#define SAL_BOOTSERVICE_DATA 0x03\r
-#define SAL_RUNTIMESERVICE_CODE 0x04\r
-#define SAL_RUNTIMESERVICE_DATA 0x05\r
-#define SAL_IA32_OPTIONROM 0x06\r
-#define SAL_IA32_SYSTEMROM 0x07\r
-#define SAL_PMI_CODE 0x0a\r
-#define SAL_PMI_DATA 0x0b\r
-\r
-#pragma pack(1)\r
-typedef struct {\r
- UINT8 Type; // Type == 2\r
- UINT8 PlatformFeatures;\r
- UINT8 Reserved[14];\r
-} SAL_ST_PLATFORM_FEATURES;\r
-#pragma pack()\r
-\r
-#define SAL_PLAT_FEAT_BUS_LOCK 0x01\r
-#define SAL_PLAT_FEAT_PLAT_IPI_HINT 0x02\r
-#define SAL_PLAT_FEAT_PROC_IPI_HINT 0x04\r
-\r
-#pragma pack(1)\r
-typedef struct {\r
- UINT8 Type; // Type == 3\r
- UINT8 TRType;\r
- UINT8 TRNumber;\r
- UINT8 Reserved[5];\r
- UINT64 VirtualAddress;\r
- UINT64 EncodedPageSize;\r
- UINT64 Reserved1;\r
-} SAL_ST_TR_DECRIPTOR;\r
-#pragma pack()\r
-\r
-#define EFI_SAL_ST_TR_USAGE_INSTRUCTION 00\r
-#define EFI_SAL_ST_TR_USAGE_DATA 01\r
-\r
-#pragma pack(1)\r
-typedef struct {\r
- UINT64 NumberOfProcessors;\r
- UINT64 LocalIDRegister;\r
-} SAL_COHERENCE_DOMAIN_INFO;\r
-#pragma pack()\r
-\r
-#pragma pack(1)\r
-typedef struct {\r
- UINT8 Type; // Type == 4\r
- UINT8 Reserved[3];\r
- UINT32 NumberOfDomains;\r
- SAL_COHERENCE_DOMAIN_INFO *DomainInformation;\r
-} SAL_ST_CACHE_COHERENCE_DECRIPTOR;\r
-#pragma pack()\r
-\r
-#pragma pack(1)\r
-typedef struct {\r
- UINT8 Type; // Type == 5\r
- UINT8 WakeUpType;\r
- UINT8 Reserved[6];\r
- UINT64 ExternalInterruptVector;\r
-} SAL_ST_AP_WAKEUP_DECRIPTOR;\r
-#pragma pack()\r
-//\r
-// FIT Entry\r
-//\r
-#define EFI_SAL_FIT_ENTRY_PTR (0x100000000 - 32) // 4GB - 24\r
-#define EFI_SAL_FIT_PALA_ENTRY (0x100000000 - 48) // 4GB - 32\r
-#define EFI_SAL_FIT_PALB_TYPE 01\r
-\r
-typedef struct {\r
- UINT64 Address;\r
- UINT8 Size[3];\r
- UINT8 Reserved;\r
- UINT16 Revision;\r
- UINT8 Type : 7;\r
- UINT8 CheckSumValid : 1;\r
- UINT8 CheckSum;\r
-} EFI_SAL_FIT_ENTRY;\r
-\r
-//\r
-// SAL Common Record Header\r
-//\r
-typedef struct {\r
- UINT16 Length;\r
- UINT8 Data[1024];\r
-} SAL_OEM_DATA;\r
-\r
-typedef struct {\r
- UINT8 Seconds;\r
- UINT8 Minutes;\r
- UINT8 Hours;\r
- UINT8 Reserved;\r
- UINT8 Day;\r
- UINT8 Month;\r
- UINT8 Year;\r
- UINT8 Century;\r
-} SAL_TIME_STAMP;\r
-\r
-typedef struct {\r
- UINT64 RecordId;\r
- UINT16 Revision;\r
- UINT8 ErrorSeverity;\r
- UINT8 ValidationBits;\r
- UINT32 RecordLength;\r
- SAL_TIME_STAMP TimeStamp;\r
- UINT8 OemPlatformId[16];\r
-} SAL_RECORD_HEADER;\r
-\r
-typedef struct {\r
- GUID Guid;\r
- UINT16 Revision;\r
- UINT8 ErrorRecoveryInfo;\r
- UINT8 Reserved;\r
- UINT32 SectionLength;\r
-} SAL_SEC_HEADER;\r
-\r
-//\r
-// SAL Processor Record\r
-//\r
-#define SAL_PROCESSOR_ERROR_RECORD_INFO \\r
- { \\r
- 0xe429faf1, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
- }\r
-\r
-#define CHECK_INFO_VALID_BIT_MASK 0x1\r
-#define REQUESTOR_ID_VALID_BIT_MASK 0x2\r
-#define RESPONDER_ID_VALID_BIT_MASK 0x4\r
-#define TARGER_ID_VALID_BIT_MASK 0x8\r
-#define PRECISE_IP_VALID_BIT_MASK 0x10\r
-\r
-typedef struct {\r
- UINT64 InfoValid : 1;\r
- UINT64 ReqValid : 1;\r
- UINT64 RespValid : 1;\r
- UINT64 TargetValid : 1;\r
- UINT64 IpValid : 1;\r
- UINT64 Reserved : 59;\r
- UINT64 Info;\r
- UINT64 Req;\r
- UINT64 Resp;\r
- UINT64 Target;\r
- UINT64 Ip;\r
-} MOD_ERROR_INFO;\r
-\r
-typedef struct {\r
- UINT8 CpuidInfo[40];\r
- UINT8 Reserved;\r
-} CPUID_INFO;\r
-\r
-typedef struct {\r
- UINT64 FrLow;\r
- UINT64 FrHigh;\r
-} FR_STRUCT;\r
-\r
-#define MIN_STATE_VALID_BIT_MASK 0x1\r
-#define BR_VALID_BIT_MASK 0x2\r
-#define CR_VALID_BIT_MASK 0x4\r
-#define AR_VALID_BIT_MASK 0x8\r
-#define RR_VALID_BIT_MASK 0x10\r
-#define FR_VALID_BIT_MASK 0x20\r
-\r
-typedef struct {\r
- UINT64 ValidFieldBits;\r
- UINT8 MinStateInfo[1024];\r
- UINT64 Br[8];\r
- UINT64 Cr[128];\r
- UINT64 Ar[128];\r
- UINT64 Rr[8];\r
- FR_STRUCT Fr[128];\r
-} PSI_STATIC_STRUCT;\r
-\r
-#define PROC_ERROR_MAP_VALID_BIT_MASK 0x1\r
-#define PROC_STATE_PARAMETER_VALID_BIT_MASK 0x2\r
-#define PROC_CR_LID_VALID_BIT_MASK 0x4\r
-#define PROC_STATIC_STRUCT_VALID_BIT_MASK 0x8\r
-#define CPU_INFO_VALID_BIT_MASK 0x1000000\r
-\r
-typedef struct {\r
- SAL_SEC_HEADER SectionHeader;\r
- UINT64 ValidationBits;\r
- UINT64 ProcErrorMap;\r
- UINT64 ProcStateParameter;\r
- UINT64 ProcCrLid;\r
- MOD_ERROR_INFO CacheError[15];\r
- MOD_ERROR_INFO TlbError[15];\r
- MOD_ERROR_INFO BusError[15];\r
- MOD_ERROR_INFO RegFileCheck[15];\r
- MOD_ERROR_INFO MsCheck[15];\r
- CPUID_INFO CpuInfo;\r
- PSI_STATIC_STRUCT PsiValidData;\r
-} SAL_PROCESSOR_ERROR_RECORD;\r
-\r
-//\r
-// Sal Platform memory Error Record\r
-//\r
-#define SAL_MEMORY_ERROR_RECORD_INFO \\r
- { \\r
- 0xe429faf2, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
- }\r
-\r
-#define MEMORY_ERROR_STATUS_VALID_BIT_MASK 0x1\r
-#define MEMORY_PHYSICAL_ADDRESS_VALID_BIT_MASK 0x2\r
-#define MEMORY_ADDR_BIT_MASK 0x4\r
-#define MEMORY_NODE_VALID_BIT_MASK 0x8\r
-#define MEMORY_CARD_VALID_BIT_MASK 0x10\r
-#define MEMORY_MODULE_VALID_BIT_MASK 0x20\r
-#define MEMORY_BANK_VALID_BIT_MASK 0x40\r
-#define MEMORY_DEVICE_VALID_BIT_MASK 0x80\r
-#define MEMORY_ROW_VALID_BIT_MASK 0x100\r
-#define MEMORY_COLUMN_VALID_BIT_MASK 0x200\r
-#define MEMORY_BIT_POSITION_VALID_BIT_MASK 0x400\r
-#define MEMORY_PLATFORM_REQUESTOR_ID_VALID_BIT_MASK 0x800\r
-#define MEMORY_PLATFORM_RESPONDER_ID_VALID_BIT_MASK 0x1000\r
-#define MEMORY_PLATFORM_TARGET_VALID_BIT_MASK 0x2000\r
-#define MEMORY_PLATFORM_BUS_SPECIFIC_DATA_VALID_BIT_MASK 0x4000\r
-#define MEMORY_PLATFORM_OEM_ID_VALID_BIT_MASK 0x8000\r
-#define MEMORY_PLATFORM_OEM_DATA_STRUCT_VALID_BIT_MASK 0x10000\r
-\r
-typedef struct {\r
- SAL_SEC_HEADER SectionHeader;\r
- UINT64 ValidationBits;\r
- UINT64 MemErrorStatus;\r
- UINT64 MemPhysicalAddress;\r
- UINT64 MemPhysicalAddressMask;\r
- UINT16 MemNode;\r
- UINT16 MemCard;\r
- UINT16 MemModule;\r
- UINT16 MemBank;\r
- UINT16 MemDevice;\r
- UINT16 MemRow;\r
- UINT16 MemColumn;\r
- UINT16 MemBitPosition;\r
- UINT64 ModRequestorId;\r
- UINT64 ModResponderId;\r
- UINT64 ModTargetId;\r
- UINT64 BusSpecificData;\r
- UINT8 MemPlatformOemId[16];\r
-} SAL_MEMORY_ERROR_RECORD;\r
-\r
-//\r
-// PCI BUS Errors\r
-//\r
-#define SAL_PCI_BUS_ERROR_RECORD_INFO \\r
- { \\r
- 0xe429faf4, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
- }\r
-\r
-#define PCI_BUS_ERROR_STATUS_VALID_BIT_MASK 0x1\r
-#define PCI_BUS_ERROR_TYPE_VALID_BIT_MASK 0x2\r
-#define PCI_BUS_ID_VALID_BIT_MASK 0x4\r
-#define PCI_BUS_ADDRESS_VALID_BIT_MASK 0x8\r
-#define PCI_BUS_DATA_VALID_BIT_MASK 0x10\r
-#define PCI_BUS_CMD_VALID_BIT_MASK 0x20\r
-#define PCI_BUS_REQUESTOR_ID_VALID_BIT_MASK 0x40\r
-#define PCI_BUS_RESPONDER_ID_VALID_BIT_MASK 0x80\r
-#define PCI_BUS_TARGET_VALID_BIT_MASK 0x100\r
-#define PCI_BUS_OEM_ID_VALID_BIT_MASK 0x200\r
-#define PCI_BUS_OEM_DATA_STRUCT_VALID_BIT_MASK 0x400\r
-\r
-typedef struct {\r
- UINT8 BusNumber;\r
- UINT8 SegmentNumber;\r
-} PCI_BUS_ID;\r
-\r
-typedef struct {\r
- SAL_SEC_HEADER SectionHeader;\r
- UINT64 ValidationBits;\r
- UINT64 PciBusErrorStatus;\r
- UINT16 PciBusErrorType;\r
- PCI_BUS_ID PciBusId;\r
- UINT32 Reserved;\r
- UINT64 PciBusAddress;\r
- UINT64 PciBusData;\r
- UINT64 PciBusCommand;\r
- UINT64 PciBusRequestorId;\r
- UINT64 PciBusResponderId;\r
- UINT64 PciBusTargetId;\r
- UINT8 PciBusOemId[16];\r
-} SAL_PCI_BUS_ERROR_RECORD;\r
-\r
-//\r
-// PCI Component Errors\r
-//\r
-#define SAL_PCI_COMP_ERROR_RECORD_INFO \\r
- { \\r
- 0xe429faf6, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
- }\r
-\r
-#define PCI_COMP_ERROR_STATUS_VALID_BIT_MASK 0x1\r
-#define PCI_COMP_INFO_VALID_BIT_MASK 0x2\r
-#define PCI_COMP_MEM_NUM_VALID_BIT_MASK 0x4\r
-#define PCI_COMP_IO_NUM_VALID_BIT_MASK 0x8\r
-#define PCI_COMP_REG_DATA_PAIR_VALID_BIT_MASK 0x10\r
-#define PCI_COMP_OEM_DATA_STRUCT_VALID_BIT_MASK 0x20\r
-\r
-typedef struct {\r
- UINT16 VendorId;\r
- UINT16 DeviceId;\r
- UINT8 ClassCode[3];\r
- UINT8 FunctionNumber;\r
- UINT8 DeviceNumber;\r
- UINT8 BusNumber;\r
- UINT8 SegmentNumber;\r
- UINT8 Reserved[5];\r
-} PCI_COMP_INFO;\r
-\r
-typedef struct {\r
- SAL_SEC_HEADER SectionHeader;\r
- UINT64 ValidationBits;\r
- UINT64 PciComponentErrorStatus;\r
- PCI_COMP_INFO PciComponentInfo;\r
- UINT32 PciComponentMemNum;\r
- UINT32 PciComponentIoNum;\r
- UINT8 PciBusOemId[16];\r
-} SAL_PCI_COMPONENT_ERROR_RECORD;\r
-\r
-//\r
-// Sal Device Errors Info.\r
-//\r
-#define SAL_DEVICE_ERROR_RECORD_INFO \\r
- { \\r
- 0xe429faf3, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
- }\r
-\r
-#define SEL_RECORD_ID_VALID_BIT_MASK 0x1;\r
-#define SEL_RECORD_TYPE_VALID_BIT_MASK 0x2;\r
-#define SEL_GENERATOR_ID_VALID_BIT_MASK 0x4;\r
-#define SEL_EVM_REV_VALID_BIT_MASK 0x8;\r
-#define SEL_SENSOR_TYPE_VALID_BIT_MASK 0x10;\r
-#define SEL_SENSOR_NUM_VALID_BIT_MASK 0x20;\r
-#define SEL_EVENT_DIR_TYPE_VALID_BIT_MASK 0x40;\r
-#define SEL_EVENT_DATA1_VALID_BIT_MASK 0x80;\r
-#define SEL_EVENT_DATA2_VALID_BIT_MASK 0x100;\r
-#define SEL_EVENT_DATA3_VALID_BIT_MASK 0x200;\r
-\r
-typedef struct {\r
- SAL_SEC_HEADER SectionHeader;\r
- UINT64 ValidationBits;\r
- UINT16 SelRecordId;\r
- UINT8 SelRecordType;\r
- UINT32 TimeStamp;\r
- UINT16 GeneratorId;\r
- UINT8 EvmRevision;\r
- UINT8 SensorType;\r
- UINT8 SensorNum;\r
- UINT8 EventDirType;\r
- UINT8 Data1;\r
- UINT8 Data2;\r
- UINT8 Data3;\r
-} SAL_DEVICE_ERROR_RECORD;\r
-\r
-//\r
-// Sal SMBIOS Device Errors Info.\r
-//\r
-#define SAL_SMBIOS_ERROR_RECORD_INFO \\r
- { \\r
- 0xe429faf5, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
- }\r
-\r
-#define SMBIOS_EVENT_TYPE_VALID_BIT_MASK 0x1\r
-#define SMBIOS_LENGTH_VALID_BIT_MASK 0x2\r
-#define SMBIOS_TIME_STAMP_VALID_BIT_MASK 0x4\r
-#define SMBIOS_DATA_VALID_BIT_MASK 0x8\r
-\r
-typedef struct {\r
- SAL_SEC_HEADER SectionHeader;\r
- UINT64 ValidationBits;\r
- UINT8 SmbiosEventType;\r
- UINT8 SmbiosLength;\r
- UINT8 SmbiosBcdTimeStamp[6];\r
-} SAL_SMBIOS_DEVICE_ERROR_RECORD;\r
-\r
-//\r
-// Sal Platform Specific Errors Info.\r
-//\r
-#define SAL_PLATFORM_ERROR_RECORD_INFO \\r
- { \\r
- 0xe429faf7, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
- }\r
-\r
-#define PLATFORM_ERROR_STATUS_VALID_BIT_MASK 0x1\r
-#define PLATFORM_REQUESTOR_ID_VALID_BIT_MASK 0x2\r
-#define PLATFORM_RESPONDER_ID_VALID_BIT_MASK 0x4\r
-#define PLATFORM_TARGET_VALID_BIT_MASK 0x8\r
-#define PLATFORM_SPECIFIC_DATA_VALID_BIT_MASK 0x10\r
-#define PLATFORM_OEM_ID_VALID_BIT_MASK 0x20\r
-#define PLATFORM_OEM_DATA_STRUCT_VALID_BIT_MASK 0x40\r
-#define PLATFORM_OEM_DEVICE_PATH_VALID_BIT_MASK 0x80\r
-\r
-typedef struct {\r
- SAL_SEC_HEADER SectionHeader;\r
- UINT64 ValidationBits;\r
- UINT64 PlatformErrorStatus;\r
- UINT64 PlatformRequestorId;\r
- UINT64 PlatformResponderId;\r
- UINT64 PlatformTargetId;\r
- UINT64 PlatformBusSpecificData;\r
- UINT8 OemComponentId[16];\r
-} SAL_PLATFORM_SPECIFIC_ERROR_RECORD;\r
-\r
-//\r
-// Union of all the possible Sal Record Types\r
-//\r
-typedef union {\r
- SAL_RECORD_HEADER *RecordHeader;\r
- SAL_PROCESSOR_ERROR_RECORD *SalProcessorRecord;\r
- SAL_PCI_BUS_ERROR_RECORD *SalPciBusRecord;\r
- SAL_PCI_COMPONENT_ERROR_RECORD *SalPciComponentRecord;\r
- SAL_DEVICE_ERROR_RECORD *ImpiRecord;\r
- SAL_SMBIOS_DEVICE_ERROR_RECORD *SmbiosRecord;\r
- SAL_PLATFORM_SPECIFIC_ERROR_RECORD *PlatformRecord;\r
- SAL_MEMORY_ERROR_RECORD *MemoryRecord;\r
- UINT8 *Raw;\r
-} SAL_ERROR_RECORDS_POINTERS;\r
-\r
-#pragma pack()\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- Present the boot mode values in PI.\r
-\r
- Copyright (c) 2006 - 2007, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: PiBootMode.h\r
-\r
- @par Revision Reference:\r
- Version 1.0.\r
-\r
-**/\r
-\r
-#ifndef __PI_BOOT_MODE_H__\r
-#define __PI_BOOT_MODE_H__\r
-\r
-typedef UINT32 EFI_BOOT_MODE;\r
-\r
-//\r
-// 0x21 - 0xf..f are reserved.\r
-// \r
-#define BOOT_WITH_FULL_CONFIGURATION 0x00\r
-#define BOOT_WITH_MINIMAL_CONFIGURATION 0x01\r
-#define BOOT_ASSUMING_NO_CONFIGURATION_CHANGES 0x02\r
-#define BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS 0x03\r
-#define BOOT_WITH_DEFAULT_SETTINGS 0x04\r
-#define BOOT_ON_S4_RESUME 0x05\r
-#define BOOT_ON_S5_RESUME 0x06\r
-#define BOOT_ON_S2_RESUME 0x10\r
-#define BOOT_ON_S3_RESUME 0x11\r
-#define BOOT_ON_FLASH_UPDATE 0x12\r
-#define BOOT_IN_RECOVERY_MODE 0x20\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- Present the dependency expression values in PI.\r
-\r
- Copyright (c) 2006 - 2007, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: PiDependency.h\r
-\r
- @par Revision Reference:\r
- Version 1.0.\r
-\r
-**/\r
-#ifndef __PI_DEPENDENCY_H__\r
-#define __PI_DEPENDENCY_H__\r
-\r
-// \r
-// If present, this must be the first and only opcode\r
-// \r
-#define EFI_DEP_BEFORE 0x00\r
-\r
-// \r
-// If present, this must be the first and only opcode\r
-// \r
-#define EFI_DEP_AFTER 0x01\r
-\r
-#define EFI_DEP_PUSH 0x02\r
-#define EFI_DEP_AND 0x03\r
-#define EFI_DEP_OR 0x04\r
-#define EFI_DEP_NOT 0x05\r
-#define EFI_DEP_TRUE 0x06\r
-#define EFI_DEP_FALSE 0x07\r
-#define EFI_DEP_END 0x08\r
-\r
-\r
-// \r
-// If present, this must be the first opcode.\r
-// \r
-#define EFI_DEP_SOR 0x09\r
-\r
-#endif \r
+++ /dev/null
-/** @file\r
- Include file matches things in PI.\r
-\r
- Copyright (c) 2006 - 2007, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: PiDxeCis.h\r
-\r
- @par Revision Reference:\r
- Version 1.0.\r
-\r
-**/\r
-\r
-#ifndef __PI_DXECIS_H__\r
-#define __PI_DXECIS_H__\r
-\r
-#include <Pi/PiMultiPhase.h>\r
-\r
-//\r
-// Global Coherencey Domain types\r
-//\r
-typedef enum {\r
- EfiGcdMemoryTypeNonExistent,\r
- EfiGcdMemoryTypeReserved,\r
- EfiGcdMemoryTypeSystemMemory,\r
- EfiGcdMemoryTypeMemoryMappedIo,\r
- EfiGcdMemoryTypeMaximum\r
-} EFI_GCD_MEMORY_TYPE;\r
-\r
-\r
-typedef enum {\r
- EfiGcdIoTypeNonExistent,\r
- EfiGcdIoTypeReserved,\r
- EfiGcdIoTypeIo,\r
- EfiGcdIoTypeMaximum\r
-} EFI_GCD_IO_TYPE;\r
-\r
-\r
-typedef enum {\r
- EfiGcdAllocateAnySearchBottomUp,\r
- EfiGcdAllocateMaxAddressSearchBottomUp,\r
- EfiGcdAllocateAddress,\r
- EfiGcdAllocateAnySearchTopDown,\r
- EfiGcdAllocateMaxAddressSearchTopDown,\r
- EfiGcdMaxAllocateType\r
-} EFI_GCD_ALLOCATE_TYPE;\r
-\r
-\r
-typedef struct {\r
- EFI_PHYSICAL_ADDRESS BaseAddress;\r
- UINT64 Length;\r
- UINT64 Capabilities;\r
- UINT64 Attributes;\r
- EFI_GCD_MEMORY_TYPE GcdMemoryType;\r
- EFI_HANDLE ImageHandle;\r
- EFI_HANDLE DeviceHandle;\r
-} EFI_GCD_MEMORY_SPACE_DESCRIPTOR;\r
-\r
-\r
-typedef struct {\r
- EFI_PHYSICAL_ADDRESS BaseAddress;\r
- UINT64 Length;\r
- EFI_GCD_IO_TYPE GcdIoType;\r
- EFI_HANDLE ImageHandle;\r
- EFI_HANDLE DeviceHandle;\r
-} EFI_GCD_IO_SPACE_DESCRIPTOR;\r
-\r
-\r
-/**\r
- Adds reserved memory, system memory, or memory-mapped I/O resources to the\r
- global coherency domain of the processor.\r
-\r
- @param GcdMemoryType Memory type of the memory space.\r
- @param BaseAddress Base address of the memory space.\r
- @param Length Length of the memory space.\r
- @param Capabilities alterable attributes of the memory space.\r
-\r
- @retval EFI_SUCCESS Merged this memory space into GCD map.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ADD_MEMORY_SPACE) (\r
- IN EFI_GCD_MEMORY_TYPE GcdMemoryType,\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN UINT64 Capabilities\r
- )\r
-;\r
-\r
-/**\r
- Allocates nonexistent memory, reserved memory, system memory, or memorymapped\r
- I/O resources from the global coherency domain of the processor.\r
-\r
- @param GcdAllocateType The type of allocate operation\r
- @param GcdMemoryType The desired memory type\r
- @param Alignment Align with 2^Alignment\r
- @param Length Length to allocate\r
- @param BaseAddress Base address to allocate\r
- @param Imagehandle The image handle consume the allocated space.\r
- @param DeviceHandle The device handle consume the allocated space.\r
-\r
- @retval EFI_INVALID_PARAMETER Invalid parameter.\r
- @retval EFI_NOT_FOUND No descriptor contains the desired space.\r
- @retval EFI_SUCCESS Memory space successfully allocated.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ALLOCATE_MEMORY_SPACE) (\r
- IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType,\r
- IN EFI_GCD_MEMORY_TYPE GcdMemoryType,\r
- IN UINTN Alignment,\r
- IN UINT64 Length,\r
- IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress,\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_HANDLE DeviceHandle OPTIONAL\r
- )\r
-;\r
-\r
-/**\r
- Frees nonexistent memory, reserved memory, system memory, or memory-mapped\r
- I/O resources from the global coherency domain of the processor.\r
-\r
- @param BaseAddress Base address of the segment.\r
- @param Length Length of the segment.\r
-\r
- @retval EFI_SUCCESS Space successfully freed.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FREE_MEMORY_SPACE) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-;\r
-\r
-/**\r
- Removes reserved memory, system memory, or memory-mapped I/O resources from\r
- the global coherency domain of the processor.\r
-\r
- @param BaseAddress Base address of the memory space.\r
- @param Length Length of the memory space.\r
-\r
- @retval EFI_SUCCESS Successfully remove a segment of memory space.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_REMOVE_MEMORY_SPACE) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-;\r
-\r
-/**\r
- Retrieves the descriptor for a memory region containing a specified address.\r
-\r
- @param BaseAddress Specified start address\r
- @param Descriptor Specified length\r
-\r
- @retval EFI_INVALID_PARAMETER Invalid parameter\r
- @retval EFI_SUCCESS Successfully get memory space descriptor.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_GET_MEMORY_SPACE_DESCRIPTOR) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Descriptor\r
- )\r
-;\r
-\r
-/**\r
- Modifies the attributes for a memory region in the global coherency domain of the\r
- processor.\r
-\r
- @param BaseAddress Specified start address\r
- @param Length Specified length\r
- @param Attributes Specified attributes\r
-\r
- @retval EFI_SUCCESS Successfully set attribute of a segment of memory space.\r
-\r
-**/\r
-typedef\r
-\r
-EFI_STATUS\r
-(EFIAPI *EFI_SET_MEMORY_SPACE_ATTRIBUTES) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN UINT64 Attributes\r
- )\r
-;\r
-\r
-/**\r
- Returns a map of the memory resources in the global coherency domain of the\r
- processor.\r
-\r
- @param NumberOfDescriptors Number of descriptors.\r
- @param MemorySpaceMap Descriptor array\r
-\r
- @retval EFI_INVALID_PARAMETER Invalid parameter\r
- @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate\r
- @retval EFI_SUCCESS Successfully get memory space map.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_GET_MEMORY_SPACE_MAP) (\r
- OUT UINTN *NumberOfDescriptors,\r
- OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR **MemorySpaceMap\r
- )\r
-;\r
-\r
-/**\r
- Adds reserved I/O or I/O resources to the global coherency domain of the processor.\r
-\r
- @param GcdIoType IO type of the segment.\r
- @param BaseAddress Base address of the segment.\r
- @param Length Length of the segment.\r
-\r
- @retval EFI_SUCCESS Merged this segment into GCD map.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ADD_IO_SPACE) (\r
- IN EFI_GCD_IO_TYPE GcdIoType,\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-;\r
-\r
-/**\r
- Allocates nonexistent I/O, reserved I/O, or I/O resources from the global coherency\r
- domain of the processor.\r
-\r
- @param GcdAllocateType The type of allocate operation\r
- @param GcdIoType The desired IO type\r
- @param Alignment Align with 2^Alignment\r
- @param Length Length to allocate\r
- @param BaseAddress Base address to allocate\r
- @param Imagehandle The image handle consume the allocated space.\r
- @param DeviceHandle The device handle consume the allocated space.\r
-\r
- @retval EFI_INVALID_PARAMETER Invalid parameter.\r
- @retval EFI_NOT_FOUND No descriptor contains the desired space.\r
- @retval EFI_SUCCESS IO space successfully allocated.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ALLOCATE_IO_SPACE) (\r
- IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType,\r
- IN EFI_GCD_IO_TYPE GcdIoType,\r
- IN UINTN Alignment,\r
- IN UINT64 Length,\r
- IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress,\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_HANDLE DeviceHandle OPTIONAL\r
- )\r
-;\r
-\r
-/**\r
- Frees nonexistent I/O, reserved I/O, or I/O resources from the global coherency\r
- domain of the processor.\r
-\r
- @param BaseAddress Base address of the segment.\r
- @param Length Length of the segment.\r
-\r
- @retval EFI_SUCCESS Space successfully freed.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FREE_IO_SPACE) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-;\r
-\r
-/**\r
- Removes reserved I/O or I/O resources from the global coherency domain of the\r
- processor.\r
-\r
- @param BaseAddress Base address of the segment.\r
- @param Length Length of the segment.\r
-\r
- @retval EFI_SUCCESS Successfully removed a segment of IO space.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_REMOVE_IO_SPACE) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-;\r
-\r
-/**\r
- Retrieves the descriptor for an I/O region containing a specified address.\r
-\r
- @param BaseAddress Specified start address\r
- @param Descriptor Specified length\r
-\r
- @retval EFI_INVALID_PARAMETER Descriptor is NULL.\r
- @retval EFI_SUCCESS Successfully get the IO space descriptor.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_GET_IO_SPACE_DESCRIPTOR) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- OUT EFI_GCD_IO_SPACE_DESCRIPTOR *Descriptor\r
- )\r
-;\r
-\r
-/**\r
- Returns a map of the I/O resources in the global coherency domain of the processor.\r
-\r
- @param NumberOfDescriptors Number of descriptors.\r
- @param MemorySpaceMap Descriptor array\r
-\r
- @retval EFI_INVALID_PARAMETER Invalid parameter\r
- @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate\r
- @retval EFI_SUCCESS Successfully get IO space map.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_GET_IO_SPACE_MAP) (\r
- OUT UINTN *NumberOfDescriptors,\r
- OUT EFI_GCD_IO_SPACE_DESCRIPTOR **IoSpaceMap\r
- )\r
-;\r
-\r
-\r
-\r
-/**\r
- Loads and executed DXE drivers from firmware volumes.\r
-\r
- @return Status code\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_DISPATCH) (VOID)\r
-;\r
-\r
-/**\r
- Clears the Schedule on Request (SOR) flag for a component that is stored in a firmware volume.\r
-\r
- @param FirmwareVolumeHandle The handle of the firmware volume that contains the file specified by FileName.\r
- @param DriverName A pointer to the name of the file in a firmware volume.\r
-\r
- @return Status code\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SCHEDULE) (\r
- IN EFI_HANDLE FirmwareVolumeHandle,\r
- IN EFI_GUID *DriverName\r
- )\r
-;\r
-\r
-/**\r
- Promotes a file stored in a firmware volume from the untrusted to the trusted state.\r
-\r
- @param FirmwareVolumeHandle The handle of the firmware volume that contains the file specified by FileName.\r
- @param DriverName A pointer to the name of the file in a firmware volume.\r
-\r
- @return Status code\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_TRUST) (\r
- IN EFI_HANDLE FirmwareVolumeHandle,\r
- IN EFI_GUID *DriverName\r
- )\r
-;\r
-\r
-/**\r
- Creates a firmware volume handle for a firmware volume that is present in system memory.\r
-\r
- @param FirmwareVolumeHeader A pointer to the header of the firmware volume.\r
- @param Size The size, in bytes, of the firmware volume.\r
- @param FirmwareVolumeHandle On output, a pointer to the created handle.\r
-\r
- @return Status code\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PROCESS_FIRMWARE_VOLUME) (\r
- IN VOID *FvHeader,\r
- IN UINTN Size,\r
- OUT EFI_HANDLE *FirmwareVolumeHandle\r
- )\r
-;\r
-\r
-//\r
-// DXE Services Table\r
-//\r
-#define DXE_SERVICES_SIGNATURE 0x565245535f455844\r
-#define DXE_SERVICES_REVISION ((1<<16) | (00)\r
-\r
-typedef struct {\r
- EFI_TABLE_HEADER Hdr;\r
-\r
- //\r
- // Global Coherency Domain Services\r
- //\r
- EFI_ADD_MEMORY_SPACE AddMemorySpace;\r
- EFI_ALLOCATE_MEMORY_SPACE AllocateMemorySpace;\r
- EFI_FREE_MEMORY_SPACE FreeMemorySpace;\r
- EFI_REMOVE_MEMORY_SPACE RemoveMemorySpace;\r
- EFI_GET_MEMORY_SPACE_DESCRIPTOR GetMemorySpaceDescriptor;\r
- EFI_SET_MEMORY_SPACE_ATTRIBUTES SetMemorySpaceAttributes;\r
- EFI_GET_MEMORY_SPACE_MAP GetMemorySpaceMap;\r
- EFI_ADD_IO_SPACE AddIoSpace;\r
- EFI_ALLOCATE_IO_SPACE AllocateIoSpace;\r
- EFI_FREE_IO_SPACE FreeIoSpace;\r
- EFI_REMOVE_IO_SPACE RemoveIoSpace;\r
- EFI_GET_IO_SPACE_DESCRIPTOR GetIoSpaceDescriptor;\r
- EFI_GET_IO_SPACE_MAP GetIoSpaceMap;\r
-\r
- //\r
- // Dispatcher Services\r
- //\r
- EFI_DISPATCH Dispatch;\r
- EFI_SCHEDULE Schedule;\r
- EFI_TRUST Trust;\r
- //\r
- // Service to process a single firmware volume found in a capsule\r
- //\r
- EFI_PROCESS_FIRMWARE_VOLUME ProcessFirmwareVolume;\r
-} DXE_SERVICES;\r
-\r
-typedef DXE_SERVICES EFI_DXE_SERVICES;\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- The firmware file related definitions in PI.\r
-\r
- Copyright (c) 2006 - 2007, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: PiFirmwareFile.h\r
-\r
- @par Revision Reference:\r
- Version 1.0.\r
-\r
-**/\r
-\r
-#ifndef __PI_FIRMWARE_FILE_H__\r
-#define __PI_FIRMWARE_FILE_H__\r
-\r
-//\r
-// Used to verify the integrity of the file.\r
-// \r
-typedef union {\r
- struct {\r
- UINT8 Header;\r
- UINT8 File;\r
- } Checksum;\r
- UINT16 Checksum16;\r
-} EFI_FFS_INTEGRITY_CHECK;\r
-\r
-typedef UINT8 EFI_FV_FILETYPE;\r
-typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;\r
-typedef UINT8 EFI_FFS_FILE_STATE;\r
-\r
-// \r
-// FFS File Attributes.\r
-// \r
-#define FFS_ATTRIB_FIXED 0x04\r
-#define FFS_ATTRIB_DATA_ALIGNMENT 0x38\r
-#define FFS_ATTRIB_CHECKSUM 0x40\r
-\r
-// \r
-// FFS File State Bits.\r
-// \r
-#define EFI_FILE_HEADER_CONSTRUCTION 0x01\r
-#define EFI_FILE_HEADER_VALID 0x02\r
-#define EFI_FILE_DATA_VALID 0x04\r
-#define EFI_FILE_MARKED_FOR_UPDATE 0x08\r
-#define EFI_FILE_DELETED 0x10\r
-#define EFI_FILE_HEADER_INVALID 0x20\r
-\r
-\r
-//\r
-// Each file begins with the header that describe the \r
-// contents and state of the files.\r
-// \r
-typedef struct {\r
- EFI_GUID Name;\r
- EFI_FFS_INTEGRITY_CHECK IntegrityCheck;\r
- EFI_FV_FILETYPE Type;\r
- EFI_FFS_FILE_ATTRIBUTES Attributes;\r
- UINT8 Size[3];\r
- EFI_FFS_FILE_STATE State;\r
-} EFI_FFS_FILE_HEADER;\r
-\r
-\r
-typedef UINT8 EFI_SECTION_TYPE;\r
-\r
-//\r
-// Pseudo type. It is\r
-// used as a wild card when retrieving sections. The section\r
-// type EFI_SECTION_ALL matches all section types.\r
-//\r
-#define EFI_SECTION_ALL 0x00\r
-\r
-//\r
-// Encapsulation section Type values\r
-//\r
-#define EFI_SECTION_COMPRESSION 0x01\r
-\r
-#define EFI_SECTION_GUID_DEFINED 0x02\r
-\r
-//\r
-// Leaf section Type values\r
-//\r
-#define EFI_SECTION_PE32 0x10\r
-#define EFI_SECTION_PIC 0x11\r
-#define EFI_SECTION_TE 0x12\r
-#define EFI_SECTION_DXE_DEPEX 0x13\r
-#define EFI_SECTION_VERSION 0x14\r
-#define EFI_SECTION_USER_INTERFACE 0x15\r
-#define EFI_SECTION_COMPATIBILITY16 0x16\r
-#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17\r
-#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18\r
-#define EFI_SECTION_RAW 0x19\r
-#define EFI_SECTION_PEI_DEPEX 0x1B\r
-\r
-typedef struct {\r
- UINT8 Size[3];\r
- EFI_SECTION_TYPE Type;\r
-} EFI_COMMON_SECTION_HEADER;\r
-\r
-//\r
-// Leaf section type that contains an \r
-// IA-32 16-bit executable image.\r
-// \r
-typedef EFI_COMMON_SECTION_HEADER EFI_COMPATIBILITY16_SECTION;\r
-\r
-//\r
-// CompressionType of EFI_COMPRESSION_SECTION.\r
-// \r
-#define EFI_NOT_COMPRESSED 0x00\r
-#define EFI_STANDARD_COMPRESSION 0x01\r
-//\r
-// An encapsulation section type in which the \r
-// section data is compressed.\r
-// \r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
- UINT32 UncompressedLength;\r
- UINT8 CompressionType;\r
-} EFI_COMPRESSION_SECTION;\r
-\r
-//\r
-// Leaf section which could be used to determine the dispatch order of DXEs.\r
-// \r
-typedef EFI_COMMON_SECTION_HEADER EFI_DXE_DEPEX_SECTION;\r
-\r
-//\r
-// Leaf section witch contains a PI FV.\r
-// \r
-typedef EFI_COMMON_SECTION_HEADER EFI_FIRMWARE_VOLUME_IMAGE_SECTION;\r
-\r
-//\r
-// Leaf section which contains a single GUID.\r
-// \r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
- EFI_GUID SubTypeGuid;\r
-} EFI_FREEFORM_SUBTYPE_GUID_SECTION;\r
-\r
-//\r
-// Attributes of EFI_GUID_DEFINED_SECTION\r
-// \r
-#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED 0x01\r
-#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID 0x02\r
-//\r
-// Leaf section which is encapsulation defined by specific GUID\r
-// \r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
- EFI_GUID SectionDefinitionGuid;\r
- UINT16 DataOffset;\r
- UINT16 Attributes;\r
-} EFI_GUID_DEFINED_SECTION;\r
-\r
-//\r
-// Leaf section which contains PE32+ image.\r
-// \r
-typedef EFI_COMMON_SECTION_HEADER EFI_PE32_SECTION;\r
-\r
-\r
-//\r
-// Leaf section which used to determine the dispatch order of PEIMs.\r
-// \r
-typedef EFI_COMMON_SECTION_HEADER EFI_PEI_DEPEX_SECTION;\r
-\r
-//\r
-// Leaf section which constains the position-independent-code image.\r
-// \r
-typedef EFI_COMMON_SECTION_HEADER EFI_TE_SECTION;\r
-\r
-//\r
-// Leaf section which contains an array of zero or more bytes.\r
-// \r
-typedef EFI_COMMON_SECTION_HEADER EFI_RAW_SECTION;\r
-\r
-//\r
-// Leaf section which contains a unicode string that \r
-// is human readable file name.\r
-// \r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
-\r
- //\r
- // Array of unicode string.\r
- // \r
- CHAR16 FileNameString[1];\r
-} EFI_USER_INTERFACE_SECTION;\r
-\r
-\r
-//\r
-// Leaf section which contains a numeric build number and\r
-// an optional unicode string that represent the file revision. \r
-// \r
-typedef struct {\r
- EFI_COMMON_SECTION_HEADER CommonHeader;\r
- UINT16 BuildNumber;\r
- CHAR16 VersionString[1];\r
-} EFI_VERSION_SECTION;\r
-\r
-#endif\r
-\r
+++ /dev/null
-/** @file\r
- The firmware volume related definitions in PI.\r
-\r
- Copyright (c) 2006 - 2007, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: PiFirmwareVolume.h\r
-\r
- @par Revision Reference:\r
- Version 1.0.\r
-\r
-**/\r
-\r
-#ifndef __PI_FIRMWAREVOLUME_H__\r
-#define __PI_FIRMWAREVOLUME_H__\r
-\r
-//\r
-// EFI_FV_FILE_ATTRIBUTES\r
-//\r
-typedef UINT32 EFI_FV_FILE_ATTRIBUTES;\r
-\r
-//\r
-// Value of EFI_FV_FILE_ATTRIBUTES.\r
-// \r
-#define EFI_FV_FILE_ATTRIB_ALIGNMENT 0x0000001F\r
-#define EFI_FV_FILE_ATTRIB_FIXED 0x00000100\r
-#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED 0x00000200\r
-\r
-typedef UINT32 EFI_FVB_ATTRIBUTES;\r
-\r
-// \r
-// Attributes bit definitions\r
-// \r
-#define EFI_FVB2_READ_DISABLED_CAP 0x00000001\r
-#define EFI_FVB2_READ_ENABLED_CAP 0x00000002\r
-#define EFI_FVB2_READ_STATUS 0x00000004\r
-#define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008\r
-#define EFI_FVB2_WRITE_ENABLED_CAP 0x00000010\r
-#define EFI_FVB2_WRITE_STATUS 0x00000020\r
-#define EFI_FVB2_LOCK_CAP 0x00000040\r
-#define EFI_FVB2_LOCK_STATUS 0x00000080\r
-#define EFI_FVB2_STICKY_WRITE 0x00000200\r
-#define EFI_FVB2_MEMORY_MAPPED 0x00000400\r
-#define EFI_FVB2_ERASE_POLARITY 0x00000800\r
-#define EFI_FVB2_READ_LOCK_CAP 0x00001000\r
-#define EFI_FVB2_READ_LOCK_STATUS 0x00002000\r
-#define EFI_FVB2_WRITE_LOCK_CAP 0x00004000\r
-#define EFI_FVB2_WRITE_LOCK_STATUS 0x00008000\r
-#define EFI_FVB2_ALIGNMENT 0x001F0000\r
-#define EFI_FVB2_ALIGNMENT_1 0x00000000\r
-#define EFI_FVB2_ALIGNMENT_2 0x00010000\r
-#define EFI_FVB2_ALIGNMENT_4 0x00020000\r
-#define EFI_FVB2_ALIGNMENT_8 0x00030000\r
-#define EFI_FVB2_ALIGNMENT_16 0x00040000\r
-#define EFI_FVB2_ALIGNMENT_32 0x00050000\r
-#define EFI_FVB2_ALIGNMENT_64 0x00060000\r
-#define EFI_FVB2_ALIGNMENT_128 0x00070000\r
-#define EFI_FVB2_ALIGNMENT_256 0x00080000\r
-#define EFI_FVB2_ALIGNMENT_512 0x00090000\r
-#define EFI_FVB2_ALIGNMENT_1K 0x000A0000\r
-#define EFI_FVB2_ALIGNMENT_2K 0x000B0000\r
-#define EFI_FVB2_ALIGNMENT_4K 0x000C0000\r
-#define EFI_FVB2_ALIGNMENT_8K 0x000D0000\r
-#define EFI_FVB2_ALIGNMENT_16K 0x000E0000\r
-#define EFI_FVB2_ALIGNMENT_32K 0x000F0000\r
-#define EFI_FVB2_ALIGNMENT_64K 0x00100000\r
-#define EFI_FVB2_ALIGNMENT_128K 0x00110000\r
-#define EFI_FVB2_ALIGNMENT_256K 0x00120000\r
-#define EFI_FVB2_ALIGNMNET_512K 0x00130000\r
-#define EFI_FVB2_ALIGNMENT_1M 0x00140000\r
-#define EFI_FVB2_ALIGNMENT_2M 0x00150000\r
-#define EFI_FVB2_ALIGNMENT_4M 0x00160000\r
-#define EFI_FVB2_ALIGNMENT_8M 0x00170000\r
-#define EFI_FVB2_ALIGNMENT_16M 0x00180000\r
-#define EFI_FVB2_ALIGNMENT_32M 0x00190000\r
-#define EFI_FVB2_ALIGNMENT_64M 0x001A0000\r
-#define EFI_FVB2_ALIGNMENT_128M 0x001B0000\r
-#define EFI_FVB2_ALIGNMENT_256M 0x001C0000\r
-#define EFI_FVB2_ALIGNMENT_512M 0x001D0000\r
-#define EFI_FVB2_ALIGNMENT_1G 0x001E0000\r
-#define EFI_FVB2_ALIGNMENT_2G 0x001F0000\r
-\r
-\r
-typedef struct {\r
- UINT32 NumBlocks;\r
- UINT32 Length;\r
-} EFI_FV_BLOCK_MAP_ENTRY;\r
-\r
-//\r
-// Describes the features and layout of the firmware volume.\r
-//\r
-typedef struct {\r
- UINT8 ZeroVector[16];\r
- EFI_GUID FileSystemGuid;\r
- UINT64 FvLength;\r
- UINT32 Signature;\r
- EFI_FVB_ATTRIBUTES Attributes;\r
- UINT16 HeaderLength;\r
- UINT16 Checksum;\r
- UINT16 ExtHeaderOffset;\r
- UINT8 Reserved[1];\r
- UINT8 Revision;\r
- EFI_FV_BLOCK_MAP_ENTRY BlockMap[1];\r
-} EFI_FIRMWARE_VOLUME_HEADER;\r
-\r
-\r
-\r
-//\r
-// Extension header pointed by ExtHeaderOffset of volume header.\r
-// \r
-typedef struct {\r
- EFI_GUID FvName;\r
- UINT32 ExtHeaderSize;\r
-} EFI_FIRMWARE_VOLUME_EXT_HEADER;\r
-\r
-typedef struct {\r
- UINT16 ExtEntrySize;\r
- UINT16 ExtEntryType;\r
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY;\r
-\r
-#define EFI_FV_EXT_TYPE_OEM_TYPE 0x01\r
-typedef struct {\r
- EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;\r
- UINT32 TypeMask;\r
-\r
- //\r
- // Array of GUIDs. \r
- // Each GUID represents an OEM file type.\r
- // \r
- EFI_GUID Types[1];\r
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;\r
-\r
-\r
-#endif\r
+++ /dev/null
-/* @file\r
- HOB related definitions in PI.\r
-\r
- Copyright (c) 2006 - 2007, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: PiHob.h\r
-\r
- @par Revision Reference:\r
- Version 1.0.\r
-\r
-**/\r
-\r
-#ifndef __PI_HOB_H__\r
-#define __PI_HOB_H__\r
-\r
-//\r
-// HobType of EFI_HOB_GENERIC_HEADER.\r
-// \r
-#define EFI_HOB_TYPE_HANDOFF 0x0001\r
-#define EFI_HOB_TYPE_MEMORY_ALLOCATION 0x0002\r
-#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR 0x0003\r
-#define EFI_HOB_TYPE_GUID_EXTENSION 0x0004\r
-#define EFI_HOB_TYPE_FV 0x0005\r
-#define EFI_HOB_TYPE_CPU 0x0006\r
-#define EFI_HOB_TYPE_MEMORY_POOL 0x0007\r
-#define EFI_HOB_TYPE_FV2 0x0009\r
-#define EFI_HOB_TYPE_LOAD_PEIM 0x000A\r
-#define EFI_HOB_TYPE_UNUSED 0xFFFE\r
-#define EFI_HOB_TYPE_END_OF_HOB_LIST 0xFFFF\r
-\r
-//\r
-// Describes the format and size of the data inside the HOB. \r
-// All HOBs must contain this generic HOB header.\r
-// \r
-typedef struct _EFI_HOB_GENERIC_HEADER {\r
- UINT16 HobType;\r
- UINT16 HobLength;\r
- UINT32 Reserved;\r
-} EFI_HOB_GENERIC_HEADER;\r
-\r
-\r
-//\r
-// Value of version ofinEFI_HOB_HANDOFF_INFO_TABLE.\r
-// \r
-#define EFI_HOB_HANDOFF_TABLE_VERSION 0x0009\r
-//\r
-// Contains general state information used by the HOB producer phase. \r
-// This HOB must be the first one in the HOB list.\r
-// \r
-typedef struct _EFI_HOB_HANDOFF_INFO_TABLE {\r
- EFI_HOB_GENERIC_HEADER Header;\r
- UINT32 Version;\r
- EFI_BOOT_MODE BootMode;\r
- EFI_PHYSICAL_ADDRESS EfiMemoryTop;\r
- EFI_PHYSICAL_ADDRESS EfiMemoryBottom;\r
- EFI_PHYSICAL_ADDRESS EfiFreeMemoryTop;\r
- EFI_PHYSICAL_ADDRESS EfiFreeMemoryBottom;\r
- EFI_PHYSICAL_ADDRESS EfiEndOfHobList;\r
-} EFI_HOB_HANDOFF_INFO_TABLE;\r
-\r
-\r
-typedef struct _EFI_HOB_MEMORY_ALLOCATION_HEADER {\r
- EFI_GUID Name;\r
- EFI_PHYSICAL_ADDRESS MemoryBaseAddress;\r
- UINT64 MemoryLength;\r
- EFI_MEMORY_TYPE MemoryType;\r
-\r
- //\r
- // Padding for Itanium processor family\r
- // \r
- UINT8 Reserved[4];\r
-} EFI_HOB_MEMORY_ALLOCATION_HEADER;\r
-\r
-//\r
-// Describes all memory ranges used during the HOB producer \r
-// phase that exist outside the HOB list. This HOB type \r
-// describes how memory is used, \r
-// not the physical attributes of memory.\r
-// \r
-typedef struct _EFI_HOB_MEMORY_ALLOCATION {\r
- EFI_HOB_GENERIC_HEADER Header;\r
- EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor;\r
- //\r
- // Additional data pertaining to the ¡°Name¡± Guid memory\r
- // may go here.\r
- //\r
-} EFI_HOB_MEMORY_ALLOCATION;\r
-\r
-\r
-//\r
-// Describes the memory stack that is produced by the HOB producer \r
-// phase and upon which all postmemory-installed executable\r
-// content in the HOB producer phase is executing.\r
-// \r
-typedef struct _EFI_HOB_MEMORY_ALLOCATION_STACK {\r
- EFI_HOB_GENERIC_HEADER Header;\r
- EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor;\r
-} EFI_HOB_MEMORY_ALLOCATION_STACK;\r
-\r
-//\r
-// Defines the location of the boot-strap \r
-// processor (BSP) BSPStore (¡°Backing Store Pointer Store¡±).\r
-// This HOB is valid for the Itanium processor family only \r
-// register overflow store.\r
-// \r
-typedef struct _EFI_HOB_MEMORY_ALLOCATION_BSP_STORE {\r
- EFI_HOB_GENERIC_HEADER Header;\r
- EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor;\r
-} EFI_HOB_MEMORY_ALLOCATION_BSP_STORE;\r
-\r
-//\r
-// Defines the location and entry point of the HOB consumer phase.\r
-// \r
-typedef struct {\r
- EFI_HOB_GENERIC_HEADER Header;\r
- EFI_HOB_MEMORY_ALLOCATION_HEADER MemoryAllocationHeader;\r
- EFI_GUID ModuleName;\r
- EFI_PHYSICAL_ADDRESS EntryPoint;\r
-} EFI_HOB_MEMORY_ALLOCATION_MODULE;\r
-\r
-typedef UINT32 EFI_RESOURCE_TYPE;\r
-\r
-//\r
-// Value of ResourceType in EFI_HOB_RESOURCE_DESCRIPTOR.\r
-// \r
-#define EFI_RESOURCE_SYSTEM_MEMORY 0x00000000\r
-#define EFI_RESOURCE_MEMORY_MAPPED_IO 0x00000001\r
-#define EFI_RESOURCE_IO 0x00000002\r
-#define EFI_RESOURCE_FIRMWARE_DEVICE 0x00000003\r
-#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT 0x00000004\r
-#define EFI_RESOURCE_MEMORY_RESERVED 0x00000005\r
-#define EFI_RESOURCE_IO_RESERVED 0x00000006\r
-#define EFI_RESOURCE_MAX_MEMORY_TYPE 0x00000007\r
-\r
-\r
-typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE;\r
-\r
-//\r
-// These types can be ORed together as needed.\r
-//\r
-// The first three enumerations describe settings\r
-//\r
-#define EFI_RESOURCE_ATTRIBUTE_PRESENT 0x00000001\r
-#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED 0x00000002\r
-#define EFI_RESOURCE_ATTRIBUTE_TESTED 0x00000004\r
-//\r
-// The rest of the settings describe capabilities\r
-//\r
-#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC 0x00000008\r
-#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC 0x00000010\r
-#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1 0x00000020\r
-#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2 0x00000040\r
-#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED 0x00000080\r
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED 0x00000100\r
-#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED 0x00000200\r
-#define EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE 0x00000400\r
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE 0x00000800\r
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE 0x00001000\r
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE 0x00002000\r
-#define EFI_RESOURCE_ATTRIBUTE_16_BIT_IO 0x00004000\r
-#define EFI_RESOURCE_ATTRIBUTE_32_BIT_IO 0x00008000\r
-#define EFI_RESOURCE_ATTRIBUTE_64_BIT_IO 0x00010000\r
-#define EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED 0x00020000\r
-\r
-//\r
-// Describes the resource properties of all fixed, \r
-// nonrelocatable resource ranges found on the processor\r
-// host bus during the HOB producer phase.\r
-// \r
-typedef struct _EFI_HOB_RESOURCE_DESCRIPTOR {\r
- EFI_HOB_GENERIC_HEADER Header;\r
- EFI_GUID Owner;\r
- EFI_RESOURCE_TYPE ResourceType;\r
- EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;\r
- EFI_PHYSICAL_ADDRESS PhysicalStart;\r
- UINT64 ResourceLength;\r
-} EFI_HOB_RESOURCE_DESCRIPTOR;\r
-\r
-//\r
-// Allows writers of executable content in the HOB producer phase to \r
-// maintain and manage HOBs with specific GUID.\r
-// \r
-typedef struct _EFI_HOB_GUID_TYPE {\r
- EFI_HOB_GENERIC_HEADER Header;\r
- EFI_GUID Name;\r
-\r
- //\r
- // Guid specific data goes here\r
- //\r
-} EFI_HOB_GUID_TYPE;\r
-\r
-//\r
-// Details the location of firmware volumes that contain firmware files.\r
-// \r
-typedef struct {\r
- EFI_HOB_GENERIC_HEADER Header;\r
- EFI_PHYSICAL_ADDRESS BaseAddress;\r
- UINT64 Length;\r
-} EFI_HOB_FIRMWARE_VOLUME;\r
-\r
-//\r
-// Details the location of a firmware volume which was extracted \r
-// from a file within another firmware volume.\r
-// \r
-typedef struct {\r
- EFI_HOB_GENERIC_HEADER Header;\r
- EFI_PHYSICAL_ADDRESS BaseAddress;\r
- UINT64 Length;\r
- EFI_GUID FvName;\r
- EFI_GUID FileName;\r
-} EFI_HOB_FIRMWARE_VOLUME2;\r
-\r
-\r
-//\r
-// Describes processor information, such as address space and I/O space capabilities.\r
-// \r
-typedef struct _EFI_HOB_CPU {\r
- EFI_HOB_GENERIC_HEADER Header;\r
- UINT8 SizeOfMemorySpace;\r
- UINT8 SizeOfIoSpace;\r
- UINT8 Reserved[6];\r
-} EFI_HOB_CPU;\r
-\r
-\r
-//\r
-// Describes pool memory allocations.\r
-// \r
-typedef struct _EFI_HOB_MEMORY_POOL {\r
- EFI_HOB_GENERIC_HEADER Header;\r
-} EFI_HOB_MEMORY_POOL;\r
-\r
-//\r
-// Union of all the possible HOB Types\r
-//\r
-typedef union {\r
- EFI_HOB_GENERIC_HEADER *Header;\r
- EFI_HOB_HANDOFF_INFO_TABLE *HandoffInformationTable;\r
- EFI_HOB_MEMORY_ALLOCATION *MemoryAllocation;\r
- EFI_HOB_MEMORY_ALLOCATION_BSP_STORE *MemoryAllocationBspStore;\r
- EFI_HOB_MEMORY_ALLOCATION_STACK *MemoryAllocationStack;\r
- EFI_HOB_MEMORY_ALLOCATION_MODULE *MemoryAllocationModule;\r
- EFI_HOB_RESOURCE_DESCRIPTOR *ResourceDescriptor;\r
- EFI_HOB_GUID_TYPE *Guid;\r
- EFI_HOB_FIRMWARE_VOLUME *FirmwareVolume;\r
- EFI_HOB_CPU *Cpu;\r
- EFI_HOB_MEMORY_POOL *Pool;\r
- UINT8 *Raw;\r
-} EFI_PEI_HOB_POINTERS;\r
-\r
-\r
-#endif \r
+++ /dev/null
-/** @file\r
- Include file matches things in PI for multiple module types.\r
-\r
- Copyright (c) 2006 - 2007, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: PiMultiPhase.h\r
-\r
- @par Revision Reference:\r
- Version 1.0.\r
-\r
-**/\r
-\r
-#ifndef __PI_MULTIPHASE_H__\r
-#define __PI_MULTIPHASE_H__\r
-\r
-#include <Uefi/UefiMultiPhase.h>\r
-\r
-#include <Pi/PiFirmwareVolume.h>\r
-#include <Pi/PiFirmwareFile.h>\r
-#include <Pi/PiBootMode.h>\r
-\r
-#include <Pi/PiHob.h>\r
-#include <Pi/PiDependency.h>\r
-\r
-//\r
-// Status Code Type Definition\r
-//\r
-typedef UINT32 EFI_STATUS_CODE_TYPE;\r
-\r
-//\r
-// A Status Code Type is made up of the code type and severity\r
-// All values masked by EFI_STATUS_CODE_RESERVED_MASK are\r
-// reserved for use by this specification.\r
-//\r
-#define EFI_STATUS_CODE_TYPE_MASK 0x000000FF\r
-#define EFI_STATUS_CODE_SEVERITY_MASK 0xFF000000\r
-#define EFI_STATUS_CODE_RESERVED_MASK 0x00FFFF00\r
-\r
-//\r
-// Definition of code types, all other values masked by\r
-// EFI_STATUS_CODE_TYPE_MASK are reserved for use by\r
-// this specification.\r
-//\r
-#define EFI_PROGRESS_CODE 0x00000001\r
-#define EFI_ERROR_CODE 0x00000002\r
-#define EFI_DEBUG_CODE 0x00000003\r
-\r
-//\r
-// Definitions of severities, all other values masked by\r
-// EFI_STATUS_CODE_SEVERITY_MASK are reserved for use by\r
-// this specification.\r
-// Uncontained errors are major errors that could not contained\r
-// to the specific component that is reporting the error\r
-// For example, if a memory error was not detected early enough,\r
-// the bad data could be consumed by other drivers.\r
-//\r
-#define EFI_ERROR_MINOR 0x40000000\r
-#define EFI_ERROR_MAJOR 0x80000000\r
-#define EFI_ERROR_UNRECOVERED 0x90000000\r
-#define EFI_ERROR_UNCONTAINED 0xa0000000\r
-\r
-//\r
-// Status Code Value Definition\r
-//\r
-typedef UINT32 EFI_STATUS_CODE_VALUE;\r
-//\r
-// A Status Code Value is made up of the class, subclass, and\r
-// an operation.\r
-//\r
-#define EFI_STATUS_CODE_CLASS_MASK 0xFF000000\r
-#define EFI_STATUS_CODE_SUBCLASS_MASK 0x00FF0000\r
-#define EFI_STATUS_CODE_OPERATION_MASK 0x0000FFFF\r
-//\r
-// Definition of Status Code extended data header.\r
-// The data will follow HeaderSize bytes from the beginning of\r
-// the structure and is Size bytes long.\r
-//\r
-typedef struct {\r
- UINT16 HeaderSize;\r
- UINT16 Size;\r
- EFI_GUID Type;\r
-} EFI_STATUS_CODE_DATA;\r
-\r
-#endif\r
+++ /dev/null
-\r
-/** @file\r
- PI PEI master include file. This file should match the PI spec.\r
-\r
- Copyright (c) 2006 - 2007, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: PiPeiCis.h\r
-\r
- @par Revision Reference:\r
- Version 1.0.\r
-\r
-**/\r
-\r
-#ifndef __PI_PEICIS_H__\r
-#define __PI_PEICIS_H__\r
-\r
-#include <Pi/PiMultiPhase.h>\r
-\r
-#define EFI_NOT_AVAILABLE_YET EFIERR (28)\r
-\r
-//\r
-// Handles of EFI FV/FFS.\r
-// \r
-typedef VOID *EFI_PEI_FV_HANDLE;\r
-typedef VOID *EFI_PEI_FILE_HANDLE;\r
-\r
-//\r
-// Declare forward referenced data structures\r
-//\r
-typedef struct _EFI_PEI_SERVICES EFI_PEI_SERVICES;\r
-typedef struct _EFI_PEI_NOTIFY_DESCRIPTOR EFI_PEI_NOTIFY_DESCRIPTOR;\r
-\r
-\r
-#include <Ppi/CpuIo.h>\r
-#include <Ppi/PciCfg2.h>\r
-\r
-/**\r
- The PEI Dispatcher will invoke each PEIM one time. During this pass, the PEI \r
- Dispatcher will pass control to the PEIM at the AddressOfEntryPoint in the PE Header. \r
-\r
- @param FfsHeader Pointer to the FFS file header.\r
- @param PeiServices Describes the list of possible PEI Services.\r
-\r
- @return Status code\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEIM_ENTRY_POINT)(\r
- IN EFI_FFS_FILE_HEADER *FfsHeader,\r
- IN EFI_PEI_SERVICES **PeiServices\r
- );\r
-\r
-/**\r
- Entry point of the notification callback function itself within the PEIM.\r
-\r
- @param PeiServices Indirect reference to the PEI Services Table.\r
- @param NotifyDescriptor Address of the notification descriptor data structure.\r
- @param Ppi Address of the PPI that was installed.\r
-\r
- @return Status code\r
- \r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEIM_NOTIFY_ENTRY_POINT) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,\r
- IN VOID *Ppi\r
- );\r
-\r
-//\r
-// PEI Ppi Services List Descriptors\r
-//\r
-#define EFI_PEI_PPI_DESCRIPTOR_PIC 0x00000001\r
-#define EFI_PEI_PPI_DESCRIPTOR_PPI 0x00000010\r
-#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK 0x00000020\r
-#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_DISPATCH 0x00000040\r
-#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_TYPES 0x00000060\r
-#define EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST 0x80000000\r
-\r
-typedef struct {\r
- UINTN Flags;\r
- EFI_GUID *Guid;\r
- VOID *Ppi;\r
-} EFI_PEI_PPI_DESCRIPTOR;\r
-\r
-struct _EFI_PEI_NOTIFY_DESCRIPTOR {\r
- UINTN Flags;\r
- EFI_GUID *Guid;\r
- EFI_PEIM_NOTIFY_ENTRY_POINT Notify;\r
-};\r
-\r
-//\r
-// Describes request of the module to be loaded to \r
-// the permanent memory once it is available. Unlike most of the other HOBs, \r
-// this HOB is produced and consumed during the HOB producer phase.\r
-// \r
-typedef struct _EFI_HOB_LOAD_PEIM {\r
- EFI_HOB_GENERIC_HEADER Header;\r
- EFI_PEI_FILE_HANDLE FileHandle;\r
- EFI_PEIM_ENTRY_POINT EntryPoint;\r
- EFI_PEIM_ENTRY_POINT InMemEntryPoint;\r
-} EFI_HOB_LOAD_PEIM;\r
-\r
-\r
-/**\r
- This service is the first one provided by the PEI Foundation. This function \r
- installs an interface in the PEI PPI database by GUID. The purpose of the \r
- service is to publish an interface that other parties can use to call \r
- additional PEIMs.\r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table\r
- published by the PEI Foundation.\r
- @param PpiList A pointer to the list of interfaces that the caller shall install.\r
-\r
- @retval EFI_SUCCESS The interface was successfully installed.\r
- @retval EFI_INVALID_PARAMETER The PpiList pointer is NULL or Any of the PEI PPI descriptors in the list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.\r
- @retval EFI_OUT_OF_RESOURCES There is no additional space in the PPI database.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_INSTALL_PPI) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_PPI_DESCRIPTOR *PpiList\r
- );\r
-\r
-/**\r
- This function reinstalls an interface in the PEI PPI database by GUID. \r
- The purpose of the service is to publish an interface that other parties \r
- can use to replace a same-named interface in the protocol database \r
- with a different interface. \r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table\r
- published by the PEI Foundation.\r
- @param OldPpi A pointer to the former PPI in the database.\r
- @param NewPpi A pointer to the new interfaces that the caller shall install.\r
-\r
- @retval EFI_SUCCESS The interface was successfully installed.\r
- @retval EFI_INVALID_PARAMETER The PpiList pointer is NULL or Any of the PEI PPI descriptors in the \r
- list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.\r
- @retval EFI_OUT_OF_RESOURCES There is no additional space in the PPI database.\r
- @retval EFI_NOT_FOUND The PPI for which the reinstallation was requested has not been installed.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_REINSTALL_PPI) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_PPI_DESCRIPTOR *OldPpi,\r
- IN EFI_PEI_PPI_DESCRIPTOR *NewPpi\r
- );\r
-\r
-/**\r
- This function locates an interface in the PEI PPI database by GUID. \r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES published by the PEI Foundation.\r
- @param Guid A pointer to the GUID whose corresponding interface needs to be found.\r
- @param Instance The N-th instance of the interface that is required.\r
- @param PpiDescriptor A pointer to instance of the EFI_PEI_PPI_DESCRIPTOR.\r
- @param Ppi A pointer to the instance of the interface.\r
-\r
- @retval EFI_SUCCESS The interface was successfully returned.\r
- @retval EFI_NOT_FOUND The PPI descriptor is not found in the database.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_LOCATE_PPI) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_GUID *Guid,\r
- IN UINTN Instance,\r
- IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor,\r
- IN OUT VOID **Ppi\r
- );\r
-\r
-/**\r
- This function installs a notification service to be called back when a \r
- given interface is installed or reinstalled. The purpose of the service \r
- is to publish an interface that other parties can use to call additional PPIs \r
- that may materialize later.\r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation\r
- @param NotifyList A pointer to the list of notification interfaces that the caller shall install.\r
-\r
- @retval EFI_SUCCESS The interface was successfully installed.\r
- @retval EFI_INVALID_PARAMETER The PpiList pointer is NULL or Any of the PEI PPI descriptors in the \r
- list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.\r
- @retval EFI_OUT_OF_RESOURCES There is no additional space in the PPI database.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_NOTIFY_PPI) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList\r
- );\r
-\r
-/**\r
- This function returns the present value of the boot mode.\r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
- @param BootMode A pointer to contain the value of the boot mode.\r
-\r
- @retval EFI_SUCCESS The boot mode was returned successfully.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_GET_BOOT_MODE) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- OUT EFI_BOOT_MODE *BootMode\r
- );\r
-\r
-/**\r
- This function sets the value of the boot mode.\r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation\r
- @param BootMode The value of the boot mode to set.\r
-\r
- @retval EFI_SUCCESS The boot mode was returned successfully.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_SET_BOOT_MODE) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_BOOT_MODE BootMode\r
- );\r
-\r
-/**\r
- This function returns the pointer to the list of Hand-Off Blocks (HOBs) in memory. \r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation\r
- @param HobList A pointer to the list of HOBs that the PEI Foundation will initialize\r
-\r
- @retval EFI_SUCCESS The list was successfully returned.\r
- @retval EFI_NOT_AVAILABLE_YET The HOB list is not yet published.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_GET_HOB_LIST) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN OUT VOID **HobList\r
- );\r
-\r
-/**\r
- This service published by the PEI Foundation abstracts the creation of a Hand-Off Block's (HOB's) headers.\r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
- @param Type The type of HOB to be installed.\r
- @param Length The length of the HOB to be added.\r
- @param Hob The address of a pointer that will contain the HOB header.\r
-\r
- @retval EFI_SUCCESS The HOB was successfully created.\r
- @retval EFI_OUT_OF_RESOURCES There is no additional space for HOB creation.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_CREATE_HOB) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN UINT16 Type,\r
- IN UINT16 Length,\r
- IN OUT VOID **Hob\r
- );\r
-\r
-/**\r
- The purpose of the service is to abstract the capability of the PEI \r
- Foundation to discover instances of firmware volumes in the system. \r
- Given the input file pointer, this service searches for the next \r
- matching file in the Firmware File System (FFS) volume.\r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
- @param Instance This instance of the firmware volume to find. The value 0 is the Boot Firmware Volume (BFV).\r
- @param FwVolHeader Pointer to the firmware volume header of the volume to return.\r
-\r
- @retval EFI_SUCCESS The volume was found.\r
- @retval EFI_NOT_FOUND The volume was not found.\r
- @retval EFI_INVALID_PARAMETER FwVolHeader is NULL\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME2) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN UINTN Instance,\r
- IN OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader\r
- );\r
-\r
-/**\r
- The purpose of the service is to abstract the capability of the PEI \r
- Foundation to discover instances of firmware files in the system. \r
- Given the input file pointer, this service searches for the next matching \r
- file in the Firmware File System (FFS) volume.\r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
- @param SearchType A filter to find files only of this type.\r
- @param FwVolHeader Pointer to the firmware volume header of the volume to search.This parameter \r
- must point to a valid FFS volume.\r
- @param FileHeader Pointer to the current file from which to begin searching.This pointer will be \r
- updated upon return to reflect the file found.\r
-\r
- @retval EFI_SUCCESS The file was found.\r
- @retval EFI_NOT_FOUND The file was not found.\r
- @retval EFI_NOT_FOUND The header checksum was not zero.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE2) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_FV_FILETYPE SearchType,\r
- IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,\r
- IN OUT EFI_FFS_FILE_HEADER **FileHeader\r
- );\r
-\r
-/**\r
- Given the input file pointer, this service searches for the next \r
- matching file in the Firmware File System (FFS) volume. \r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
- @param SectionType The value of the section type to find.\r
- @param FfsFileHeader A pointer to the file header that contains the set of sections to be searched.\r
- @param SectionData A pointer to the discovered section, if successful.\r
-\r
- @retval EFI_SUCCESS The section was found.\r
- @retval EFI_NOT_FOUND The section was not found.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA2) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_SECTION_TYPE SectionType,\r
- IN EFI_FFS_FILE_HEADER *FfsFileHeader,\r
- IN OUT VOID **SectionData\r
- );\r
-\r
-/**\r
- This function registers the found memory configuration with the PEI Foundation.\r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
- @param MemoryBegin The value of a region of installed memory\r
- @param MemoryLength The corresponding length of a region of installed memory.\r
-\r
- @retval EFI_SUCCESS The region was successfully installed in a HOB.\r
- @retval EFI_INVALID_PARAMETER MemoryBegin and MemoryLength are illegal for this system.\r
- @retval EFI_OUT_OF_RESOURCES There is no additional space for HOB creation.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_INSTALL_PEI_MEMORY) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PHYSICAL_ADDRESS MemoryBegin,\r
- IN UINT64 MemoryLength\r
- );\r
-\r
-/**\r
- The purpose of the service is to publish an interface that allows \r
- PEIMs to allocate memory ranges that are managed by the PEI Foundation.\r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
- @param MemoryType The type of memory to allocate.\r
- @param Pages The number of contiguous 4 KB pages to allocate.\r
- @param Memory Pointer to a physical address. On output, the address is set to the base \r
- of the page range that was allocated.\r
-\r
- @retval EFI_SUCCESS The memory range was successfully allocated.\r
- @retval EFI_OUT_OF_RESOURCES The pages could not be allocated.\r
- @retval EFI_INVALID_PARAMETER Type is not equal to AllocateAnyPages.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_ALLOCATE_PAGES) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_MEMORY_TYPE MemoryType,\r
- IN UINTN Pages,\r
- IN OUT EFI_PHYSICAL_ADDRESS *Memory\r
- );\r
-\r
-/**\r
- The purpose of this service is to publish an interface that \r
- allows PEIMs to allocate memory ranges that are managed by the PEI Foundation.\r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
- @param Size The number of bytes to allocate from the pool.\r
- @param Buffer If the call succeeds, a pointer to a pointer to the allocated buffer; undefined otherwise.\r
-\r
- @retval EFI_SUCCESS The allocation was successful.\r
- @retval EFI_OUT_OF_RESOURCES There is not enough heap to allocate the requested size.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_ALLOCATE_POOL) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN UINTN Size,\r
- OUT VOID **Buffer\r
- );\r
-\r
-/**\r
- This service copies the contents of one buffer to another buffer.\r
-\r
- @param Destination Pointer to the destination buffer of the memory copy.\r
- @param Source Pointer to the source buffer of the memory copy\r
- @param Length Number of bytes to copy from Source to Destination.\r
-\r
- @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_PEI_COPY_MEM) (\r
- IN VOID *Destination,\r
- IN VOID *Source,\r
- IN UINTN Length\r
- );\r
-\r
-/**\r
- The service fills a buffer with a specified value.\r
-\r
- @param Buffer Pointer to the buffer to fill.\r
- @param Size Number of bytes in Buffer to fill.\r
- @param Value Value to fill Buffer with\r
-\r
- @return None\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_PEI_SET_MEM) (\r
- IN VOID *Buffer,\r
- IN UINTN Size,\r
- IN UINT8 Value\r
- );\r
-\r
-/**\r
- This service publishes an interface that allows PEIMs to report status codes.\r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
- @param Type Indicates the type of status code being reported.\r
- @param Value Describes the current status of a hardware or\r
- software entity. This includes information about the class and\r
- subclass that is used to classify the entity as well as an operation.\r
- For progress codes, the operation is the current activity.\r
- For error codes, it is the exception.For debug codes,it is not defined at this time.\r
- @param Instance The enumeration of a hardware or software entity within\r
- the system. A system may contain multiple entities that match a class/subclass\r
- pairing. The instance differentiates between them. An instance of 0 indicates\r
- that instance information is unavailable, not meaningful, or not relevant.\r
- Valid instance numbers start with 1.\r
- @param CallerId This optional parameter may be used to identify the caller.\r
- This parameter allows the status code driver to apply different rules to\r
- different callers.\r
- @param Data This optional parameter may be used to pass additional data.\r
-\r
- @retval EFI_SUCCESS The function completed successfully.\r
- @retval EFI_NOT_AVAILABLE_YET No progress code provider has installed an interface in the system.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_REPORT_STATUS_CODE) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_STATUS_CODE_TYPE Type,\r
- IN EFI_STATUS_CODE_VALUE Value,\r
- IN UINT32 Instance,\r
- IN EFI_GUID *CallerId OPTIONAL,\r
- IN EFI_STATUS_CODE_DATA *Data OPTIONAL\r
- );\r
-\r
-/**\r
- Resets the entire platform.\r
-\r
- @param PeiServices An indirect pointer to the EFI_PEI_SERVICES\r
- table published by the PEI Foundation.\r
-\r
- @retval EFI_SUCCESS The function completed successfully.\r
- @retval EFI_NOT_AVAILABLE_YET The service has not been installed yet.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_RESET_SYSTEM) (\r
- IN EFI_PEI_SERVICES **PeiServices\r
- );\r
-\r
-/**\r
- \r
- This service searches for files with a specific name, within\r
- either the specified firmware volume or all firmware volumes.\r
- The service returns a file handle of type EFI_PEI_FILE_HANDLE,\r
- which must be unique within the system.\r
-\r
- @param FileName A pointer to the name of the file to\r
- find within the firmware volume.\r
-\r
- @param VolumeHandle The firmware volume to search FileHandle\r
- Upon exit, points to the found file's\r
- handle or NULL if it could not be found.\r
-\r
- @retval EFI_SUCCESS File was found.\r
-\r
- @retval EFI_NOT_FOUND File was not found.\r
-\r
- @retval EFI_INVALID_PARAMETER VolumeHandle or FileHandle or\r
- FileName was NULL.\r
-\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_BY_NAME) (\r
- IN CONST EFI_GUID *FileName,\r
- IN CONST EFI_PEI_FV_HANDLE VolumeHandle,\r
- OUT EFI_PEI_FILE_HANDLE *FileHandle\r
-);\r
-\r
-\r
-/**\r
- \r
- @param FileName Name of the file.\r
-\r
- @param FileType File type. See EFI_FV_FILETYPE, which is\r
- defined in the Platform Initialization\r
- Firmware Storage Specification.\r
-\r
- @param FileAttributes Attributes of the file. Type\r
- EFI_FV_FILE_ATTRIBUTES is defined in\r
- the Platform Initialization Firmware\r
- Storage Specification.\r
-\r
- @param Buffer Points to the file's data (not the header).\r
- Not valid if EFI_FV_FILE_ATTRIB_MEMORY_MAPPED\r
- is zero.\r
-\r
- @param BufferSize Size of the file's data.\r
-\r
-**/\r
-typedef struct {\r
- EFI_GUID FileName;\r
- EFI_FV_FILETYPE FileType;\r
- EFI_FV_FILE_ATTRIBUTES FileAttributes;\r
- VOID *Buffer;\r
- UINT32 BufferSize;\r
-} EFI_FV_FILE_INFO;\r
-\r
-/**\r
- \r
- This function returns information about a specific file,\r
- including its file name, type, attributes, starting address and\r
- size. If the firmware volume is not memory mapped then the\r
- Buffer member will be NULL.\r
-\r
- @param FileHandle Handle of the file.\r
-\r
- @param FileInfo Upon exit, points to the file¡¯s\r
- information.\r
-\r
- @retval EFI_SUCCESS File information returned.\r
- \r
- @retval EFI_INVALID_PARAMETER If FileHandle does not\r
- represent a valid file.\r
- \r
- @retval EFI_INVALID_PARAMETER If FileInfo is NULL.\r
- \r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_GET_FILE_INFO) (\r
- IN CONST EFI_PEI_FILE_HANDLE FileHandle,\r
- OUT EFI_FV_FILE_INFO *FileInfo\r
-);\r
-\r
-\r
-/**\r
- \r
- @param FvAttributes Attributes of the firmware volume. Type\r
- EFI_FVB_ATTRIBUTES is defined in the\r
- Platform Initialization Firmware Storage\r
- Specficiation.\r
-\r
- @param FvFormat Format of the firmware volume. For PI\r
- Architecture Firmware Volumes, this can\r
- be copied from FileSystemGuid in\r
- EFI_FIRMWARE_VOLUME_HEADER.\r
-\r
- @param FvName Name of the firmware volume. For PI\r
- Architecture Firmware Volumes, this can\r
- be copied from VolumeName in the\r
- extended header of\r
- EFI_FIRMWARE_VOLUME_HEADER.\r
-\r
- @param FvStart Points to the first byte of the firmware\r
- volume, if bit EFI_FVB_MEMORY_MAPPED is\r
- set in FvAttributes. FvSize Size of the\r
- firmware volume.\r
-\r
-**/\r
-typedef struct {\r
- EFI_FVB_ATTRIBUTES FvAttributes;\r
- EFI_GUID FvFormat;\r
- EFI_GUID FvName;\r
- VOID *FvStart;\r
- UINT64 FvSize;\r
-} EFI_FV_INFO;\r
-\r
-/**\r
- \r
- This function returns information about a specific firmware\r
- volume, including its name, type, attributes, starting address\r
- and size.\r
-\r
- @param VolumeHandle Handle of the volume.\r
-\r
- @param VolumeInfo Upon exit, points to the volume¡¯s\r
- information.\r
-\r
- @retval EFI_SUCCESS File information returned.\r
- \r
- @retval EFI_INVALID_PARAMETER If FileHandle does not\r
- represent a valid file.\r
- \r
- @retval EFI_INVALID_PARAMETER If FileInfo is NULL.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_GET_VOLUME_INFO) (\r
- IN CONST EFI_PEI_FV_HANDLE *VolumeHandle,\r
- OUT EFI_FV_INFO *VolumeInfo\r
-);\r
-\r
-/**\r
- \r
- This service registers a file handle so that after memory is\r
- available, the PEIM will be re-loaded into permanent memory and\r
- re-initialized. The PEIM registered this way will always be\r
- initialized twice. The first time, this function call will\r
- return EFI_SUCCESS. The second time, this function call will\r
- return EFI_ALREADY_STARTED. Depending on the order in which\r
- PEIMs are dispatched, the PEIM making this call may be\r
- initialized after permanent memory is installed, even the first\r
- time.\r
-\r
- @param FileHandle PEIM¡¯s file handle. Must be the currently\r
- xecuting PEIM.\r
- \r
- @retval EFI_SUCCESS The PEIM was successfully registered for\r
- shadowing.\r
-\r
- @retval EFI_ALREADY_STARTED The PEIM was previously\r
- registered for shadowing.\r
-\r
- @retval EFI_NOT_FOUND The FileHandle does not refer to a\r
- valid file handle.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_REGISTER_FOR_SHADOW) (\r
- IN CONST EFI_PEI_FILE_HANDLE FileHandle\r
-);\r
-\r
-\r
-//\r
-// PEI Specification Revision information\r
-//\r
-#define PEI_SPECIFICATION_MAJOR_REVISION 1\r
-#define PEI_SPECIFICATION_MINOR_REVISION 0\r
-\r
-//\r
-// PEI Services Table\r
-//\r
-#define PEI_SERVICES_SIGNATURE 0x5652455320494550\r
-#define PEI_SERVICES_REVISION (PEI_SPECIFICATION_MAJOR_REVISION<<16) | (PEI_SPECIFICATION_MINOR_REVISION)\r
-\r
-struct EFI_PEI_SERVICES {\r
- EFI_TABLE_HEADER Hdr;\r
- //\r
- // PPI Functions\r
- //\r
- EFI_PEI_INSTALL_PPI InstallPpi;\r
- EFI_PEI_REINSTALL_PPI ReInstallPpi;\r
- EFI_PEI_LOCATE_PPI LocatePpi;\r
- EFI_PEI_NOTIFY_PPI NotifyPpi;\r
- //\r
- // Boot Mode Functions\r
- //\r
- EFI_PEI_GET_BOOT_MODE GetBootMode;\r
- EFI_PEI_SET_BOOT_MODE SetBootMode;\r
- //\r
- // HOB Functions\r
- //\r
- EFI_PEI_GET_HOB_LIST GetHobList;\r
- EFI_PEI_CREATE_HOB CreateHob;\r
- //\r
- // Firmware Volume Functions\r
- //\r
- EFI_PEI_FFS_FIND_NEXT_VOLUME2 FfsFindNextVolume;\r
- EFI_PEI_FFS_FIND_NEXT_FILE2 FfsFindNextFile;\r
- EFI_PEI_FFS_FIND_SECTION_DATA2 FfsFindSectionData;\r
- //\r
- // PEI Memory Functions\r
- //\r
- EFI_PEI_INSTALL_PEI_MEMORY InstallPeiMemory;\r
- EFI_PEI_ALLOCATE_PAGES AllocatePages;\r
- EFI_PEI_ALLOCATE_POOL AllocatePool;\r
- EFI_PEI_COPY_MEM CopyMem;\r
- EFI_PEI_SET_MEM SetMem;\r
- //\r
- // Status Code\r
- EFI_PEI_REPORT_STATUS_CODE ReportStatusCode;\r
- //\r
- // Reset\r
- //\r
- EFI_PEI_RESET_SYSTEM ResetSystem;\r
- //\r
- // (the following interfaces are installed by publishing PEIM)\r
- //\r
- // I/O Abstractions\r
- //\r
- EFI_PEI_CPU_IO_PPI *CpuIo;\r
- EFI_PEI_PCI_CFG2_PPI *PciCfg;\r
- //\r
- // Future Installed Services\r
- EFI_PEI_FFS_FIND_BY_NAME FfsFindFileByName;\r
- EFI_PEI_FFS_GET_FILE_INFO FfsGetFileInfo;\r
- EFI_PEI_FFS_GET_VOLUME_INFO FfsGetVolumeInfo;\r
- EFI_PEI_REGISTER_FOR_SHADOW RegisterForShadow;\r
-} ;\r
-\r
-\r
-typedef struct _EFI_SEC_PEI_HAND_OFF {\r
- //\r
- // Size of the data structure.\r
- // \r
- UINT16 DataSize;\r
-\r
- //\r
- // Points to the first byte of the boot firmware volume, \r
- // which the PEI Dispatcher should search for \r
- // PEI modules.\r
- // \r
- VOID *BootFirmwareVolumeBase;\r
-\r
- //\r
- // Size of the boot firmware volume, in bytes.\r
- // \r
- UINTN BootFirmwareVolumeSize;\r
-\r
- //\r
- // Points to the first byte of the temporary RAM.\r
- // \r
- VOID *TemporaryRamBase;\r
-\r
- //\r
- // Size of the temporary RAM, in bytes.\r
- // \r
- UINTN TemporaryRamSize;\r
-\r
- //\r
- // Points to the first byte of the temporary RAM \r
- // available for use by the PEI Foundation. The area \r
- // described by PeiTemporaryRamBase and PeiTemporaryRamSize \r
- // must not extend outside beyond the area described by\r
- // TemporaryRamBase & TemporaryRamSize. This area should not\r
- // overlap with the area reported by StackBase and \r
- // StackSize.\r
- //\r
- VOID *PeiTemporaryRamBase;\r
-\r
- //\r
- // Size of the available temporary RAM available for \r
- // use by the PEI Foundation, in bytes.\r
- // \r
- UINTN PeiTemporaryRamSize;\r
-\r
- //\r
- // Points to the first byte of the stack. \r
- // This are may be part of the memory described by \r
- // TemporaryRamBase and TemporaryRamSize \r
- // or may be an entirely separate area.\r
- // \r
- VOID *StackBase;\r
-\r
- //\r
- // Size of the stack, in bytes.\r
- // \r
- UINTN StackSize;\r
-} EFI_SEC_PEI_HAND_OFF;\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
-\r
- Root include file for Mde Package DXE_CORE, DXE, SMM, SAL type modules.\r
-\r
- This is the include file for any module of type base. Base modules only use \r
- types defined via this include file and can be ported easily to any \r
- environment. There are a set of base libraries in the Mde Package that can\r
- be used to implement base modules.\r
-\r
-Copyright (c) 2006 - 2007, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#ifndef __PI_DXE_H__\r
-#define __PI_DXE_H__\r
-\r
-#include <Uefi/UefiBaseType.h>\r
-#include <Uefi/UefiSpec.h>\r
-\r
-#include <Pi/PiDxeCis.h>\r
-\r
-#endif\r
-\r
+++ /dev/null
-/** @file\r
-\r
- Root include file for Mde Package SEC, PEIM, PEI_CORE type modules.\r
-\r
- This is the include file for any module of type base. Base modules only use \r
- types defined via this include file and can be ported easily to any \r
- environment. There are a set of base libraries in the Mde Package that can\r
- be used to implement base modules.\r
-\r
-Copyright (c) 2006 - 2007, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#ifndef __PI_PEI_H__\r
-#define __PI_PEI_H__\r
-\r
-#include <Uefi/UefiBaseType.h>\r
-#include <Pi/PiPeiCis.h>\r
-#include <Uefi/UefiMultiPhase.h>\r
-\r
-\r
-#endif\r
-\r
+++ /dev/null
-/** @file\r
-\r
- Root include file for Mde Package UEFI, UEFI_APPLICATION type modules.\r
-\r
- This is the include file for any module of type base. Base modules only use \r
- types defined via this include file and can be ported easily to any \r
- environment. There are a set of base libraries in the Mde Package that can\r
- be used to implement base modules.\r
-\r
-Copyright (c) 2006 - 2007, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#ifndef __PI_UEFI_H__\r
-#define __PI_UEFI_H__\r
-\r
-#include <UefiBaseType.h>\r
-#include <UefiSpec.h>\r
-\r
-#endif\r
-\r
+++ /dev/null
-\r
-/* @file\r
-\r
- Defines data types and constants introduced in UEFI.\r
-\r
-Copyright (c) 2006 - 2007, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#ifndef __UEFI_BASETYPE_H__\r
-#define __UEFI_BASETYPE_H__\r
-\r
-#include "Base.h"\r
-\r
-//\r
-// Basical data type definitions introduced in UEFI.\r
-// \r
-typedef GUID EFI_GUID;\r
-typedef RETURN_STATUS EFI_STATUS;\r
-typedef VOID *EFI_HANDLE;\r
-\r
-typedef VOID *EFI_EVENT;\r
-\r
-typedef UINTN EFI_TPL;\r
-\r
-\r
-typedef UINT64 EFI_LBA;\r
-\r
-\r
-typedef UINT16 EFI_HII_HANDLE;\r
-typedef UINT16 STRING_REF;\r
-\r
-typedef UINT64 EFI_PHYSICAL_ADDRESS;\r
-typedef UINT64 EFI_VIRTUAL_ADDRESS;\r
-\r
-//\r
-// EFI Time Abstraction:\r
-// Year: 2000 - 20XX\r
-// Month: 1 - 12\r
-// Day: 1 - 31\r
-// Hour: 0 - 23\r
-// Minute: 0 - 59\r
-// Second: 0 - 59\r
-// Nanosecond: 0 - 999,999,999\r
-// TimeZone: -1440 to 1440 or 2047\r
-//\r
-typedef struct {\r
- UINT16 Year;\r
- UINT8 Month;\r
- UINT8 Day;\r
- UINT8 Hour;\r
- UINT8 Minute;\r
- UINT8 Second;\r
- UINT8 Pad1;\r
- UINT32 Nanosecond;\r
- INT16 TimeZone;\r
- UINT8 Daylight;\r
- UINT8 Pad2;\r
-} EFI_TIME;\r
-\r
-//\r
-// Enumeration of EFI_STATUS.\r
-// \r
-#define EFI_SUCCESS RETURN_SUCCESS \r
-#define EFI_LOAD_ERROR RETURN_LOAD_ERROR \r
-#define EFI_INVALID_PARAMETER RETURN_INVALID_PARAMETER \r
-#define EFI_UNSUPPORTED RETURN_UNSUPPORTED \r
-#define EFI_BAD_BUFFER_SIZE RETURN_BAD_BUFFER_SIZE \r
-#define EFI_BUFFER_TOO_SMALL RETURN_BUFFER_TOO_SMALL \r
-#define EFI_NOT_READY RETURN_NOT_READY \r
-#define EFI_DEVICE_ERROR RETURN_DEVICE_ERROR \r
-#define EFI_WRITE_PROTECTED RETURN_WRITE_PROTECTED \r
-#define EFI_OUT_OF_RESOURCES RETURN_OUT_OF_RESOURCES \r
-#define EFI_VOLUME_CORRUPTED RETURN_VOLUME_CORRUPTED \r
-#define EFI_VOLUME_FULL RETURN_VOLUME_FULL \r
-#define EFI_NO_MEDIA RETURN_NO_MEDIA \r
-#define EFI_MEDIA_CHANGED RETURN_MEDIA_CHANGED \r
-#define EFI_NOT_FOUND RETURN_NOT_FOUND \r
-#define EFI_ACCESS_DENIED RETURN_ACCESS_DENIED \r
-#define EFI_NO_RESPONSE RETURN_NO_RESPONSE \r
-#define EFI_NO_MAPPING RETURN_NO_MAPPING \r
-#define EFI_TIMEOUT RETURN_TIMEOUT \r
-#define EFI_NOT_STARTED RETURN_NOT_STARTED \r
-#define EFI_ALREADY_STARTED RETURN_ALREADY_STARTED \r
-#define EFI_ABORTED RETURN_ABORTED \r
-#define EFI_ICMP_ERROR RETURN_ICMP_ERROR \r
-#define EFI_TFTP_ERROR RETURN_TFTP_ERROR \r
-#define EFI_PROTOCOL_ERROR RETURN_PROTOCOL_ERROR \r
-#define EFI_INCOMPATIBLE_VERSION RETURN_INCOMPATIBLE_VERSION \r
-#define EFI_SECURITY_VIOLATION RETURN_SECURITY_VIOLATION \r
-#define EFI_CRC_ERROR RETURN_CRC_ERROR \r
-#define EFI_END_OF_MEDIA RETURN_END_OF_MEDIA\r
-#define EFI_END_OF_FILE RETURN_END_OF_FILE\r
-\r
-#define EFI_WARN_UNKNOWN_GLYPH RETURN_WARN_UNKNOWN_GLYPH \r
-#define EFI_WARN_DELETE_FAILURE RETURN_WARN_DELETE_FAILURE \r
-#define EFI_WARN_WRITE_FAILURE RETURN_WARN_WRITE_FAILURE \r
-#define EFI_WARN_BUFFER_TOO_SMALL RETURN_WARN_BUFFER_TOO_SMALL\r
-\r
-\r
-#define NULL_HANDLE ((VOID *) 0)\r
-\r
-//\r
-// Define macro to encode the status code.\r
-// \r
-#define EFIERR(_a) ENCODE_ERROR(_a)\r
-\r
-#define EFI_ERROR(A) RETURN_ERROR(A)\r
-\r
-//\r
-// Define macros to build data structure signatures from characters.\r
-//\r
-#define EFI_SIGNATURE_16(A, B) ((A) | (B << 8))\r
-#define EFI_SIGNATURE_32(A, B, C, D) (EFI_SIGNATURE_16 (A, B) | (EFI_SIGNATURE_16 (C, D) << 16))\r
-#define EFI_SIGNATURE_64(A, B, C, D, E, F, G, H) \\r
- (EFI_SIGNATURE_32 (A, B, C, D) | ((UINT64) (EFI_SIGNATURE_32 (E, F, G, H)) << 32))\r
-\r
-\r
-//\r
-// Returns the byte offset to a field within a structure\r
-//\r
-#define EFI_FIELD_OFFSET(TYPE,Field) ((UINTN)(&(((TYPE *) 0)->Field)))\r
-\r
-//\r
-// The EFI memory allocation functions work in units of EFI_PAGEs that are\r
-// 4K. This should in no way be confused with the page size of the processor.\r
-// An EFI_PAGE is just the quanta of memory in EFI.\r
-//\r
-#define EFI_PAGE_SIZE 0x1000\r
-#define EFI_PAGE_MASK 0xFFF\r
-#define EFI_PAGE_SHIFT 12\r
-\r
-\r
-#endif\r
+++ /dev/null
-/* @file\r
- Device Path definitions introduced in UEFI.\r
-\r
- This include file must only contain things defined in the UEFI 2.0 specification.\r
- If a code construct is defined in the UEFI 2.0 specification it must be included\r
- by this include file.\r
-\r
- Copyright (c) 2006 - 2007, Intel Corporation\r
- All rights reserved. This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
- Module Name: UefiDevicePath.h\r
-\r
-**/\r
-\r
-#ifndef __UEFI_DEVICE_PATH_H__\r
-#define __UEFI_DEVICE_PATH_H__\r
-\r
-//\r
-// Device Path information\r
-//\r
-\r
-#pragma pack(1)\r
-\r
-//\r
-// Hardware Device Paths\r
-//\r
-#define HARDWARE_DEVICE_PATH 0x01\r
-\r
-#define HW_PCI_DP 0x01\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT8 Function;\r
- UINT8 Device;\r
-} PCI_DEVICE_PATH;\r
-\r
-#define HW_PCCARD_DP 0x02\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT8 FunctionNumber;\r
-} PCCARD_DEVICE_PATH;\r
-\r
-#define HW_MEMMAP_DP 0x03\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT32 MemoryType;\r
- EFI_PHYSICAL_ADDRESS StartingAddress;\r
- EFI_PHYSICAL_ADDRESS EndingAddress;\r
-} MEMMAP_DEVICE_PATH;\r
-\r
-#define HW_VENDOR_DP 0x04\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- EFI_GUID Guid;\r
-} VENDOR_DEVICE_PATH;\r
-\r
-#define HW_CONTROLLER_DP 0x05\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT32 ControllerNumber;\r
-} CONTROLLER_DEVICE_PATH;\r
-\r
-//\r
-// ACPI Device Paths\r
-//\r
-#define ACPI_DEVICE_PATH 0x02\r
-\r
-#define ACPI_DP 0x01\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT32 HID;\r
- UINT32 UID;\r
-} ACPI_HID_DEVICE_PATH;\r
-\r
-#define ACPI_EXTENDED_DP 0x02\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT32 HID;\r
- UINT32 UID;\r
- UINT32 CID;\r
- //\r
- // Optional variable length _HIDSTR\r
- // Optional variable length _UIDSTR\r
- //\r
-} ACPI_EXTENDED_HID_DEVICE_PATH;\r
-\r
-//\r
-// EISA ID Macro\r
-// EISA ID Definition 32-bits\r
-// bits[15:0] - three character compressed ASCII EISA ID.\r
-// bits[31:16] - binary number\r
-// Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z'\r
-//\r
-#define PNP_EISA_ID_CONST 0x41d0\r
-#define EISA_ID(_Name, _Num) ((UINT32) ((_Name) | (_Num) << 16))\r
-#define EISA_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))\r
-#define EFI_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))\r
-\r
-#define PNP_EISA_ID_MASK 0xffff\r
-#define EISA_ID_TO_NUM(_Id) ((_Id) >> 16)\r
-\r
-\r
-#define ACPI_ADR_DP 0x03\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT32 ADR;\r
-} ACPI_ADR_DEVICE_PATH;\r
-\r
-\r
-//\r
-// Messaging Device Paths\r
-//\r
-#define MESSAGING_DEVICE_PATH 0x03\r
-\r
-#define MSG_ATAPI_DP 0x01\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT8 PrimarySecondary;\r
- UINT8 SlaveMaster;\r
- UINT16 Lun;\r
-} ATAPI_DEVICE_PATH;\r
-\r
-#define MSG_SCSI_DP 0x02\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT16 Pun;\r
- UINT16 Lun;\r
-} SCSI_DEVICE_PATH;\r
-\r
-#define MSG_FIBRECHANNEL_DP 0x03\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT32 Reserved;\r
- UINT64 WWN;\r
- UINT64 Lun;\r
-} FIBRECHANNEL_DEVICE_PATH;\r
-\r
-#define MSG_1394_DP 0x04\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT32 Reserved;\r
- UINT64 Guid;\r
-} F1394_DEVICE_PATH;\r
-\r
-#define MSG_USB_DP 0x05\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT8 ParentPortNumber;\r
- UINT8 InterfaceNumber;\r
-} USB_DEVICE_PATH;\r
-\r
-#define MSG_USB_CLASS_DP 0x0f\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT16 VendorId;\r
- UINT16 ProductId;\r
- UINT8 DeviceClass;\r
- UINT8 DeviceSubClass;\r
- UINT8 DeviceProtocol;\r
-} USB_CLASS_DEVICE_PATH;\r
-\r
-#define MSG_USB_WWID_DP 0x10\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT16 InterfaceNumber;\r
- UINT16 VendorId;\r
- UINT16 ProductId;\r
- // CHAR16 SerialNumber[...];\r
-} USB_WWID_DEVICE_PATH;\r
-\r
-\r
-#define MSG_DEVICE_LOGICAL_UNIT_DP 0x11\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT8 Lun;\r
-} DEVICE_LOGICAL_UNIT_DEVICE_PATH;\r
-\r
-#define MSG_SATA_DP 0x12\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT16 HbaPortNumber;\r
- UINT16 PortMultiplierPort;\r
- UINT16 LogicalUnitNumber;\r
-} SATA_DEVICE_PATH;\r
-\r
-#define MSG_I2O_DP 0x06\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT32 Tid;\r
-} I2O_DEVICE_PATH;\r
-\r
-#define MSG_MAC_ADDR_DP 0x0b\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- EFI_MAC_ADDRESS MacAddress;\r
- UINT8 IfType;\r
-} MAC_ADDR_DEVICE_PATH;\r
-\r
-#define MSG_IPv4_DP 0x0c\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- EFI_IPv4_ADDRESS LocalIpAddress;\r
- EFI_IPv4_ADDRESS RemoteIpAddress;\r
- UINT16 LocalPort;\r
- UINT16 RemotePort;\r
- UINT16 Protocol;\r
- BOOLEAN StaticIpAddress;\r
-} IPv4_DEVICE_PATH;\r
-\r
-#define MSG_IPv6_DP 0x0d\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- EFI_IPv6_ADDRESS LocalIpAddress;\r
- EFI_IPv6_ADDRESS RemoteIpAddress;\r
- UINT16 LocalPort;\r
- UINT16 RemotePort;\r
- UINT16 Protocol;\r
- BOOLEAN StaticIpAddress;\r
-} IPv6_DEVICE_PATH;\r
-\r
-#define MSG_INFINIBAND_DP 0x09\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT32 ResourceFlags;\r
- UINT8 PortGid[16];\r
- UINT64 ServiceId;\r
- UINT64 TargetPortId;\r
- UINT64 DeviceId;\r
-} INFINIBAND_DEVICE_PATH;\r
-\r
-#define INFINIBAND_RESOURCE_FLAG_IOC_SERVICE 0x01\r
-#define INFINIBAND_RESOURCE_FLAG_EXTENDED_BOOT_ENVIRONMENT 0x02\r
-#define INFINIBAND_RESOURCE_FLAG_CONSOLE_PROTOCOL 0x04\r
-#define INFINIBAND_RESOURCE_FLAG_STORAGE_PROTOCOL 0x08\r
-#define INFINIBAND_RESOURCE_FLAG_NETWORK_PROTOCOL 0x10\r
-\r
-#define MSG_UART_DP 0x0e\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT32 Reserved;\r
- UINT64 BaudRate;\r
- UINT8 DataBits;\r
- UINT8 Parity;\r
- UINT8 StopBits;\r
-} UART_DEVICE_PATH;\r
-\r
-//\r
-// Use VENDOR_DEVICE_PATH struct\r
-//\r
-#define MSG_VENDOR_DP 0x0a\r
-typedef VENDOR_DEVICE_PATH VENDOR_DEFINED_DEVICE_PATH;\r
-\r
-#define DEVICE_PATH_MESSAGING_PC_ANSI EFI_PC_ANSI_GUID\r
-#define DEVICE_PATH_MESSAGING_VT_100 EFI_VT_100_GUID\r
-#define DEVICE_PATH_MESSAGING_VT_100_PLUS EFI_VT_100_PLUS_GUID\r
-#define DEVICE_PATH_MESSAGING_VT_UTF8 EFI_VT_UTF8_GUID\r
-\r
-#define DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL EFI_UART_DEVICE_PATH_GUID\r
-\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- EFI_GUID Guid;\r
- UINT32 FlowControlMap;\r
-} UART_FLOW_CONTROL_DEVICE_PATH;\r
-\r
-#define DEVICE_PATH_MESSAGING_SAS EFI_SAS_DEVICE_PATH_GUID\r
-\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- EFI_GUID Guid;\r
- UINT32 Reserved;\r
- UINT64 SasAddress;\r
- UINT64 Lun;\r
- UINT16 DeviceTopology;\r
- UINT16 RelativeTargetPort;\r
-} SAS_DEVICE_PATH;\r
-\r
-#define MSG_ISCSI_DP 0x13\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT16 NetworkProtocol;\r
- UINT16 LoginOption;\r
- UINT16 Reserved;\r
- UINT16 TargetPortalGroupTag;\r
- UINT64 LUN;\r
- // CHAR8 iSCSI Target Name\r
-} ISCSI_DEVICE_PATH;\r
-\r
-#define ISCSI_LOGIN_OPTION_NO_HEADER_DIGEST 0x0000\r
-#define ISCSI_LOGIN_OPTION_HEADER_DIGEST_USING_CRC32C 0x0002\r
-#define ISCSI_LOGIN_OPTION_NO_DATA_DIGEST 0x0000\r
-#define ISCSI_LOGIN_OPTION_DATA_DIGEST_USING_CRC32C 0x0008\r
-#define ISCSI_LOGIN_OPTION_AUTHMETHOD_CHAP 0x0000\r
-#define ISCSI_LOGIN_OPTION_AUTHMETHOD_NON 0x1000\r
-#define ISCSI_LOGIN_OPTION_CHAP_BI 0x0000\r
-#define ISCSI_LOGIN_OPTION_CHAP_UNI 0x2000\r
-\r
-//\r
-// Media Device Path\r
-//\r
-#define MEDIA_DEVICE_PATH 0x04\r
-\r
-#define MEDIA_HARDDRIVE_DP 0x01\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT32 PartitionNumber;\r
- UINT64 PartitionStart;\r
- UINT64 PartitionSize;\r
- UINT8 Signature[16];\r
- UINT8 MBRType;\r
- UINT8 SignatureType;\r
-} HARDDRIVE_DEVICE_PATH;\r
-\r
-#define MBR_TYPE_PCAT 0x01\r
-#define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02\r
-\r
-#define SIGNATURE_TYPE_MBR 0x01\r
-#define SIGNATURE_TYPE_GUID 0x02\r
-\r
-#define MEDIA_CDROM_DP 0x02\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT32 BootEntry;\r
- UINT64 PartitionStart;\r
- UINT64 PartitionSize;\r
-} CDROM_DEVICE_PATH;\r
-\r
-//\r
-// Use VENDOR_DEVICE_PATH struct\r
-//\r
-#define MEDIA_VENDOR_DP 0x03\r
-\r
-#define MEDIA_FILEPATH_DP 0x04\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- CHAR16 PathName[1];\r
-} FILEPATH_DEVICE_PATH;\r
-\r
-#define SIZE_OF_FILEPATH_DEVICE_PATH EFI_FIELD_OFFSET(FILEPATH_DEVICE_PATH,PathName)\r
-\r
-#define MEDIA_PROTOCOL_DP 0x05\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- EFI_GUID Protocol;\r
-} MEDIA_PROTOCOL_DEVICE_PATH;\r
-\r
-\r
-#define MEDIA_PIWG_FW_VOL_DP 0x6\r
-typedef MEDIA_PROTOCOL_DEVICE_PATH MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;\r
-\r
-\r
-#define MEDIA_PIWG_FW_FILE_DP 0x7\r
-typedef MEDIA_PROTOCOL_DEVICE_PATH MEDIA_FW_VOL_DEVICE_PATH;\r
-\r
-//\r
-// BBS Device Path\r
-//\r
-#define BBS_DEVICE_PATH 0x05\r
-#define BBS_BBS_DP 0x01\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT16 DeviceType;\r
- UINT16 StatusFlag;\r
- CHAR8 String[1];\r
-} BBS_BBS_DEVICE_PATH;\r
-\r
-//\r
-// DeviceType definitions - from BBS specification\r
-//\r
-#define BBS_TYPE_FLOPPY 0x01\r
-#define BBS_TYPE_HARDDRIVE 0x02\r
-#define BBS_TYPE_CDROM 0x03\r
-#define BBS_TYPE_PCMCIA 0x04\r
-#define BBS_TYPE_USB 0x05\r
-#define BBS_TYPE_EMBEDDED_NETWORK 0x06\r
-#define BBS_TYPE_BEV 0x80\r
-#define BBS_TYPE_UNKNOWN 0xFF\r
-\r
-\r
-//\r
-// Union of all possible Device Paths and pointers to Device Paths\r
-//\r
-\r
-typedef union {\r
- EFI_DEVICE_PATH_PROTOCOL DevPath;\r
- PCI_DEVICE_PATH Pci;\r
- PCCARD_DEVICE_PATH PcCard;\r
- MEMMAP_DEVICE_PATH MemMap;\r
- VENDOR_DEVICE_PATH Vendor;\r
-\r
- CONTROLLER_DEVICE_PATH Controller;\r
- ACPI_HID_DEVICE_PATH Acpi;\r
-\r
- ATAPI_DEVICE_PATH Atapi;\r
- SCSI_DEVICE_PATH Scsi;\r
- FIBRECHANNEL_DEVICE_PATH FibreChannel;\r
-\r
- F1394_DEVICE_PATH F1394;\r
- USB_DEVICE_PATH Usb;\r
- SATA_DEVICE_PATH Sata;\r
- USB_CLASS_DEVICE_PATH UsbClass;\r
- I2O_DEVICE_PATH I2O;\r
- MAC_ADDR_DEVICE_PATH MacAddr;\r
- IPv4_DEVICE_PATH Ipv4;\r
- IPv6_DEVICE_PATH Ipv6;\r
- INFINIBAND_DEVICE_PATH InfiniBand;\r
- UART_DEVICE_PATH Uart;\r
-\r
- HARDDRIVE_DEVICE_PATH HardDrive;\r
- CDROM_DEVICE_PATH CD;\r
-\r
- FILEPATH_DEVICE_PATH FilePath;\r
- MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol;\r
-\r
- BBS_BBS_DEVICE_PATH Bbs;\r
-} EFI_DEV_PATH;\r
-\r
-\r
-\r
-typedef union {\r
- EFI_DEVICE_PATH_PROTOCOL *DevPath;\r
- PCI_DEVICE_PATH *Pci;\r
- PCCARD_DEVICE_PATH *PcCard;\r
- MEMMAP_DEVICE_PATH *MemMap;\r
- VENDOR_DEVICE_PATH *Vendor;\r
-\r
- CONTROLLER_DEVICE_PATH *Controller;\r
- ACPI_HID_DEVICE_PATH *Acpi;\r
- ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi;\r
-\r
- ATAPI_DEVICE_PATH *Atapi;\r
- SCSI_DEVICE_PATH *Scsi;\r
- FIBRECHANNEL_DEVICE_PATH *FibreChannel;\r
-\r
- F1394_DEVICE_PATH *F1394;\r
- USB_DEVICE_PATH *Usb;\r
- SATA_DEVICE_PATH *Sata;\r
- USB_CLASS_DEVICE_PATH *UsbClass;\r
- I2O_DEVICE_PATH *I2O;\r
- MAC_ADDR_DEVICE_PATH *MacAddr;\r
- IPv4_DEVICE_PATH *Ipv4;\r
- IPv6_DEVICE_PATH *Ipv6;\r
- INFINIBAND_DEVICE_PATH *InfiniBand;\r
- UART_DEVICE_PATH *Uart;\r
-\r
- HARDDRIVE_DEVICE_PATH *HardDrive;\r
- CDROM_DEVICE_PATH *CD;\r
-\r
- FILEPATH_DEVICE_PATH *FilePath;\r
- MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol;\r
-\r
- BBS_BBS_DEVICE_PATH *Bbs;\r
- UINT8 *Raw;\r
-} EFI_DEV_PATH_PTR;\r
-\r
-#pragma pack()\r
-\r
-\r
-#endif\r
- \r
-\r
+++ /dev/null
-/* @file\r
- EFI Guid Partition Table Format Definition.\r
-\r
- Copyright (c) 2006 - 2007, Intel Corporation\r
- All rights reserved. This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
- Module Name: UefiGpt.h\r
-\r
-**/\r
-\r
-#ifndef __UEFI_GPT_H__\r
-#define __UEFI_GPT_H__\r
-\r
-#define PRIMARY_PART_HEADER_LBA 1\r
-\r
-//\r
-// EFI Partition Table Signature: "EFI PART"\r
-// \r
-#define EFI_PTAB_HEADER_ID 0x5452415020494645ULL\r
-\r
-#pragma pack(1)\r
-//\r
-// GPT Partition Table Header\r
-//\r
-typedef struct {\r
- EFI_TABLE_HEADER Header;\r
- EFI_LBA MyLBA;\r
- EFI_LBA AlternateLBA;\r
- EFI_LBA FirstUsableLBA;\r
- EFI_LBA LastUsableLBA;\r
- EFI_GUID DiskGUID;\r
- EFI_LBA PartitionEntryLBA;\r
- UINT32 NumberOfPartitionEntries;\r
- UINT32 SizeOfPartitionEntry;\r
- UINT32 PartitionEntryArrayCRC32;\r
-} EFI_PARTITION_TABLE_HEADER;\r
-\r
-//\r
-// GPT Partition Entry\r
-//\r
-typedef struct {\r
- EFI_GUID PartitionTypeGUID;\r
- EFI_GUID UniquePartitionGUID;\r
- EFI_LBA StartingLBA;\r
- EFI_LBA EndingLBA;\r
- UINT64 Attributes;\r
- CHAR16 PartitionName[36];\r
-} EFI_PARTITION_ENTRY;\r
-\r
-//\r
-// GPT Partition Entry Status\r
-//\r
-typedef struct {\r
- BOOLEAN OutOfRange;\r
- BOOLEAN Overlap;\r
-} EFI_PARTITION_ENTRY_STATUS;\r
-\r
-#pragma pack()\r
-#endif\r
-\r
-\r
+++ /dev/null
-\r
-/** @file\r
- This file defines the encoding for the VFR (Visual Form Representation) language.\r
- IFR is primarily consumed by the EFI presentation engine, and produced by EFI\r
- internal application and drivers as well as all add-in card option-ROM drivers\r
-\r
- Copyright (c) 2006 - 2007, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: UefiInternalFormRepresentation.h\r
-\r
- @par Revision Reference:\r
- These definitions are from UEFI2.1.\r
-\r
-**/\r
-\r
-#ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__\r
-#define __UEFI_INTERNAL_FORMREPRESENTATION_H__\r
-\r
-//\r
-// The following types are currently defined:\r
-//\r
-typedef UINT32 RELOFST;\r
-typedef CHAR16 *EFI_STRING;\r
-\r
-//\r
-// IFR Op codes\r
-//\r
-#define EFI_IFR_FORM_OP 0x01\r
-#define EFI_IFR_SUBTITLE_OP 0x02\r
-#define EFI_IFR_TEXT_OP 0x03\r
-#define EFI_IFR_GRAPHIC_OP 0x04\r
-#define EFI_IFR_ONE_OF_OP 0x05\r
-#define EFI_IFR_CHECKBOX_OP 0x06\r
-#define EFI_IFR_NUMERIC_OP 0x07\r
-#define EFI_IFR_PASSWORD_OP 0x08\r
-#define EFI_IFR_ONE_OF_OPTION_OP 0x09 // ONEOF OPTION field\r
-#define EFI_IFR_SUPPRESS_IF_OP 0x0A\r
-#define EFI_IFR_END_FORM_OP 0x0B\r
-#define EFI_IFR_HIDDEN_OP 0x0C\r
-#define EFI_IFR_END_FORM_SET_OP 0x0D\r
-#define EFI_IFR_FORM_SET_OP 0x0E\r
-#define EFI_IFR_REF_OP 0x0F\r
-#define EFI_IFR_END_ONE_OF_OP 0x10\r
-#define EFI_IFR_END_OP EFI_IFR_END_ONE_OF_OP\r
-#define EFI_IFR_INCONSISTENT_IF_OP 0x11\r
-#define EFI_IFR_EQ_ID_VAL_OP 0x12\r
-#define EFI_IFR_EQ_ID_ID_OP 0x13\r
-#define EFI_IFR_EQ_ID_LIST_OP 0x14\r
-#define EFI_IFR_AND_OP 0x15\r
-#define EFI_IFR_OR_OP 0x16\r
-#define EFI_IFR_NOT_OP 0x17\r
-#define EFI_IFR_END_IF_OP 0x18 // for endif of inconsistentif, suppressif, grayoutif\r
-#define EFI_IFR_GRAYOUT_IF_OP 0x19\r
-#define EFI_IFR_DATE_OP 0x1A\r
-#define EFI_IFR_TIME_OP 0x1B\r
-#define EFI_IFR_STRING_OP 0x1C\r
-#define EFI_IFR_LABEL_OP 0x1D\r
-#define EFI_IFR_SAVE_DEFAULTS_OP 0x1E\r
-#define EFI_IFR_RESTORE_DEFAULTS_OP 0x1F\r
-#define EFI_IFR_BANNER_OP 0x20\r
-#define EFI_IFR_INVENTORY_OP 0x21\r
-#define EFI_IFR_EQ_VAR_VAL_OP 0x22\r
-#define EFI_IFR_ORDERED_LIST_OP 0x23\r
-#define EFI_IFR_VARSTORE_OP 0x24\r
-#define EFI_IFR_VARSTORE_SELECT_OP 0x25\r
-#define EFI_IFR_VARSTORE_SELECT_PAIR_OP 0x26\r
-#define EFI_IFR_TRUE_OP 0x27\r
-#define EFI_IFR_FALSE_OP 0x28\r
-#define EFI_IFR_GT_OP 0x29\r
-#define EFI_IFR_GE_OP 0x2A\r
-#define EFI_IFR_OEM_DEFINED_OP 0x2B\r
-#define EFI_IFR_LAST_OPCODE EFI_IFR_OEM_DEFINED_OP\r
-#define EFI_IFR_OEM_OP 0xFE\r
-#define EFI_IFR_NV_ACCESS_COMMAND 0xFF\r
-\r
-//\r
-// Define values for the flags fields in some VFR opcodes. These are\r
-// bitmasks.\r
-//\r
-#define EFI_IFR_FLAG_DEFAULT 0x01\r
-#define EFI_IFR_FLAG_MANUFACTURING 0x02\r
-#define EFI_IFR_FLAG_INTERACTIVE 0x04\r
-#define EFI_IFR_FLAG_NV_ACCESS 0x08\r
-#define EFI_IFR_FLAG_RESET_REQUIRED 0x10\r
-#define EFI_IFR_FLAG_LATE_CHECK 0x20\r
-\r
-#define EFI_NON_DEVICE_CLASS 0x00 // Useful when you do not want something in the Device Manager\r
-#define EFI_DISK_DEVICE_CLASS 0x01\r
-#define EFI_VIDEO_DEVICE_CLASS 0x02\r
-#define EFI_NETWORK_DEVICE_CLASS 0x04\r
-#define EFI_INPUT_DEVICE_CLASS 0x08\r
-#define EFI_ON_BOARD_DEVICE_CLASS 0x10\r
-#define EFI_OTHER_DEVICE_CLASS 0x20\r
-\r
-#define EFI_SETUP_APPLICATION_SUBCLASS 0x00\r
-#define EFI_GENERAL_APPLICATION_SUBCLASS 0x01\r
-#define EFI_FRONT_PAGE_SUBCLASS 0x02\r
-#define EFI_SINGLE_USE_SUBCLASS 0x03 // Used to display a single entity and then exit\r
-\r
-//\r
-// Used to flag dynamically created op-codes. This is meaningful to the IFR Library set\r
-// and the browser since we need to distinguish between compiled NV map data and created data.\r
-// We do not allow new entries to be created in the NV map dynamically however we still need\r
-// to display this information correctly. To dynamically create op-codes and assume that their\r
-// data will be saved, ensure that the NV starting location they refer to is pre-defined in the\r
-// NV map.\r
-//\r
-#define EFI_IFR_FLAG_CREATED 128\r
-\r
-#pragma pack(1)\r
-//\r
-// IFR Structure definitions\r
-//\r
-typedef struct {\r
- UINT8 OpCode;\r
- UINT8 Length;\r
-} EFI_IFR_OP_HEADER;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- EFI_GUID Guid;\r
- STRING_REF FormSetTitle;\r
- STRING_REF Help;\r
- EFI_PHYSICAL_ADDRESS CallbackHandle;\r
- UINT16 Class;\r
- UINT16 SubClass;\r
- UINT16 NvDataSize; // set once, size of the NV data as defined in the script\r
-} EFI_IFR_FORM_SET;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 FormId;\r
- STRING_REF FormTitle;\r
-} EFI_IFR_FORM;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 LabelId;\r
-} EFI_IFR_LABEL;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- STRING_REF SubTitle;\r
-} EFI_IFR_SUBTITLE;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- STRING_REF Help;\r
- STRING_REF Text;\r
- STRING_REF TextTwo;\r
- UINT8 Flags; // This is included solely for purposes of interactive/dynamic support.\r
- UINT16 Key; // Value to be passed to caller to identify this particular op-code\r
-} EFI_IFR_TEXT;\r
-\r
-//\r
-// goto\r
-//\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 FormId;\r
- STRING_REF Prompt;\r
- STRING_REF Help; // The string Token for the context-help\r
- UINT8 Flags; // This is included solely for purposes of interactive/dynamic support.\r
- UINT16 Key; // Value to be passed to caller to identify this particular op-code\r
-} EFI_IFR_REF;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_END_FORM;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_END_FORM_SET;\r
-\r
-//\r
-// Also notice that the IFR_ONE_OF and IFR_CHECK_BOX are identical in structure......code assumes this to be true, if this ever\r
-// changes we need to revisit the InitializeTagStructures code\r
-//\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name\r
- UINT8 Width; // The Size of the Data being saved\r
- STRING_REF Prompt; // The String Token for the Prompt\r
- STRING_REF Help; // The string Token for the context-help\r
-} EFI_IFR_ONE_OF;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 QuestionId; // The offset in NV for storage of the data\r
- UINT8 MaxEntries; // The maximum number of options in the ordered list (=size of NVStore)\r
- STRING_REF Prompt; // The string token for the prompt\r
- STRING_REF Help; // The string token for the context-help\r
-} EFI_IFR_ORDERED_LIST;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name\r
- UINT8 Width; // The Size of the Data being saved\r
- STRING_REF Prompt; // The String Token for the Prompt\r
- STRING_REF Help; // The string Token for the context-help\r
- UINT8 Flags; // For now, if non-zero, means that it is the default option, - further definition likely\r
- UINT16 Key; // Value to be passed to caller to identify this particular op-code\r
-} EFI_IFR_CHECKBOX, EFI_IFR_CHECK_BOX;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- STRING_REF Option; // The string token describing the option\r
- UINT16 Value; // The value associated with this option that is stored in the NVRAM if chosen\r
- UINT8 Flags; // For now, if non-zero, means that it is the default option, - further definition likely above\r
- UINT16 Key; // Value to be passed to caller to identify this particular op-code\r
-} EFI_IFR_ONE_OF_OPTION;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name\r
- UINT8 Width; // The Size of the Data being saved\r
- STRING_REF Prompt; // The String Token for the Prompt\r
- STRING_REF Help; // The string Token for the context-help\r
- UINT8 Flags; // This is included solely for purposes of interactive/dynamic support.\r
- UINT16 Key; // Value to be passed to caller to identify this particular op-code\r
- UINT16 Minimum;\r
- UINT16 Maximum;\r
- UINT16 Step; // If step is 0, then manual input is specified, otherwise, left/right arrow selection is called for\r
- UINT16 Default;\r
-} EFI_IFR_NUMERIC;\r
-\r
-//\r
-// There is an interesting twist with regards to Time and Date. This is one of the few items which can accept input from\r
-// a user, however may or may not need to use storage in the NVRAM space. The decided method for determining if NVRAM space\r
-// will be used (only for a TimeOp or DateOp) is: If .QuestionId == 0 && .Width == 0 (normally an impossibility) then use system\r
-// resources to store the data away and not NV resources. In other words, the setup engine will call gRT->SetTime, and gRT->SetDate\r
-// for the saving of data, and the values displayed will be from the gRT->GetXXXX series of calls.\r
-//\r
-typedef struct {\r
- EFI_IFR_NUMERIC Hour;\r
- EFI_IFR_NUMERIC Minute;\r
- EFI_IFR_NUMERIC Second;\r
-} EFI_IFR_TIME;\r
-\r
-typedef struct {\r
- EFI_IFR_NUMERIC Year;\r
- EFI_IFR_NUMERIC Month;\r
- EFI_IFR_NUMERIC Day;\r
-} EFI_IFR_DATE;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name\r
- UINT8 Width; // The Size of the Data being saved -- BUGBUG -- remove someday\r
- STRING_REF Prompt; // The String Token for the Prompt\r
- STRING_REF Help; // The string Token for the context-help\r
- UINT8 Flags; // This is included solely for purposes of interactive/dynamic support.\r
- UINT16 Key; // Value to be passed to caller to identify this particular op-code\r
- UINT8 MinSize; // Minimum allowable sized password\r
- UINT8 MaxSize; // Maximum allowable sized password\r
- UINT16 Encoding;\r
-} EFI_IFR_PASSWORD;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name\r
- UINT8 Width; // The Size of the Data being saved -- BUGBUG -- remove someday\r
- STRING_REF Prompt; // The String Token for the Prompt\r
- STRING_REF Help; // The string Token for the context-help\r
- UINT8 Flags; // This is included solely for purposes of interactive/dynamic support.\r
- UINT16 Key; // Value to be passed to caller to identify this particular op-code\r
- UINT8 MinSize; // Minimum allowable sized password\r
- UINT8 MaxSize; // Maximum allowable sized password\r
-} EFI_IFR_STRING;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_END_ONE_OF;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 Value;\r
- UINT16 Key;\r
-} EFI_IFR_HIDDEN;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT8 Flags;\r
-} EFI_IFR_SUPPRESS;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT8 Flags;\r
-} EFI_IFR_GRAY_OUT;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- STRING_REF Popup;\r
- UINT8 Flags;\r
-} EFI_IFR_INCONSISTENT;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 QuestionId; // offset into variable storage\r
- UINT8 Width; // size of variable storage\r
- UINT16 Value; // value to compare against\r
-} EFI_IFR_EQ_ID_VAL;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 QuestionId; // offset into variable storage\r
- UINT8 Width; // size of variable storage\r
- UINT16 ListLength;\r
- UINT16 ValueList[1];\r
-} EFI_IFR_EQ_ID_LIST;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 QuestionId1; // offset into variable storage for first value to compare\r
- UINT8 Width; // size of variable storage (must be same for both)\r
- UINT16 QuestionId2; // offset into variable storage for second value to compare\r
-} EFI_IFR_EQ_ID_ID;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 VariableId; // offset into variable storage\r
- UINT16 Value; // value to compare against\r
-} EFI_IFR_EQ_VAR_VAL;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_AND;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_OR;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_NOT;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_END_EXPR, EFI_IFR_END_IF;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 FormId;\r
- STRING_REF Prompt;\r
- STRING_REF Help;\r
- UINT8 Flags;\r
- UINT16 Key;\r
-} EFI_IFR_SAVE_DEFAULTS;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- STRING_REF Help;\r
- STRING_REF Text;\r
- STRING_REF TextTwo; // optional text\r
-} EFI_IFR_INVENTORY;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- EFI_GUID Guid; // GUID for the variable\r
- UINT16 VarId; // variable store ID, as referenced elsewhere in the form\r
- UINT16 Size; // size of the variable storage\r
-} EFI_IFR_VARSTORE;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 VarId; // variable store ID, as referenced elsewhere in the form\r
-} EFI_IFR_VARSTORE_SELECT;\r
-\r
-//\r
-// Used for the ideqid VFR statement where two variable stores may be referenced in the\r
-// same VFR statement.\r
-// A browser should treat this as an EFI_IFR_VARSTORE_SELECT statement and assume that all following\r
-// IFR opcodes use the VarId as defined here.\r
-//\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- UINT16 VarId; // variable store ID, as referenced elsewhere in the form\r
- UINT16 SecondaryVarId; // variable store ID, as referenced elsewhere in the form\r
-} EFI_IFR_VARSTORE_SELECT_PAIR;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_TRUE;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_FALSE;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_GT;\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
-} EFI_IFR_GE;\r
-\r
-//\r
-// Save defaults and restore defaults have same structure\r
-//\r
-#define EFI_IFR_RESTORE_DEFAULTS EFI_IFR_SAVE_DEFAULTS\r
-\r
-typedef struct {\r
- EFI_IFR_OP_HEADER Header;\r
- STRING_REF Title; // The string token for the banner title\r
- UINT16 LineNumber; // 1-based line number\r
- UINT8 Alignment; // left, center, or right-aligned\r
-} EFI_IFR_BANNER;\r
-\r
-#define EFI_IFR_BANNER_ALIGN_LEFT 0\r
-#define EFI_IFR_BANNER_ALIGN_CENTER 1\r
-#define EFI_IFR_BANNER_ALIGN_RIGHT 2\r
-#define EFI_IFR_BANNER_TIMEOUT 0xFF\r
-\r
-#pragma pack()\r
-\r
-\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- This includes some definitions introduced in UEFI that will be used in both PEI and DXE phases.\r
-\r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: UefiMultiPhase.h\r
-\r
-**/\r
-\r
-#ifndef __UEFI_MULTIPHASE_H__\r
-#define __UEFI_MULTIPHASE_H__\r
-\r
-//\r
-// Enumeration of memory types introduced in UEFI.\r
-// \r
-typedef enum {\r
- EfiReservedMemoryType,\r
- EfiLoaderCode,\r
- EfiLoaderData,\r
- EfiBootServicesCode,\r
- EfiBootServicesData,\r
- EfiRuntimeServicesCode,\r
- EfiRuntimeServicesData,\r
- EfiConventionalMemory,\r
- EfiUnusableMemory,\r
- EfiACPIReclaimMemory,\r
- EfiACPIMemoryNVS,\r
- EfiMemoryMappedIO,\r
- EfiMemoryMappedIOPortSpace,\r
- EfiPalCode,\r
- EfiMaxMemoryType\r
-} EFI_MEMORY_TYPE;\r
-\r
-\r
-//\r
-// Data structure that precedes all of the standard EFI table types.\r
-// \r
-typedef struct {\r
- UINT64 Signature;\r
- UINT32 Revision;\r
- UINT32 HeaderSize;\r
- UINT32 CRC32;\r
- UINT32 Reserved;\r
-} EFI_TABLE_HEADER;\r
-\r
-//\r
-// Attributes of variable.\r
-// \r
-#define EFI_VARIABLE_NON_VOLATILE 0x00000001\r
-#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002\r
-#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004\r
-#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008\r
-\r
-//\r
-// This attribute is identified by the mnemonic 'HR' \r
-// elsewhere in this specification.\r
-// \r
-#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010\r
-\r
-\r
-\r
-//\r
-// _WIN_CERTIFICATE.wCertificateType\r
-// \r
-#define WIN_CERT_TYPE_EFI_PKCS115 0x0EF0\r
-#define WIN_CERT_TYPE_EFI_GUID 0x0EF1\r
-\r
-/**\r
- \r
- The WIN_CERTIFICATE structure is part of the PE/COFF\r
- specification and has the following definition:\r
-\r
- @param dwLength The length of the entire certificate,\r
- including the length of the header, in\r
- bytes.\r
-\r
- @param wRevision The revision level of the WIN_CERTIFICATE\r
- structure. The current revision level is\r
- 0x0200.\r
-\r
- @param wCertificateType The certificate type. See\r
- WIN_CERT_TYPE_xxx for the UEFI\r
- certificate types. The UEFI\r
- specification reserves the range of\r
- certificate type values from 0x0EF0\r
- to 0x0EFF.\r
-\r
- @param bCertificate The actual certificate. The format of\r
- the certificate depends on\r
- wCertificateType. The format of the UEFI\r
- certificates is defined below.\r
-\r
-\r
-**/\r
-typedef struct _WIN_CERTIFICATE {\r
- UINT32 dwLength;\r
- UINT16 wRevision;\r
- UINT16 wCertificateType;\r
- //UINT8 bCertificate[ANYSIZE_ARRAY];\r
-} WIN_CERTIFICATE;\r
-\r
-//\r
-// WIN_CERTIFICATE_UEFI_GUID.CertType\r
-// \r
-#define EFI_CERT_TYPE_RSA2048_SHA256_GUID \\r
- {0xa7717414, 0xc616, 0x4977, {0x94, 0x20, 0x84, 0x47, 0x12, 0xa7, 0x35, 0xbf } }\r
-\r
-//\r
-// WIN_CERTIFICATE_UEFI_GUID.CertData\r
-// \r
-typedef struct _EFI_CERT_BLOCK_RSA_2048_SHA256 {\r
- UINT32 HashType;\r
- UINT8 PublicKey[256];\r
- UINT8 Signature[256];\r
-} EFI_CERT_BLOCK_RSA_2048_SHA256;\r
-\r
-\r
-/**\r
- \r
- @param Hdr This is the standard WIN_CERTIFICATE header, where\r
- wCertificateType is set to\r
- WIN_CERT_TYPE_UEFI_GUID.\r
-\r
- @param CertType This is the unique id which determines the\r
- format of the CertData. In this case, the\r
- value is EFI_CERT_TYPE_RSA2048_SHA256_GUID.\r
-\r
- @param CertData This is the certificate data. The format of\r
- the data is determined by the CertType. In\r
- this case the value is\r
- EFI_CERT_BLOCK_RSA_2048_SHA256.\r
-\r
- @param Information The WIN_CERTIFICATE_UEFI_GUID certificate\r
- type allows new types of certificates to\r
- be developed for driver authentication\r
- without requiring a new certificate type.\r
- The CertType defines the format of the\r
- CertData, which length is defined by the\r
- size of the certificate less the fixed\r
- size of the WIN_CERTIFICATE_UEFI_GUID\r
- structure.\r
-\r
-**/\r
-typedef struct _WIN_CERTIFICATE_UEFI_GUID {\r
- WIN_CERTIFICATE Hdr;\r
- EFI_GUID CertType;\r
- // UINT8 CertData[ANYSIZE_ARRAY];\r
-} WIN_CERTIFICATE_UEFI_GUID;\r
-\r
-\r
-\r
-\r
-\r
-\r
-/**\r
- \r
- Certificate which encapsulates the RSASSA_PKCS1-v1_5 digital\r
- signature.\r
- \r
- The WIN_CERTIFICATE_UEFI_PKCS1_15 structure is derived from\r
- WIN_CERTIFICATE and encapsulate the information needed to \r
- implement the RSASSA-PKCS1-v1_5 digital signature algorithm as \r
- specified in RFC2437. \r
- \r
- @param Hdr This is the standard WIN_CERTIFICATE header, where\r
- wCertificateType is set to\r
- WIN_CERT_TYPE_UEFI_PKCS1_15.\r
- \r
- @param HashAlgorithm This is the hashing algorithm which was\r
- performed on the UEFI executable when\r
- creating the digital signature. It is\r
- one of the enumerated values pre-defined\r
- in Section 26.4.1. See\r
- EFI_HASH_ALGORITHM_x.\r
- \r
- @param Signature This is the actual digital signature. The\r
- size of the signature is the same size as\r
- the key (1024-bit key is 128 bytes) and can\r
- be determined by subtracting the length of\r
- the other parts of this header from the\r
- total length of the certificate as found in\r
- Hdr.dwLength.\r
-\r
-**/\r
-typedef struct _WIN_CERTIFICATE_EFI_PKCS1_15 {\r
- WIN_CERTIFICATE Hdr;\r
- EFI_GUID HashAlgorithm;\r
- // UINT8 Signature[ANYSIZE_ARRAY];\r
-} WIN_CERTIFICATE_EFI_PKCS1_15;\r
-\r
-\r
-/**\r
- \r
- AuthInfo is a WIN_CERTIFICATE using the wCertificateType\r
- WIN_CERTIFICATE_UEFI_GUID and the CertType\r
- EFI_CERT_TYPE_RSA2048_SHA256. If the attribute specifies\r
- authenticated access, then the Data buffer should begin with an\r
- authentication descriptor prior to the data payload and DataSize\r
- should reflect the the data.and descriptor size. The caller\r
- shall digest the Monotonic Count value and the associated data\r
- for the variable update using the SHA-256 1-way hash algorithm.\r
- The ensuing the 32-byte digest will be signed using the private\r
- key associated w/ the public/private 2048-bit RSA key-pair. The\r
- WIN_CERTIFICATE shall be used to describe the signature of the\r
- Variable data *Data. In addition, the signature will also\r
- include the MonotonicCount value to guard against replay attacks\r
- \r
- @param MonotonicCount Included in the signature of\r
- AuthInfo.Used to ensure freshness/no\r
- replay. Incremented during each\r
- "Write" access.\r
- \r
- @param AuthInfo Provides the authorization for the variable\r
- access. It is a signature across the\r
- variable data and the Monotonic Count\r
- value. Caller uses Private key that is\r
- associated with a public key that has been\r
- provisioned via the key exchange.\r
-\r
-**/\r
-typedef struct {\r
- UINT64 MonotonicCount;\r
- WIN_CERTIFICATE_UEFI_GUID AuthInfo;\r
-} EFI_VARIABLE_AUTHENTICATION;\r
-\r
-#endif\r
-\r
+++ /dev/null
-/** @file\r
- This header file contains all of the PXE type definitions,\r
- structure prototypes, global variables and constants that\r
- are needed for porting PXE to EFI.\r
- \r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
- \r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
- \r
- Module name: EfiPxe.h\r
- \r
- @par Revision Reference:\r
- 32/64-bit PXE specification:\r
- alpha-4, 99-Dec-17\r
- \r
-**/\r
-\r
-#ifndef __EFI_PXE_H__\r
-#define __EFI_PXE_H__\r
-\r
-#pragma pack(1)\r
-\r
-\r
-\r
-#define PXE_BUSTYPE(a, b, c, d) \\r
- ( \\r
- (((PXE_UINT32) (d) & 0xFF) << 24) | (((PXE_UINT32) (c) & 0xFF) << 16) | (((PXE_UINT32) (b) & 0xFF) << 8) | \\r
- ((PXE_UINT32) (a) & 0xFF) \\r
- )\r
-\r
-//\r
-// UNDI ROM ID and devive ID signature\r
-//\r
-#define PXE_BUSTYPE_PXE PXE_BUSTYPE ('!', 'P', 'X', 'E')\r
-\r
-//\r
-// BUS ROM ID signatures\r
-//\r
-#define PXE_BUSTYPE_PCI PXE_BUSTYPE ('P', 'C', 'I', 'R')\r
-#define PXE_BUSTYPE_PC_CARD PXE_BUSTYPE ('P', 'C', 'C', 'R')\r
-#define PXE_BUSTYPE_USB PXE_BUSTYPE ('U', 'S', 'B', 'R')\r
-#define PXE_BUSTYPE_1394 PXE_BUSTYPE ('1', '3', '9', '4')\r
-\r
-#define PXE_SWAP_UINT16(n) ((((PXE_UINT16) (n) & 0x00FF) << 8) | (((PXE_UINT16) (n) & 0xFF00) >> 8))\r
-\r
-#define PXE_SWAP_UINT32(n) \\r
- ((((PXE_UINT32)(n) & 0x000000FF) << 24) | \\r
- (((PXE_UINT32)(n) & 0x0000FF00) << 8) | \\r
- (((PXE_UINT32)(n) & 0x00FF0000) >> 8) | \\r
- (((PXE_UINT32)(n) & 0xFF000000) >> 24))\r
-\r
-#define PXE_SWAP_UINT64(n) \\r
- ((((PXE_UINT64)(n) & 0x00000000000000FFULL) << 56) | \\r
- (((PXE_UINT64)(n) & 0x000000000000FF00ULL) << 40) | \\r
- (((PXE_UINT64)(n) & 0x0000000000FF0000ULL) << 24) | \\r
- (((PXE_UINT64)(n) & 0x00000000FF000000ULL) << 8) | \\r
- (((PXE_UINT64)(n) & 0x000000FF00000000ULL) >> 8) | \\r
- (((PXE_UINT64)(n) & 0x0000FF0000000000ULL) >> 24) | \\r
- (((PXE_UINT64)(n) & 0x00FF000000000000ULL) >> 40) | \\r
- (((PXE_UINT64)(n) & 0xFF00000000000000ULL) >> 56))\r
-\r
-\r
-#define PXE_CPBSIZE_NOT_USED 0 // zero\r
-#define PXE_DBSIZE_NOT_USED 0 // zero\r
-#define PXE_CPBADDR_NOT_USED (PXE_UINT64) 0 // zero\r
-#define PXE_DBADDR_NOT_USED (PXE_UINT64) 0 // zero\r
-#define PXE_CONST const\r
-\r
-#define PXE_VOLATILE volatile\r
-\r
-typedef VOID PXE_VOID;\r
-typedef UINT8 PXE_UINT8;\r
-typedef UINT16 PXE_UINT16;\r
-typedef UINT32 PXE_UINT32;\r
-typedef UINTN PXE_UINTN;\r
- \r
-//\r
-// typedef unsigned long PXE_UINT64;\r
-//\r
-typedef UINT64 PXE_UINT64;\r
-\r
-typedef PXE_UINT8 PXE_BOOL;\r
-#define PXE_FALSE 0 // zero\r
-#define PXE_TRUE (!PXE_FALSE)\r
-\r
-typedef PXE_UINT16 PXE_OPCODE;\r
-\r
-//\r
-// Return UNDI operational state.\r
-//\r
-#define PXE_OPCODE_GET_STATE 0x0000\r
-\r
-//\r
-// Change UNDI operational state from Stopped to Started.\r
-//\r
-#define PXE_OPCODE_START 0x0001\r
-\r
-//\r
-// Change UNDI operational state from Started to Stopped.\r
-//\r
-#define PXE_OPCODE_STOP 0x0002\r
-\r
-//\r
-// Get UNDI initialization information.\r
-//\r
-#define PXE_OPCODE_GET_INIT_INFO 0x0003\r
-\r
-//\r
-// Get NIC configuration information.\r
-//\r
-#define PXE_OPCODE_GET_CONFIG_INFO 0x0004\r
-\r
-//\r
-// Changed UNDI operational state from Started to Initialized.\r
-//\r
-#define PXE_OPCODE_INITIALIZE 0x0005\r
-\r
-//\r
-// Re-initialize the NIC H/W.\r
-//\r
-#define PXE_OPCODE_RESET 0x0006\r
-\r
-//\r
-// Change the UNDI operational state from Initialized to Started.\r
-//\r
-#define PXE_OPCODE_SHUTDOWN 0x0007\r
-\r
-//\r
-// Read & change state of external interrupt enables.\r
-//\r
-#define PXE_OPCODE_INTERRUPT_ENABLES 0x0008\r
-\r
-//\r
-// Read & change state of packet receive filters.\r
-//\r
-#define PXE_OPCODE_RECEIVE_FILTERS 0x0009\r
-\r
-//\r
-// Read & change station MAC address.\r
-//\r
-#define PXE_OPCODE_STATION_ADDRESS 0x000A\r
-\r
-//\r
-// Read traffic statistics.\r
-//\r
-#define PXE_OPCODE_STATISTICS 0x000B\r
-\r
-//\r
-// Convert multicast IP address to multicast MAC address.\r
-//\r
-#define PXE_OPCODE_MCAST_IP_TO_MAC 0x000C\r
-\r
-//\r
-// Read or change non-volatile storage on the NIC.\r
-//\r
-#define PXE_OPCODE_NVDATA 0x000D\r
-\r
-//\r
-// Get & clear interrupt status.\r
-//\r
-#define PXE_OPCODE_GET_STATUS 0x000E\r
-\r
-//\r
-// Fill media header in packet for transmit.\r
-//\r
-#define PXE_OPCODE_FILL_HEADER 0x000F\r
-\r
-//\r
-// Transmit packet(s).\r
-//\r
-#define PXE_OPCODE_TRANSMIT 0x0010\r
-\r
-//\r
-// Receive packet.\r
-//\r
-#define PXE_OPCODE_RECEIVE 0x0011\r
-\r
-//\r
-// Last valid PXE UNDI OpCode number.\r
-//\r
-#define PXE_OPCODE_LAST_VALID 0x0011\r
-\r
-typedef PXE_UINT16 PXE_OPFLAGS;\r
-\r
-#define PXE_OPFLAGS_NOT_USED 0x0000\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Get State\r
-//\r
-// No OpFlags\r
-\r
-////////////////////////////////////////\r
-// UNDI Start\r
-//\r
-// No OpFlags\r
-\r
-////////////////////////////////////////\r
-// UNDI Stop\r
-//\r
-// No OpFlags\r
-\r
-////////////////////////////////////////\r
-// UNDI Get Init Info\r
-//\r
-// No Opflags\r
-\r
-////////////////////////////////////////\r
-// UNDI Get Config Info\r
-//\r
-// No Opflags\r
-\r
-////////////////////////////////////////\r
-// UNDI Initialize\r
-//\r
-#define PXE_OPFLAGS_INITIALIZE_CABLE_DETECT_MASK 0x0001\r
-#define PXE_OPFLAGS_INITIALIZE_DETECT_CABLE 0x0000\r
-#define PXE_OPFLAGS_INITIALIZE_DO_NOT_DETECT_CABLE 0x0001\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Reset\r
-//\r
-#define PXE_OPFLAGS_RESET_DISABLE_INTERRUPTS 0x0001\r
-#define PXE_OPFLAGS_RESET_DISABLE_FILTERS 0x0002\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Shutdown\r
-//\r
-// No OpFlags\r
-\r
-////////////////////////////////////////\r
-// UNDI Interrupt Enables\r
-//\r
-//\r
-// Select whether to enable or disable external interrupt signals.\r
-// Setting both enable and disable will return PXE_STATCODE_INVALID_OPFLAGS.\r
-//\r
-#define PXE_OPFLAGS_INTERRUPT_OPMASK 0xC000\r
-#define PXE_OPFLAGS_INTERRUPT_ENABLE 0x8000\r
-#define PXE_OPFLAGS_INTERRUPT_DISABLE 0x4000\r
-#define PXE_OPFLAGS_INTERRUPT_READ 0x0000\r
-\r
-//\r
-// Enable receive interrupts. An external interrupt will be generated\r
-// after a complete non-error packet has been received.\r
-//\r
-#define PXE_OPFLAGS_INTERRUPT_RECEIVE 0x0001\r
-\r
-//\r
-// Enable transmit interrupts. An external interrupt will be generated\r
-// after a complete non-error packet has been transmitted.\r
-//\r
-#define PXE_OPFLAGS_INTERRUPT_TRANSMIT 0x0002\r
-\r
-//\r
-// Enable command interrupts. An external interrupt will be generated\r
-// when command execution stops.\r
-//\r
-#define PXE_OPFLAGS_INTERRUPT_COMMAND 0x0004\r
-\r
-//\r
-// Generate software interrupt. Setting this bit generates an external\r
-// interrupt, if it is supported by the hardware.\r
-//\r
-#define PXE_OPFLAGS_INTERRUPT_SOFTWARE 0x0008\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Receive Filters\r
-//\r
-//\r
-// Select whether to enable or disable receive filters.\r
-// Setting both enable and disable will return PXE_STATCODE_INVALID_OPCODE.\r
-//\r
-#define PXE_OPFLAGS_RECEIVE_FILTER_OPMASK 0xC000\r
-#define PXE_OPFLAGS_RECEIVE_FILTER_ENABLE 0x8000\r
-#define PXE_OPFLAGS_RECEIVE_FILTER_DISABLE 0x4000\r
-#define PXE_OPFLAGS_RECEIVE_FILTER_READ 0x0000\r
-\r
-//\r
-// To reset the contents of the multicast MAC address filter list,\r
-// set this OpFlag:\r
-//\r
-#define PXE_OPFLAGS_RECEIVE_FILTER_RESET_MCAST_LIST 0x2000\r
-\r
-//\r
-// Enable unicast packet receiving. Packets sent to the current station\r
-// MAC address will be received.\r
-//\r
-#define PXE_OPFLAGS_RECEIVE_FILTER_UNICAST 0x0001\r
-\r
-//\r
-// Enable broadcast packet receiving. Packets sent to the broadcast\r
-// MAC address will be received.\r
-//\r
-#define PXE_OPFLAGS_RECEIVE_FILTER_BROADCAST 0x0002\r
-\r
-//\r
-// Enable filtered multicast packet receiving. Packets sent to any\r
-// of the multicast MAC addresses in the multicast MAC address filter\r
-// list will be received. If the filter list is empty, no multicast\r
-//\r
-#define PXE_OPFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST 0x0004\r
-\r
-//\r
-// Enable promiscuous packet receiving. All packets will be received.\r
-//\r
-#define PXE_OPFLAGS_RECEIVE_FILTER_PROMISCUOUS 0x0008\r
-\r
-//\r
-// Enable promiscuous multicast packet receiving. All multicast\r
-// packets will be received.\r
-//\r
-#define PXE_OPFLAGS_RECEIVE_FILTER_ALL_MULTICAST 0x0010\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Station Address\r
-//\r
-#define PXE_OPFLAGS_STATION_ADDRESS_READ 0x0000\r
-#define PXE_OPFLAGS_STATION_ADDRESS_WRITE 0x0000\r
-#define PXE_OPFLAGS_STATION_ADDRESS_RESET 0x0001\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Statistics\r
-//\r
-#define PXE_OPFLAGS_STATISTICS_READ 0x0000\r
-#define PXE_OPFLAGS_STATISTICS_RESET 0x0001\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI MCast IP to MAC\r
-//\r
-//\r
-// Identify the type of IP address in the CPB.\r
-//\r
-#define PXE_OPFLAGS_MCAST_IP_TO_MAC_OPMASK 0x0003\r
-#define PXE_OPFLAGS_MCAST_IPV4_TO_MAC 0x0000\r
-#define PXE_OPFLAGS_MCAST_IPV6_TO_MAC 0x0001\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI NvData\r
-//\r
-//\r
-// Select the type of non-volatile data operation.\r
-//\r
-#define PXE_OPFLAGS_NVDATA_OPMASK 0x0001\r
-#define PXE_OPFLAGS_NVDATA_READ 0x0000\r
-#define PXE_OPFLAGS_NVDATA_WRITE 0x0001\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Get Status\r
-//\r
-//\r
-// Return current interrupt status. This will also clear any interrupts\r
-// that are currently set. This can be used in a polling routine. The\r
-// interrupt flags are still set and cleared even when the interrupts\r
-// are disabled.\r
-//\r
-#define PXE_OPFLAGS_GET_INTERRUPT_STATUS 0x0001\r
-\r
-//\r
-// Return list of transmitted buffers for recycling. Transmit buffers\r
-// must not be changed or unallocated until they have recycled. After\r
-// issuing a transmit command, wait for a transmit complete interrupt.\r
-// When a transmit complete interrupt is received, read the transmitted\r
-// buffers. Do not plan on getting one buffer per interrupt. Some\r
-// NICs and UNDIs may transmit multiple buffers per interrupt.\r
-//\r
-#define PXE_OPFLAGS_GET_TRANSMITTED_BUFFERS 0x0002\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Fill Header\r
-//\r
-#define PXE_OPFLAGS_FILL_HEADER_OPMASK 0x0001\r
-#define PXE_OPFLAGS_FILL_HEADER_FRAGMENTED 0x0001\r
-#define PXE_OPFLAGS_FILL_HEADER_WHOLE 0x0000\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Transmit\r
-//\r
-//\r
-// S/W UNDI only. Return after the packet has been transmitted. A\r
-// transmit complete interrupt will still be generated and the transmit\r
-// buffer will have to be recycled.\r
-//\r
-#define PXE_OPFLAGS_SWUNDI_TRANSMIT_OPMASK 0x0001\r
-#define PXE_OPFLAGS_TRANSMIT_BLOCK 0x0001\r
-#define PXE_OPFLAGS_TRANSMIT_DONT_BLOCK 0x0000\r
-\r
-//\r
-//\r
-//\r
-#define PXE_OPFLAGS_TRANSMIT_OPMASK 0x0002\r
-#define PXE_OPFLAGS_TRANSMIT_FRAGMENTED 0x0002\r
-#define PXE_OPFLAGS_TRANSMIT_WHOLE 0x0000\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Receive\r
-//\r
-// No OpFlags\r
-//\r
-typedef PXE_UINT16 PXE_STATFLAGS;\r
-\r
-#define PXE_STATFLAGS_INITIALIZE 0x0000\r
-\r
-//\r
-// //////////////////////////////////////\r
-// Common StatFlags that can be returned by all commands.\r
-//\r
-//\r
-// The COMMAND_COMPLETE and COMMAND_FAILED status flags must be\r
-// implemented by all UNDIs. COMMAND_QUEUED is only needed by UNDIs\r
-// that support command queuing.\r
-//\r
-#define PXE_STATFLAGS_STATUS_MASK 0xC000\r
-#define PXE_STATFLAGS_COMMAND_COMPLETE 0xC000\r
-#define PXE_STATFLAGS_COMMAND_FAILED 0x8000\r
-#define PXE_STATFLAGS_COMMAND_QUEUED 0x4000\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Get State\r
-//\r
-#define PXE_STATFLAGS_GET_STATE_MASK 0x0003\r
-#define PXE_STATFLAGS_GET_STATE_INITIALIZED 0x0002\r
-#define PXE_STATFLAGS_GET_STATE_STARTED 0x0001\r
-#define PXE_STATFLAGS_GET_STATE_STOPPED 0x0000\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Start\r
-//\r
-// No additional StatFlags\r
-\r
-////////////////////////////////////////\r
-// UNDI Get Init Info\r
-//\r
-#define PXE_STATFLAGS_CABLE_DETECT_MASK 0x0001\r
-#define PXE_STATFLAGS_CABLE_DETECT_NOT_SUPPORTED 0x0000\r
-#define PXE_STATFLAGS_CABLE_DETECT_SUPPORTED 0x0001\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Initialize\r
-//\r
-#define PXE_STATFLAGS_INITIALIZED_NO_MEDIA 0x0001\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Reset\r
-//\r
-#define PXE_STATFLAGS_RESET_NO_MEDIA 0x0001\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Shutdown\r
-//\r
-// No additional StatFlags\r
-\r
-////////////////////////////////////////\r
-// UNDI Interrupt Enables\r
-//\r
-//\r
-// If set, receive interrupts are enabled.\r
-//\r
-#define PXE_STATFLAGS_INTERRUPT_RECEIVE 0x0001\r
-\r
-//\r
-// If set, transmit interrupts are enabled.\r
-//\r
-#define PXE_STATFLAGS_INTERRUPT_TRANSMIT 0x0002\r
-\r
-//\r
-// If set, command interrupts are enabled.\r
-//\r
-#define PXE_STATFLAGS_INTERRUPT_COMMAND 0x0004\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Receive Filters\r
-//\r
-//\r
-// If set, unicast packets will be received.\r
-//\r
-#define PXE_STATFLAGS_RECEIVE_FILTER_UNICAST 0x0001\r
-\r
-//\r
-// If set, broadcast packets will be received.\r
-//\r
-#define PXE_STATFLAGS_RECEIVE_FILTER_BROADCAST 0x0002\r
-\r
-//\r
-// If set, multicast packets that match up with the multicast address\r
-// filter list will be received.\r
-//\r
-#define PXE_STATFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST 0x0004\r
-\r
-//\r
-// If set, all packets will be received.\r
-//\r
-#define PXE_STATFLAGS_RECEIVE_FILTER_PROMISCUOUS 0x0008\r
-\r
-//\r
-// If set, all multicast packets will be received.\r
-//\r
-#define PXE_STATFLAGS_RECEIVE_FILTER_ALL_MULTICAST 0x0010\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Station Address\r
-//\r
-// No additional StatFlags\r
-\r
-////////////////////////////////////////\r
-// UNDI Statistics\r
-//\r
-// No additional StatFlags\r
-\r
-////////////////////////////////////////\r
-// UNDI MCast IP to MAC\r
-//\r
-// No additional StatFlags\r
-\r
-////////////////////////////////////////\r
-// UNDI NvData\r
-//\r
-// No additional StatFlags\r
-\r
-\r
-////////////////////////////////////////\r
-// UNDI Get Status\r
-//\r
-//\r
-// Use to determine if an interrupt has occurred.\r
-//\r
-#define PXE_STATFLAGS_GET_STATUS_INTERRUPT_MASK 0x000F\r
-#define PXE_STATFLAGS_GET_STATUS_NO_INTERRUPTS 0x0000\r
-\r
-//\r
-// If set, at least one receive interrupt occurred.\r
-//\r
-#define PXE_STATFLAGS_GET_STATUS_RECEIVE 0x0001\r
-\r
-//\r
-// If set, at least one transmit interrupt occurred.\r
-//\r
-#define PXE_STATFLAGS_GET_STATUS_TRANSMIT 0x0002\r
-\r
-//\r
-// If set, at least one command interrupt occurred.\r
-//\r
-#define PXE_STATFLAGS_GET_STATUS_COMMAND 0x0004\r
-\r
-//\r
-// If set, at least one software interrupt occurred.\r
-//\r
-#define PXE_STATFLAGS_GET_STATUS_SOFTWARE 0x0008\r
-\r
-//\r
-// This flag is set if the transmitted buffer queue is empty. This flag\r
-// will be set if all transmitted buffer addresses get written into the DB.\r
-//\r
-#define PXE_STATFLAGS_GET_STATUS_TXBUF_QUEUE_EMPTY 0x0010\r
-\r
-//\r
-// This flag is set if no transmitted buffer addresses were written\r
-// into the DB. (This could be because DBsize was too small.)\r
-//\r
-#define PXE_STATFLAGS_GET_STATUS_NO_TXBUFS_WRITTEN 0x0020\r
-\r
-//\r
-// //////////////////////////////////////\r
-// UNDI Fill Header\r
-//\r
-// No additional StatFlags\r
-\r
-////////////////////////////////////////\r
-// UNDI Transmit\r
-//\r
-// No additional StatFlags.\r
-\r
-////////////////////////////////////////\r
-// UNDI Receive\r
-//\r
-// No additional StatFlags.\r
-//\r
-typedef PXE_UINT16 PXE_STATCODE;\r
-\r
-#define PXE_STATCODE_INITIALIZE 0x0000\r
-\r
-//\r
-// //////////////////////////////////////\r
-// Common StatCodes returned by all UNDI commands, UNDI protocol functions\r
-// and BC protocol functions.\r
-//\r
-#define PXE_STATCODE_SUCCESS 0x0000\r
-\r
-#define PXE_STATCODE_INVALID_CDB 0x0001\r
-#define PXE_STATCODE_INVALID_CPB 0x0002\r
-#define PXE_STATCODE_BUSY 0x0003\r
-#define PXE_STATCODE_QUEUE_FULL 0x0004\r
-#define PXE_STATCODE_ALREADY_STARTED 0x0005\r
-#define PXE_STATCODE_NOT_STARTED 0x0006\r
-#define PXE_STATCODE_NOT_SHUTDOWN 0x0007\r
-#define PXE_STATCODE_ALREADY_INITIALIZED 0x0008\r
-#define PXE_STATCODE_NOT_INITIALIZED 0x0009\r
-#define PXE_STATCODE_DEVICE_FAILURE 0x000A\r
-#define PXE_STATCODE_NVDATA_FAILURE 0x000B\r
-#define PXE_STATCODE_UNSUPPORTED 0x000C\r
-#define PXE_STATCODE_BUFFER_FULL 0x000D\r
-#define PXE_STATCODE_INVALID_PARAMETER 0x000E\r
-#define PXE_STATCODE_INVALID_UNDI 0x000F\r
-#define PXE_STATCODE_IPV4_NOT_SUPPORTED 0x0010\r
-#define PXE_STATCODE_IPV6_NOT_SUPPORTED 0x0011\r
-#define PXE_STATCODE_NOT_ENOUGH_MEMORY 0x0012\r
-#define PXE_STATCODE_NO_DATA 0x0013\r
-\r
-typedef PXE_UINT16 PXE_IFNUM;\r
-\r
-//\r
-// This interface number must be passed to the S/W UNDI Start command.\r
-//\r
-#define PXE_IFNUM_START 0x0000\r
-\r
-//\r
-// This interface number is returned by the S/W UNDI Get State and\r
-// Start commands if information in the CDB, CPB or DB is invalid.\r
-//\r
-#define PXE_IFNUM_INVALID 0x0000\r
-\r
-typedef PXE_UINT16 PXE_CONTROL;\r
-\r
-//\r
-// Setting this flag directs the UNDI to queue this command for later\r
-// execution if the UNDI is busy and it supports command queuing.\r
-// If queuing is not supported, a PXE_STATCODE_INVALID_CONTROL error\r
-// is returned. If the queue is full, a PXE_STATCODE_CDB_QUEUE_FULL\r
-// error is returned.\r
-//\r
-#define PXE_CONTROL_QUEUE_IF_BUSY 0x0002\r
-\r
-//\r
-// These two bit values are used to determine if there are more UNDI\r
-// CDB structures following this one. If the link bit is set, there\r
-// must be a CDB structure following this one. Execution will start\r
-// on the next CDB structure as soon as this one completes successfully.\r
-// If an error is generated by this command, execution will stop.\r
-//\r
-#define PXE_CONTROL_LINK 0x0001\r
-#define PXE_CONTROL_LAST_CDB_IN_LIST 0x0000\r
-\r
-typedef PXE_UINT8 PXE_FRAME_TYPE;\r
-\r
-#define PXE_FRAME_TYPE_NONE 0x00\r
-#define PXE_FRAME_TYPE_UNICAST 0x01\r
-#define PXE_FRAME_TYPE_BROADCAST 0x02\r
-#define PXE_FRAME_TYPE_FILTERED_MULTICAST 0x03\r
-#define PXE_FRAME_TYPE_PROMISCUOUS 0x04\r
-#define PXE_FRAME_TYPE_PROMISCUOUS_MULTICAST 0x05\r
-\r
-#define PXE_FRAME_TYPE_MULTICAST PXE_FRAME_TYPE_FILTERED_MULTICAST \r
-\r
-typedef PXE_UINT32 PXE_IPV4;\r
-\r
-typedef PXE_UINT32 PXE_IPV6[4];\r
-#define PXE_MAC_LENGTH 32\r
-\r
-typedef PXE_UINT8 PXE_MAC_ADDR[PXE_MAC_LENGTH];\r
-\r
-typedef PXE_UINT8 PXE_IFTYPE;\r
-typedef UINT16 PXE_MEDIA_PROTOCOL;\r
-\r
-//\r
-// This information is from the ARP section of RFC 1700.\r
-//\r
-// 1 Ethernet (10Mb) [JBP]\r
-// 2 Experimental Ethernet (3Mb) [JBP]\r
-// 3 Amateur Radio AX.25 [PXK]\r
-// 4 Proteon ProNET Token Ring [JBP]\r
-// 5 Chaos [GXP]\r
-// 6 IEEE 802 Networks [JBP]\r
-// 7 ARCNET [JBP]\r
-// 8 Hyperchannel [JBP]\r
-// 9 Lanstar [TU]\r
-// 10 Autonet Short Address [MXB1]\r
-// 11 LocalTalk [JKR1]\r
-// 12 LocalNet (IBM* PCNet or SYTEK* LocalNET) [JXM]\r
-// 13 Ultra link [RXD2]\r
-// 14 SMDS [GXC1]\r
-// 15 Frame Relay [AGM]\r
-// 16 Asynchronous Transmission Mode (ATM) [JXB2]\r
-// 17 HDLC [JBP]\r
-// 18 Fibre Channel [Yakov Rekhter]\r
-// 19 Asynchronous Transmission Mode (ATM) [Mark Laubach]\r
-// 20 Serial Line [JBP]\r
-// 21 Asynchronous Transmission Mode (ATM) [MXB1]\r
-//\r
-// * Other names and brands may be claimed as the property of others.\r
-//\r
-#define PXE_IFTYPE_ETHERNET 0x01\r
-#define PXE_IFTYPE_TOKENRING 0x04\r
-#define PXE_IFTYPE_FIBRE_CHANNEL 0x12\r
-\r
-typedef struct s_pxe_hw_undi {\r
- PXE_UINT32 Signature; // PXE_ROMID_SIGNATURE\r
- PXE_UINT8 Len; // sizeof(PXE_HW_UNDI)\r
- PXE_UINT8 Fudge; // makes 8-bit cksum equal zero\r
- PXE_UINT8 Rev; // PXE_ROMID_REV\r
- PXE_UINT8 IFcnt; // physical connector count\r
- PXE_UINT8 MajorVer; // PXE_ROMID_MAJORVER\r
- PXE_UINT8 MinorVer; // PXE_ROMID_MINORVER\r
- PXE_UINT16 reserved; // zero, not used\r
- PXE_UINT32 Implementation; // implementation flags\r
- // reserved // vendor use\r
- // UINT32 Status; // status port\r
- // UINT32 Command; // command port\r
- // UINT64 CDBaddr; // CDB address port\r
- //\r
-} PXE_HW_UNDI;\r
-\r
-//\r
-// Status port bit definitions\r
-//\r
-//\r
-// UNDI operation state\r
-//\r
-#define PXE_HWSTAT_STATE_MASK 0xC0000000\r
-#define PXE_HWSTAT_BUSY 0xC0000000\r
-#define PXE_HWSTAT_INITIALIZED 0x80000000\r
-#define PXE_HWSTAT_STARTED 0x40000000\r
-#define PXE_HWSTAT_STOPPED 0x00000000\r
-\r
-//\r
-// If set, last command failed\r
-//\r
-#define PXE_HWSTAT_COMMAND_FAILED 0x20000000\r
-\r
-//\r
-// If set, identifies enabled receive filters\r
-//\r
-#define PXE_HWSTAT_PROMISCUOUS_MULTICAST_RX_ENABLED 0x00001000\r
-#define PXE_HWSTAT_PROMISCUOUS_RX_ENABLED 0x00000800\r
-#define PXE_HWSTAT_BROADCAST_RX_ENABLED 0x00000400\r
-#define PXE_HWSTAT_MULTICAST_RX_ENABLED 0x00000200\r
-#define PXE_HWSTAT_UNICAST_RX_ENABLED 0x00000100\r
-\r
-//\r
-// If set, identifies enabled external interrupts\r
-//\r
-#define PXE_HWSTAT_SOFTWARE_INT_ENABLED 0x00000080\r
-#define PXE_HWSTAT_TX_COMPLETE_INT_ENABLED 0x00000040\r
-#define PXE_HWSTAT_PACKET_RX_INT_ENABLED 0x00000020\r
-#define PXE_HWSTAT_CMD_COMPLETE_INT_ENABLED 0x00000010\r
-\r
-//\r
-// If set, identifies pending interrupts\r
-//\r
-#define PXE_HWSTAT_SOFTWARE_INT_PENDING 0x00000008\r
-#define PXE_HWSTAT_TX_COMPLETE_INT_PENDING 0x00000004\r
-#define PXE_HWSTAT_PACKET_RX_INT_PENDING 0x00000002\r
-#define PXE_HWSTAT_CMD_COMPLETE_INT_PENDING 0x00000001\r
-\r
-//\r
-// Command port definitions\r
-//\r
-//\r
-// If set, CDB identified in CDBaddr port is given to UNDI.\r
-// If not set, other bits in this word will be processed.\r
-//\r
-#define PXE_HWCMD_ISSUE_COMMAND 0x80000000\r
-#define PXE_HWCMD_INTS_AND_FILTS 0x00000000\r
-\r
-//\r
-// Use these to enable/disable receive filters.\r
-//\r
-#define PXE_HWCMD_PROMISCUOUS_MULTICAST_RX_ENABLE 0x00001000\r
-#define PXE_HWCMD_PROMISCUOUS_RX_ENABLE 0x00000800\r
-#define PXE_HWCMD_BROADCAST_RX_ENABLE 0x00000400\r
-#define PXE_HWCMD_MULTICAST_RX_ENABLE 0x00000200\r
-#define PXE_HWCMD_UNICAST_RX_ENABLE 0x00000100\r
-\r
-//\r
-// Use these to enable/disable external interrupts\r
-//\r
-#define PXE_HWCMD_SOFTWARE_INT_ENABLE 0x00000080\r
-#define PXE_HWCMD_TX_COMPLETE_INT_ENABLE 0x00000040\r
-#define PXE_HWCMD_PACKET_RX_INT_ENABLE 0x00000020\r
-#define PXE_HWCMD_CMD_COMPLETE_INT_ENABLE 0x00000010\r
-\r
-//\r
-// Use these to clear pending external interrupts\r
-//\r
-#define PXE_HWCMD_CLEAR_SOFTWARE_INT 0x00000008\r
-#define PXE_HWCMD_CLEAR_TX_COMPLETE_INT 0x00000004\r
-#define PXE_HWCMD_CLEAR_PACKET_RX_INT 0x00000002\r
-#define PXE_HWCMD_CLEAR_CMD_COMPLETE_INT 0x00000001\r
-\r
-typedef struct s_pxe_sw_undi {\r
- PXE_UINT32 Signature; // PXE_ROMID_SIGNATURE\r
- PXE_UINT8 Len; // sizeof(PXE_SW_UNDI)\r
- PXE_UINT8 Fudge; // makes 8-bit cksum zero\r
- PXE_UINT8 Rev; // PXE_ROMID_REV\r
- PXE_UINT8 IFcnt; // physical connector count\r
- PXE_UINT8 MajorVer; // PXE_ROMID_MAJORVER\r
- PXE_UINT8 MinorVer; // PXE_ROMID_MINORVER\r
- PXE_UINT16 reserved1; // zero, not used\r
- PXE_UINT32 Implementation; // Implementation flags\r
- PXE_UINT64 EntryPoint; // API entry point\r
- PXE_UINT8 reserved2[3]; // zero, not used\r
- PXE_UINT8 BusCnt; // number of bustypes supported\r
- PXE_UINT32 BusType[1]; // list of supported bustypes\r
-} PXE_SW_UNDI;\r
-\r
-typedef union u_pxe_undi {\r
- PXE_HW_UNDI hw;\r
- PXE_SW_UNDI sw;\r
-} PXE_UNDI;\r
-\r
-//\r
-// Signature of !PXE structure\r
-//\r
-#define PXE_ROMID_SIGNATURE PXE_BUSTYPE ('!', 'P', 'X', 'E')\r
-\r
-//\r
-// !PXE structure format revision\r
-//\r
-#define PXE_ROMID_REV 0x02\r
-\r
-//\r
-// UNDI command interface revision. These are the values that get sent\r
-// in option 94 (Client Network Interface Identifier) in the DHCP Discover\r
-// and PXE Boot Server Request packets.\r
-//\r
-#define PXE_ROMID_MAJORVER 0x03\r
-#define PXE_ROMID_MINORVER 0x01\r
-\r
-//\r
-// Implementation flags\r
-//\r
-#define PXE_ROMID_IMP_HW_UNDI 0x80000000\r
-#define PXE_ROMID_IMP_SW_VIRT_ADDR 0x40000000\r
-#define PXE_ROMID_IMP_64BIT_DEVICE 0x00010000\r
-#define PXE_ROMID_IMP_FRAG_SUPPORTED 0x00008000\r
-#define PXE_ROMID_IMP_CMD_LINK_SUPPORTED 0x00004000\r
-#define PXE_ROMID_IMP_CMD_QUEUE_SUPPORTED 0x00002000\r
-#define PXE_ROMID_IMP_MULTI_FRAME_SUPPORTED 0x00001000\r
-#define PXE_ROMID_IMP_NVDATA_SUPPORT_MASK 0x00000C00\r
-#define PXE_ROMID_IMP_NVDATA_BULK_WRITABLE 0x00000C00\r
-#define PXE_ROMID_IMP_NVDATA_SPARSE_WRITABLE 0x00000800\r
-#define PXE_ROMID_IMP_NVDATA_READ_ONLY 0x00000400\r
-#define PXE_ROMID_IMP_NVDATA_NOT_AVAILABLE 0x00000000\r
-#define PXE_ROMID_IMP_STATISTICS_SUPPORTED 0x00000200\r
-#define PXE_ROMID_IMP_STATION_ADDR_SETTABLE 0x00000100\r
-#define PXE_ROMID_IMP_PROMISCUOUS_MULTICAST_RX_SUPPORTED 0x00000080\r
-#define PXE_ROMID_IMP_PROMISCUOUS_RX_SUPPORTED 0x00000040\r
-#define PXE_ROMID_IMP_BROADCAST_RX_SUPPORTED 0x00000020\r
-#define PXE_ROMID_IMP_FILTERED_MULTICAST_RX_SUPPORTED 0x00000010\r
-#define PXE_ROMID_IMP_SOFTWARE_INT_SUPPORTED 0x00000008\r
-#define PXE_ROMID_IMP_TX_COMPLETE_INT_SUPPORTED 0x00000004\r
-#define PXE_ROMID_IMP_PACKET_RX_INT_SUPPORTED 0x00000002\r
-#define PXE_ROMID_IMP_CMD_COMPLETE_INT_SUPPORTED 0x00000001\r
-\r
-typedef struct s_pxe_cdb {\r
- PXE_OPCODE OpCode;\r
- PXE_OPFLAGS OpFlags;\r
- PXE_UINT16 CPBsize;\r
- PXE_UINT16 DBsize;\r
- PXE_UINT64 CPBaddr;\r
- PXE_UINT64 DBaddr;\r
- PXE_STATCODE StatCode;\r
- PXE_STATFLAGS StatFlags;\r
- PXE_UINT16 IFnum;\r
- PXE_CONTROL Control;\r
-} PXE_CDB;\r
-\r
-typedef union u_pxe_ip_addr {\r
- PXE_IPV6 IPv6;\r
- PXE_IPV4 IPv4;\r
-} PXE_IP_ADDR;\r
-\r
-typedef union pxe_device {\r
- //\r
- // PCI and PC Card NICs are both identified using bus, device\r
- // and function numbers. For PC Card, this may require PC\r
- // Card services to be loaded in the BIOS or preboot\r
- // environment.\r
- //\r
- struct {\r
- //\r
- // See S/W UNDI ROMID structure definition for PCI and\r
- // PCC BusType definitions.\r
- //\r
- PXE_UINT32 BusType;\r
-\r
- //\r
- // Bus, device & function numbers that locate this device.\r
- //\r
- PXE_UINT16 Bus;\r
- PXE_UINT8 Device;\r
- PXE_UINT8 Function;\r
- }\r
- PCI, PCC;\r
-\r
- //\r
- // %%TBD - More information is needed about enumerating\r
- // USB and 1394 devices.\r
- //\r
- struct {\r
- PXE_UINT32 BusType;\r
- PXE_UINT32 tdb;\r
- }\r
- USB, _1394;\r
-} PXE_DEVICE;\r
-\r
-//\r
-// cpb and db definitions\r
-//\r
-#define MAX_PCI_CONFIG_LEN 64 // # of dwords\r
-#define MAX_EEPROM_LEN 128 // #of dwords\r
-#define MAX_XMIT_BUFFERS 32 // recycling Q length for xmit_done\r
-#define MAX_MCAST_ADDRESS_CNT 8\r
-\r
-typedef struct s_pxe_cpb_start_30 {\r
- //\r
- // PXE_VOID Delay(UINTN microseconds);\r
- //\r
- // UNDI will never request a delay smaller than 10 microseconds\r
- // and will always request delays in increments of 10 microseconds.\r
- // The Delay() CallBack routine must delay between n and n + 10\r
- // microseconds before returning control to the UNDI.\r
- //\r
- // This field cannot be set to zero.\r
- //\r
- UINT64 Delay;\r
-\r
- //\r
- // PXE_VOID Block(UINT32 enable);\r
- //\r
- // UNDI may need to block multi-threaded/multi-processor access to\r
- // critical code sections when programming or accessing the network\r
- // device. To this end, a blocking service is needed by the UNDI.\r
- // When UNDI needs a block, it will call Block() passing a non-zero\r
- // value. When UNDI no longer needs a block, it will call Block()\r
- // with a zero value. When called, if the Block() is already enabled,\r
- // do not return control to the UNDI until the previous Block() is\r
- // disabled.\r
- //\r
- // This field cannot be set to zero.\r
- //\r
- UINT64 Block;\r
-\r
- //\r
- // PXE_VOID Virt2Phys(UINT64 virtual, UINT64 physical_ptr);\r
- //\r
- // UNDI will pass the virtual address of a buffer and the virtual\r
- // address of a 64-bit physical buffer. Convert the virtual address\r
- // to a physical address and write the result to the physical address\r
- // buffer. If virtual and physical addresses are the same, just\r
- // copy the virtual address to the physical address buffer.\r
- //\r
- // This field can be set to zero if virtual and physical addresses\r
- // are equal.\r
- //\r
- UINT64 Virt2Phys;\r
- //\r
- // PXE_VOID Mem_IO(UINT8 read_write, UINT8 len, UINT64 port,\r
- // UINT64 buf_addr);\r
- //\r
- // UNDI will read or write the device io space using this call back\r
- // function. It passes the number of bytes as the len parameter and it\r
- // will be either 1,2,4 or 8.\r
- //\r
- // This field can not be set to zero.\r
- //\r
- UINT64 Mem_IO;\r
-} PXE_CPB_START_30;\r
-\r
-typedef struct s_pxe_cpb_start_31 {\r
- //\r
- // PXE_VOID Delay(UINT64 UnqId, UINTN microseconds);\r
- //\r
- // UNDI will never request a delay smaller than 10 microseconds\r
- // and will always request delays in increments of 10 microseconds.\r
- // The Delay() CallBack routine must delay between n and n + 10\r
- // microseconds before returning control to the UNDI.\r
- //\r
- // This field cannot be set to zero.\r
- //\r
- UINT64 Delay;\r
-\r
- //\r
- // PXE_VOID Block(UINT64 unq_id, UINT32 enable);\r
- //\r
- // UNDI may need to block multi-threaded/multi-processor access to\r
- // critical code sections when programming or accessing the network\r
- // device. To this end, a blocking service is needed by the UNDI.\r
- // When UNDI needs a block, it will call Block() passing a non-zero\r
- // value. When UNDI no longer needs a block, it will call Block()\r
- // with a zero value. When called, if the Block() is already enabled,\r
- // do not return control to the UNDI until the previous Block() is\r
- // disabled.\r
- //\r
- // This field cannot be set to zero.\r
- //\r
- UINT64 Block;\r
-\r
- //\r
- // PXE_VOID Virt2Phys(UINT64 UnqId, UINT64 virtual, UINT64 physical_ptr);\r
- //\r
- // UNDI will pass the virtual address of a buffer and the virtual\r
- // address of a 64-bit physical buffer. Convert the virtual address\r
- // to a physical address and write the result to the physical address\r
- // buffer. If virtual and physical addresses are the same, just\r
- // copy the virtual address to the physical address buffer.\r
- //\r
- // This field can be set to zero if virtual and physical addresses\r
- // are equal.\r
- //\r
- UINT64 Virt2Phys;\r
- //\r
- // PXE_VOID Mem_IO(UINT64 UnqId, UINT8 read_write, UINT8 len, UINT64 port,\r
- // UINT64 buf_addr);\r
- //\r
- // UNDI will read or write the device io space using this call back\r
- // function. It passes the number of bytes as the len parameter and it\r
- // will be either 1,2,4 or 8.\r
- //\r
- // This field can not be set to zero.\r
- //\r
- UINT64 Mem_IO;\r
- //\r
- // PXE_VOID Map_Mem(UINT64 unq_id, UINT64 virtual_addr, UINT32 size,\r
- // UINT32 Direction, UINT64 mapped_addr);\r
- //\r
- // UNDI will pass the virtual address of a buffer, direction of the data\r
- // flow from/to the mapped buffer (the constants are defined below)\r
- // and a place holder (pointer) for the mapped address.\r
- // This call will Map the given address to a physical DMA address and write\r
- // the result to the mapped_addr pointer. If there is no need to\r
- // map the given address to a lower address (i.e. the given address is\r
- // associated with a physical address that is already compatible to be\r
- // used with the DMA, it converts the given virtual address to it's\r
- // physical address and write that in the mapped address pointer.\r
- //\r
- // This field can be set to zero if there is no mapping service available\r
- //\r
- UINT64 Map_Mem;\r
-\r
- //\r
- // PXE_VOID UnMap_Mem(UINT64 unq_id, UINT64 virtual_addr, UINT32 size,\r
- // UINT32 Direction, UINT64 mapped_addr);\r
- //\r
- // UNDI will pass the virtual and mapped addresses of a buffer\r
- // This call will un map the given address\r
- //\r
- // This field can be set to zero if there is no unmapping service available\r
- //\r
- UINT64 UnMap_Mem;\r
-\r
- //\r
- // PXE_VOID Sync_Mem(UINT64 unq_id, UINT64 virtual,\r
- // UINT32 size, UINT32 Direction, UINT64 mapped_addr);\r
- //\r
- // UNDI will pass the virtual and mapped addresses of a buffer\r
- // This call will synchronize the contents of both the virtual and mapped\r
- // buffers for the given Direction.\r
- //\r
- // This field can be set to zero if there is no service available\r
- //\r
- UINT64 Sync_Mem;\r
-\r
- //\r
- // protocol driver can provide anything for this Unique_ID, UNDI remembers\r
- // that as just a 64bit value assocaited to the interface specified by\r
- // the ifnum and gives it back as a parameter to all the call-back routines\r
- // when calling for that interface!\r
- //\r
- UINT64 Unique_ID;\r
- //\r
-} PXE_CPB_START_31;\r
-\r
-#define TO_AND_FROM_DEVICE 0\r
-#define FROM_DEVICE 1\r
-#define TO_DEVICE 2\r
-\r
-#define PXE_DELAY_MILLISECOND 1000\r
-#define PXE_DELAY_SECOND 1000000\r
-#define PXE_IO_READ 0\r
-#define PXE_IO_WRITE 1\r
-#define PXE_MEM_READ 2\r
-#define PXE_MEM_WRITE 4\r
-\r
-typedef struct s_pxe_db_get_init_info {\r
- //\r
- // Minimum length of locked memory buffer that must be given to\r
- // the Initialize command. Giving UNDI more memory will generally\r
- // give better performance.\r
- //\r
- // If MemoryRequired is zero, the UNDI does not need and will not\r
- // use system memory to receive and transmit packets.\r
- //\r
- PXE_UINT32 MemoryRequired;\r
-\r
- //\r
- // Maximum frame data length for Tx/Rx excluding the media header.\r
- //\r
- PXE_UINT32 FrameDataLen;\r
-\r
- //\r
- // Supported link speeds are in units of mega bits. Common ethernet\r
- // values are 10, 100 and 1000. Unused LinkSpeeds[] entries are zero\r
- // filled.\r
- //\r
- PXE_UINT32 LinkSpeeds[4];\r
-\r
- //\r
- // Number of non-volatile storage items.\r
- //\r
- PXE_UINT32 NvCount;\r
-\r
- //\r
- // Width of non-volatile storage item in bytes. 0, 1, 2 or 4\r
- //\r
- PXE_UINT16 NvWidth;\r
-\r
- //\r
- // Media header length. This is the typical media header length for\r
- // this UNDI. This information is needed when allocating receive\r
- // and transmit buffers.\r
- //\r
- PXE_UINT16 MediaHeaderLen;\r
-\r
- //\r
- // Number of bytes in the NIC hardware (MAC) address.\r
- //\r
- PXE_UINT16 HWaddrLen;\r
-\r
- //\r
- // Maximum number of multicast MAC addresses in the multicast\r
- // MAC address filter list.\r
- //\r
- PXE_UINT16 MCastFilterCnt;\r
-\r
- //\r
- // Default number and size of transmit and receive buffers that will\r
- // be allocated by the UNDI. If MemoryRequired is non-zero, this\r
- // allocation will come out of the memory buffer given to the Initialize\r
- // command. If MemoryRequired is zero, this allocation will come out of\r
- // memory on the NIC.\r
- //\r
- PXE_UINT16 TxBufCnt;\r
- PXE_UINT16 TxBufSize;\r
- PXE_UINT16 RxBufCnt;\r
- PXE_UINT16 RxBufSize;\r
-\r
- //\r
- // Hardware interface types defined in the Assigned Numbers RFC\r
- // and used in DHCP and ARP packets.\r
- // See the PXE_IFTYPE typedef and PXE_IFTYPE_xxx macros.\r
- //\r
- PXE_UINT8 IFtype;\r
-\r
- //\r
- // Supported duplex. See PXE_DUPLEX_xxxxx #defines below.\r
- //\r
- PXE_UINT8 SupportedDuplexModes;\r
-\r
- //\r
- // Supported loopback options. See PXE_LOOPBACK_xxxxx #defines below.\r
- //\r
- PXE_UINT8 SupportedLoopBackModes;\r
-} PXE_DB_GET_INIT_INFO;\r
-\r
-#define PXE_MAX_TXRX_UNIT_ETHER 1500\r
-\r
-#define PXE_HWADDR_LEN_ETHER 0x0006\r
-#define PXE_MAC_HEADER_LEN_ETHER 0x000E\r
-\r
-#define PXE_DUPLEX_ENABLE_FULL_SUPPORTED 1\r
-#define PXE_DUPLEX_FORCE_FULL_SUPPORTED 2\r
-\r
-#define PXE_LOOPBACK_INTERNAL_SUPPORTED 1\r
-#define PXE_LOOPBACK_EXTERNAL_SUPPORTED 2\r
-\r
-typedef struct s_pxe_pci_config_info {\r
- //\r
- // This is the flag field for the PXE_DB_GET_CONFIG_INFO union.\r
- // For PCI bus devices, this field is set to PXE_BUSTYPE_PCI.\r
- //\r
- UINT32 BusType;\r
-\r
- //\r
- // This identifies the PCI network device that this UNDI interface\r
- // is bound to.\r
- //\r
- UINT16 Bus;\r
- UINT8 Device;\r
- UINT8 Function;\r
-\r
- //\r
- // This is a copy of the PCI configuration space for this\r
- // network device.\r
- //\r
- union {\r
- UINT8 Byte[256];\r
- UINT16 Word[128];\r
- UINT32 Dword[64];\r
- } Config;\r
-} PXE_PCI_CONFIG_INFO;\r
-\r
-typedef struct s_pxe_pcc_config_info {\r
- //\r
- // This is the flag field for the PXE_DB_GET_CONFIG_INFO union.\r
- // For PCC bus devices, this field is set to PXE_BUSTYPE_PCC.\r
- //\r
- PXE_UINT32 BusType;\r
-\r
- //\r
- // This identifies the PCC network device that this UNDI interface\r
- // is bound to.\r
- //\r
- PXE_UINT16 Bus;\r
- PXE_UINT8 Device;\r
- PXE_UINT8 Function;\r
-\r
- //\r
- // This is a copy of the PCC configuration space for this\r
- // network device.\r
- //\r
- union {\r
- PXE_UINT8 Byte[256];\r
- PXE_UINT16 Word[128];\r
- PXE_UINT32 Dword[64];\r
- } Config;\r
-} PXE_PCC_CONFIG_INFO;\r
-\r
-typedef union u_pxe_db_get_config_info {\r
- PXE_PCI_CONFIG_INFO pci;\r
- PXE_PCC_CONFIG_INFO pcc;\r
-} PXE_DB_GET_CONFIG_INFO;\r
-\r
-typedef struct s_pxe_cpb_initialize {\r
- //\r
- // Address of first (lowest) byte of the memory buffer. This buffer must\r
- // be in contiguous physical memory and cannot be swapped out. The UNDI\r
- // will be using this for transmit and receive buffering.\r
- //\r
- PXE_UINT64 MemoryAddr;\r
-\r
- //\r
- // MemoryLength must be greater than or equal to MemoryRequired\r
- // returned by the Get Init Info command.\r
- //\r
- PXE_UINT32 MemoryLength;\r
-\r
- //\r
- // Desired link speed in Mbit/sec. Common ethernet values are 10, 100\r
- // and 1000. Setting a value of zero will auto-detect and/or use the\r
- // default link speed (operation depends on UNDI/NIC functionality).\r
- //\r
- PXE_UINT32 LinkSpeed;\r
-\r
- //\r
- // Suggested number and size of receive and transmit buffers to\r
- // allocate. If MemoryAddr and MemoryLength are non-zero, this\r
- // allocation comes out of the supplied memory buffer. If MemoryAddr\r
- // and MemoryLength are zero, this allocation comes out of memory\r
- // on the NIC.\r
- //\r
- // If these fields are set to zero, the UNDI will allocate buffer\r
- // counts and sizes as it sees fit.\r
- //\r
- PXE_UINT16 TxBufCnt;\r
- PXE_UINT16 TxBufSize;\r
- PXE_UINT16 RxBufCnt;\r
- PXE_UINT16 RxBufSize;\r
-\r
- //\r
- // The following configuration parameters are optional and must be zero\r
- // to use the default values.\r
- //\r
- PXE_UINT8 DuplexMode;\r
-\r
- PXE_UINT8 LoopBackMode;\r
-} PXE_CPB_INITIALIZE;\r
-\r
-#define PXE_DUPLEX_DEFAULT 0x00\r
-#define PXE_FORCE_FULL_DUPLEX 0x01\r
-#define PXE_ENABLE_FULL_DUPLEX 0x02\r
-#define PXE_FORCE_HALF_DUPLEX 0x04\r
-#define PXE_DISABLE_FULL_DUPLEX 0x08\r
-\r
-#define LOOPBACK_NORMAL 0\r
-#define LOOPBACK_INTERNAL 1\r
-#define LOOPBACK_EXTERNAL 2\r
-\r
-typedef struct s_pxe_db_initialize {\r
- //\r
- // Actual amount of memory used from the supplied memory buffer. This\r
- // may be less that the amount of memory suppllied and may be zero if\r
- // the UNDI and network device do not use external memory buffers.\r
- //\r
- // Memory used by the UNDI and network device is allocated from the\r
- // lowest memory buffer address.\r
- //\r
- PXE_UINT32 MemoryUsed;\r
-\r
- //\r
- // Actual number and size of receive and transmit buffers that were\r
- // allocated.\r
- //\r
- PXE_UINT16 TxBufCnt;\r
- PXE_UINT16 TxBufSize;\r
- PXE_UINT16 RxBufCnt;\r
- PXE_UINT16 RxBufSize;\r
-} PXE_DB_INITIALIZE;\r
-\r
-typedef struct s_pxe_cpb_receive_filters {\r
- //\r
- // List of multicast MAC addresses. This list, if present, will\r
- // replace the existing multicast MAC address filter list.\r
- //\r
- PXE_MAC_ADDR MCastList[MAX_MCAST_ADDRESS_CNT];\r
-} PXE_CPB_RECEIVE_FILTERS;\r
-\r
-typedef struct s_pxe_db_receive_filters {\r
- //\r
- // Filtered multicast MAC address list.\r
- //\r
- PXE_MAC_ADDR MCastList[MAX_MCAST_ADDRESS_CNT];\r
-} PXE_DB_RECEIVE_FILTERS;\r
-\r
-typedef struct s_pxe_cpb_station_address {\r
- //\r
- // If supplied and supported, the current station MAC address\r
- // will be changed.\r
- //\r
- PXE_MAC_ADDR StationAddr;\r
-} PXE_CPB_STATION_ADDRESS;\r
-\r
-typedef struct s_pxe_dpb_station_address {\r
- //\r
- // Current station MAC address.\r
- //\r
- PXE_MAC_ADDR StationAddr;\r
-\r
- //\r
- // Station broadcast MAC address.\r
- //\r
- PXE_MAC_ADDR BroadcastAddr;\r
-\r
- //\r
- // Permanent station MAC address.\r
- //\r
- PXE_MAC_ADDR PermanentAddr;\r
-} PXE_DB_STATION_ADDRESS;\r
-\r
-typedef struct s_pxe_db_statistics {\r
- //\r
- // Bit field identifying what statistic data is collected by the\r
- // UNDI/NIC.\r
- // If bit 0x00 is set, Data[0x00] is collected.\r
- // If bit 0x01 is set, Data[0x01] is collected.\r
- // If bit 0x20 is set, Data[0x20] is collected.\r
- // If bit 0x21 is set, Data[0x21] is collected.\r
- // Etc.\r
- //\r
- PXE_UINT64 Supported;\r
-\r
- //\r
- // Statistic data.\r
- //\r
- PXE_UINT64 Data[64];\r
-} PXE_DB_STATISTICS;\r
-\r
-//\r
-// Total number of frames received. Includes frames with errors and\r
-// dropped frames.\r
-//\r
-#define PXE_STATISTICS_RX_TOTAL_FRAMES 0x00\r
-\r
-//\r
-// Number of valid frames received and copied into receive buffers.\r
-//\r
-#define PXE_STATISTICS_RX_GOOD_FRAMES 0x01\r
-\r
-//\r
-// Number of frames below the minimum length for the media.\r
-// This would be <64 for ethernet.\r
-//\r
-#define PXE_STATISTICS_RX_UNDERSIZE_FRAMES 0x02\r
-\r
-//\r
-// Number of frames longer than the maxminum length for the\r
-// media. This would be >1500 for ethernet.\r
-//\r
-#define PXE_STATISTICS_RX_OVERSIZE_FRAMES 0x03\r
-\r
-//\r
-// Valid frames that were dropped because receive buffers were full.\r
-//\r
-#define PXE_STATISTICS_RX_DROPPED_FRAMES 0x04\r
-\r
-//\r
-// Number of valid unicast frames received and not dropped.\r
-//\r
-#define PXE_STATISTICS_RX_UNICAST_FRAMES 0x05\r
-\r
-//\r
-// Number of valid broadcast frames received and not dropped.\r
-//\r
-#define PXE_STATISTICS_RX_BROADCAST_FRAMES 0x06\r
-\r
-//\r
-// Number of valid mutlicast frames received and not dropped.\r
-//\r
-#define PXE_STATISTICS_RX_MULTICAST_FRAMES 0x07\r
-\r
-//\r
-// Number of frames w/ CRC or alignment errors.\r
-//\r
-#define PXE_STATISTICS_RX_CRC_ERROR_FRAMES 0x08\r
-\r
-//\r
-// Total number of bytes received. Includes frames with errors\r
-// and dropped frames.\r
-//\r
-#define PXE_STATISTICS_RX_TOTAL_BYTES 0x09\r
-\r
-//\r
-// Transmit statistics.\r
-//\r
-#define PXE_STATISTICS_TX_TOTAL_FRAMES 0x0A\r
-#define PXE_STATISTICS_TX_GOOD_FRAMES 0x0B\r
-#define PXE_STATISTICS_TX_UNDERSIZE_FRAMES 0x0C\r
-#define PXE_STATISTICS_TX_OVERSIZE_FRAMES 0x0D\r
-#define PXE_STATISTICS_TX_DROPPED_FRAMES 0x0E\r
-#define PXE_STATISTICS_TX_UNICAST_FRAMES 0x0F\r
-#define PXE_STATISTICS_TX_BROADCAST_FRAMES 0x10\r
-#define PXE_STATISTICS_TX_MULTICAST_FRAMES 0x11\r
-#define PXE_STATISTICS_TX_CRC_ERROR_FRAMES 0x12\r
-#define PXE_STATISTICS_TX_TOTAL_BYTES 0x13\r
-\r
-//\r
-// Number of collisions detection on this subnet.\r
-//\r
-#define PXE_STATISTICS_COLLISIONS 0x14\r
-\r
-//\r
-// Number of frames destined for unsupported protocol.\r
-//\r
-#define PXE_STATISTICS_UNSUPPORTED_PROTOCOL 0x15\r
-\r
-typedef struct s_pxe_cpb_mcast_ip_to_mac {\r
- //\r
- // Multicast IP address to be converted to multicast MAC address.\r
- //\r
- PXE_IP_ADDR IP;\r
-} PXE_CPB_MCAST_IP_TO_MAC;\r
-\r
-typedef struct s_pxe_db_mcast_ip_to_mac {\r
- //\r
- // Multicast MAC address.\r
- //\r
- PXE_MAC_ADDR MAC;\r
-} PXE_DB_MCAST_IP_TO_MAC;\r
-\r
-typedef struct s_pxe_cpb_nvdata_sparse {\r
- //\r
- // NvData item list. Only items in this list will be updated.\r
- //\r
- struct {\r
- //\r
- // Non-volatile storage address to be changed.\r
- //\r
- PXE_UINT32 Addr;\r
-\r
- //\r
- // Data item to write into above storage address.\r
- //\r
- union {\r
- PXE_UINT8 Byte;\r
- PXE_UINT16 Word;\r
- PXE_UINT32 Dword;\r
- } Data;\r
- } Item[MAX_EEPROM_LEN];\r
-}\r
-PXE_CPB_NVDATA_SPARSE;\r
-\r
-//\r
-// When using bulk update, the size of the CPB structure must be\r
-// the same size as the non-volatile NIC storage.\r
-//\r
-typedef union u_pxe_cpb_nvdata_bulk {\r
- //\r
- // Array of byte-wide data items.\r
- //\r
- PXE_UINT8 Byte[MAX_EEPROM_LEN << 2];\r
-\r
- //\r
- // Array of word-wide data items.\r
- //\r
- PXE_UINT16 Word[MAX_EEPROM_LEN << 1];\r
-\r
- //\r
- // Array of dword-wide data items.\r
- //\r
- PXE_UINT32 Dword[MAX_EEPROM_LEN];\r
-} PXE_CPB_NVDATA_BULK;\r
-\r
-typedef struct s_pxe_db_nvdata {\r
- //\r
- // Arrays of data items from non-volatile storage.\r
- //\r
- union {\r
- //\r
- // Array of byte-wide data items.\r
- //\r
- PXE_UINT8 Byte[MAX_EEPROM_LEN << 2];\r
-\r
- //\r
- // Array of word-wide data items.\r
- //\r
- PXE_UINT16 Word[MAX_EEPROM_LEN << 1];\r
-\r
- //\r
- // Array of dword-wide data items.\r
- //\r
- PXE_UINT32 Dword[MAX_EEPROM_LEN];\r
- } Data;\r
-} PXE_DB_NVDATA;\r
-\r
-typedef struct s_pxe_db_get_status {\r
- //\r
- // Length of next receive frame (header + data). If this is zero,\r
- // there is no next receive frame available.\r
- //\r
- PXE_UINT32 RxFrameLen;\r
-\r
- //\r
- // Reserved, set to zero.\r
- //\r
- PXE_UINT32 reserved;\r
-\r
- //\r
- // Addresses of transmitted buffers that need to be recycled.\r
- //\r
- PXE_UINT64 TxBuffer[MAX_XMIT_BUFFERS];\r
-} PXE_DB_GET_STATUS;\r
-\r
-typedef struct s_pxe_cpb_fill_header {\r
- //\r
- // Source and destination MAC addresses. These will be copied into\r
- // the media header without doing byte swapping.\r
- //\r
- PXE_MAC_ADDR SrcAddr;\r
- PXE_MAC_ADDR DestAddr;\r
-\r
- //\r
- // Address of first byte of media header. The first byte of packet data\r
- // follows the last byte of the media header.\r
- //\r
- PXE_UINT64 MediaHeader;\r
-\r
- //\r
- // Length of packet data in bytes (not including the media header).\r
- //\r
- PXE_UINT32 PacketLen;\r
-\r
- //\r
- // Protocol type. This will be copied into the media header without\r
- // doing byte swapping. Protocol type numbers can be obtained from\r
- // the Assigned Numbers RFC 1700.\r
- //\r
- PXE_UINT16 Protocol;\r
-\r
- //\r
- // Length of the media header in bytes.\r
- //\r
- PXE_UINT16 MediaHeaderLen;\r
-} PXE_CPB_FILL_HEADER;\r
-\r
-#define PXE_PROTOCOL_ETHERNET_IP 0x0800\r
-#define PXE_PROTOCOL_ETHERNET_ARP 0x0806\r
-#define MAX_XMIT_FRAGMENTS 16\r
-\r
-typedef struct s_pxe_cpb_fill_header_fragmented {\r
- //\r
- // Source and destination MAC addresses. These will be copied into\r
- // the media header without doing byte swapping.\r
- //\r
- PXE_MAC_ADDR SrcAddr;\r
- PXE_MAC_ADDR DestAddr;\r
-\r
- //\r
- // Length of packet data in bytes (not including the media header).\r
- //\r
- PXE_UINT32 PacketLen;\r
-\r
- //\r
- // Protocol type. This will be copied into the media header without\r
- // doing byte swapping. Protocol type numbers can be obtained from\r
- // the Assigned Numbers RFC 1700.\r
- //\r
- PXE_MEDIA_PROTOCOL Protocol;\r
-\r
- //\r
- // Length of the media header in bytes.\r
- //\r
- PXE_UINT16 MediaHeaderLen;\r
-\r
- //\r
- // Number of packet fragment descriptors.\r
- //\r
- PXE_UINT16 FragCnt;\r
-\r
- //\r
- // Reserved, must be set to zero.\r
- //\r
- PXE_UINT16 reserved;\r
-\r
- //\r
- // Array of packet fragment descriptors. The first byte of the media\r
- // header is the first byte of the first fragment.\r
- //\r
- struct {\r
- //\r
- // Address of this packet fragment.\r
- //\r
- PXE_UINT64 FragAddr;\r
-\r
- //\r
- // Length of this packet fragment.\r
- //\r
- PXE_UINT32 FragLen;\r
-\r
- //\r
- // Reserved, must be set to zero.\r
- //\r
- PXE_UINT32 reserved;\r
- } FragDesc[MAX_XMIT_FRAGMENTS];\r
-}\r
-PXE_CPB_FILL_HEADER_FRAGMENTED;\r
-\r
-typedef struct s_pxe_cpb_transmit {\r
- //\r
- // Address of first byte of frame buffer. This is also the first byte\r
- // of the media header.\r
- //\r
- PXE_UINT64 FrameAddr;\r
-\r
- //\r
- // Length of the data portion of the frame buffer in bytes. Do not\r
- // include the length of the media header.\r
- //\r
- PXE_UINT32 DataLen;\r
-\r
- //\r
- // Length of the media header in bytes.\r
- //\r
- PXE_UINT16 MediaheaderLen;\r
-\r
- //\r
- // Reserved, must be zero.\r
- //\r
- PXE_UINT16 reserved;\r
-} PXE_CPB_TRANSMIT;\r
-\r
-typedef struct s_pxe_cpb_transmit_fragments {\r
- //\r
- // Length of packet data in bytes (not including the media header).\r
- //\r
- PXE_UINT32 FrameLen;\r
-\r
- //\r
- // Length of the media header in bytes.\r
- //\r
- PXE_UINT16 MediaheaderLen;\r
-\r
- //\r
- // Number of packet fragment descriptors.\r
- //\r
- PXE_UINT16 FragCnt;\r
-\r
- //\r
- // Array of frame fragment descriptors. The first byte of the first\r
- // fragment is also the first byte of the media header.\r
- //\r
- struct {\r
- //\r
- // Address of this frame fragment.\r
- //\r
- PXE_UINT64 FragAddr;\r
-\r
- //\r
- // Length of this frame fragment.\r
- //\r
- PXE_UINT32 FragLen;\r
-\r
- //\r
- // Reserved, must be set to zero.\r
- //\r
- PXE_UINT32 reserved;\r
- } FragDesc[MAX_XMIT_FRAGMENTS];\r
-}\r
-PXE_CPB_TRANSMIT_FRAGMENTS;\r
-\r
-typedef struct s_pxe_cpb_receive {\r
- //\r
- // Address of first byte of receive buffer. This is also the first byte\r
- // of the frame header.\r
- //\r
- PXE_UINT64 BufferAddr;\r
-\r
- //\r
- // Length of receive buffer. This must be large enough to hold the\r
- // received frame (media header + data). If the length of smaller than\r
- // the received frame, data will be lost.\r
- //\r
- PXE_UINT32 BufferLen;\r
-\r
- //\r
- // Reserved, must be set to zero.\r
- //\r
- PXE_UINT32 reserved;\r
-} PXE_CPB_RECEIVE;\r
-\r
-typedef struct s_pxe_db_receive {\r
- //\r
- // Source and destination MAC addresses from media header.\r
- //\r
- PXE_MAC_ADDR SrcAddr;\r
- PXE_MAC_ADDR DestAddr;\r
-\r
- //\r
- // Length of received frame. May be larger than receive buffer size.\r
- // The receive buffer will not be overwritten. This is how to tell\r
- // if data was lost because the receive buffer was too small.\r
- //\r
- PXE_UINT32 FrameLen;\r
-\r
- //\r
- // Protocol type from media header.\r
- //\r
- PXE_MEDIA_PROTOCOL Protocol;\r
-\r
- //\r
- // Length of media header in received frame.\r
- //\r
- PXE_UINT16 MediaHeaderLen;\r
-\r
- //\r
- // Type of receive frame.\r
- //\r
- PXE_FRAME_TYPE Type;\r
-\r
- //\r
- // Reserved, must be zero.\r
- //\r
- PXE_UINT8 reserved[7];\r
-\r
-} PXE_DB_RECEIVE;\r
-\r
-//\r
-// Packet definitions\r
-//\r
-typedef struct {\r
- UINT8 BootpOpcode;\r
- UINT8 BootpHwType;\r
- UINT8 BootpHwAddrLen;\r
- UINT8 BootpGateHops;\r
- UINT32 BootpIdent;\r
- UINT16 BootpSeconds;\r
- UINT16 BootpFlags;\r
- UINT8 BootpCiAddr[4];\r
- UINT8 BootpYiAddr[4];\r
- UINT8 BootpSiAddr[4];\r
- UINT8 BootpGiAddr[4];\r
- UINT8 BootpHwAddr[16];\r
- UINT8 BootpSrvName[64];\r
- UINT8 BootpBootFile[128];\r
- UINT32 DhcpMagik;\r
- UINT8 DhcpOptions[56];\r
-} EFI_PXE_BASE_CODE_DHCPV4_PACKET;\r
-\r
-typedef union {\r
- UINT8 Raw[1472];\r
- EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4;\r
-\r
- //\r
- // EFI_PXE_BASE_CODE_DHCPV6_PACKET Dhcpv6;\r
- //\r
-} EFI_PXE_BASE_CODE_PACKET;\r
-\r
-\r
-\r
-#pragma pack()\r
-\r
-#endif\r
+++ /dev/null
-/** @file\r
- Include file that supportes UEFI.\r
-\r
- This include file must only contain things defined in the UEFI 2.0 specification.\r
- If a code construct is defined in the UEFI 2.0 specification it must be included\r
- by this include file.\r
-\r
- Copyright (c) 2006 - 2007, Intel Corporation\r
- All rights reserved. This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
- Module Name: UefiSpec.h\r
-\r
-**/\r
-\r
-#ifndef __UEFI_SPEC_H__\r
-#define __UEFI_SPEC_H__\r
-\r
-#include <Uefi/UefiMultiPhase.h>\r
-\r
-#include <Protocol/DevicePath.h>\r
-#include <Protocol/SimpleTextIn.h>\r
-#include <Protocol/SimpleTextOut.h>\r
-\r
-//\r
-// Networking Definitions\r
-//\r
-typedef struct {\r
- UINT8 Addr[4];\r
-} EFI_IPv4_ADDRESS;\r
-\r
-typedef struct {\r
- UINT8 Addr[16];\r
-} EFI_IPv6_ADDRESS;\r
-\r
-typedef struct {\r
- UINT8 Addr[32];\r
-} EFI_MAC_ADDRESS;\r
-\r
-typedef union {\r
- UINT32 Addr[4];\r
- EFI_IPv4_ADDRESS v4;\r
- EFI_IPv6_ADDRESS v6;\r
-} EFI_IP_ADDRESS;\r
-\r
-\r
-//\r
-// Enumeration of memory allocation.\r
-// \r
-typedef enum {\r
- AllocateAnyPages,\r
- AllocateMaxAddress,\r
- AllocateAddress,\r
- MaxAllocateType\r
-} EFI_ALLOCATE_TYPE;\r
-\r
-\r
-//\r
-// possible caching types for the memory range\r
-//\r
-#define EFI_MEMORY_UC 0x0000000000000001ULL\r
-#define EFI_MEMORY_WC 0x0000000000000002ULL\r
-#define EFI_MEMORY_WT 0x0000000000000004ULL\r
-#define EFI_MEMORY_WB 0x0000000000000008ULL\r
-#define EFI_MEMORY_UCE 0x0000000000000010ULL\r
-\r
-//\r
-// physical memory protection on range\r
-//\r
-#define EFI_MEMORY_WP 0x0000000000001000ULL\r
-#define EFI_MEMORY_RP 0x0000000000002000ULL\r
-#define EFI_MEMORY_XP 0x0000000000004000ULL\r
-\r
-//\r
-// range requires a runtime mapping\r
-//\r
-#define EFI_MEMORY_RUNTIME 0x8000000000000000ULL\r
-\r
-#define EFI_MEMORY_DESCRIPTOR_VERSION 1\r
-typedef struct {\r
- UINT32 Type;\r
- EFI_PHYSICAL_ADDRESS PhysicalStart;\r
- EFI_VIRTUAL_ADDRESS VirtualStart;\r
- UINT64 NumberOfPages;\r
- UINT64 Attribute;\r
-} EFI_MEMORY_DESCRIPTOR;\r
-\r
-//\r
-// Build macros to find next EFI_MEMORY_DESCRIPTOR.\r
-// \r
-#define NextMemoryDescriptor(_Ptr, _Size) ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) (_Ptr)) + (_Size)))\r
-#define NEXT_MEMORY_DESCRIPTOR(_Ptr, _Size) NextMemoryDescriptor (_Ptr, _Size)\r
-\r
-//\r
-// Declare forward referenced data structures\r
-//\r
-typedef struct _EFI_SYSTEM_TABLE EFI_SYSTEM_TABLE;\r
-\r
-/**\r
- Allocates memory pages from the system.\r
-\r
- @param Type The type of allocation to perform.\r
- @param MemoryType The type of memory to allocate.\r
- @param Pages The number of contiguous 4 KB pages to allocate.\r
- @param Memory Pointer to a physical address. On input, the way in which the address is\r
- used depends on the value of Type.\r
-\r
- @retval EFI_SUCCESS The requested pages were allocated.\r
- @retval EFI_INVALID_PARAMETER 1) Type is not AllocateAnyPages or\r
- AllocateMaxAddress or AllocateAddress.\r
- 2) MemoryType is in the range\r
- EfiMaxMemoryType..0x7FFFFFFF.\r
- @retval EFI_OUT_OF_RESOURCES The pages could not be allocated.\r
- @retval EFI_NOT_FOUND The requested pages could not be found.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ALLOCATE_PAGES) (\r
- IN EFI_ALLOCATE_TYPE Type,\r
- IN EFI_MEMORY_TYPE MemoryType,\r
- IN UINTN Pages,\r
- IN OUT EFI_PHYSICAL_ADDRESS *Memory\r
- );\r
-\r
-/**\r
- Frees memory pages.\r
-\r
- @param Memory The base physical address of the pages to be freed.\r
- @param Pages The number of contiguous 4 KB pages to free.\r
-\r
- @retval EFI_SUCCESS The requested pages were freed.\r
- @retval EFI_INVALID_PARAMETER Memory is not a page-aligned address or Pages is invalid.\r
- @retval EFI_NOT_FOUND The requested memory pages were not allocated with\r
- AllocatePages().\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FREE_PAGES) (\r
- IN EFI_PHYSICAL_ADDRESS Memory,\r
- IN UINTN Pages\r
- );\r
-\r
-/**\r
- Returns the current memory map.\r
-\r
- @param MemoryMapSize A pointer to the size, in bytes, of the MemoryMap buffer.\r
- @param MemoryMap A pointer to the buffer in which firmware places the current memory\r
- map.\r
- @param MapKey A pointer to the location in which firmware returns the key for the\r
- current memory map.\r
- @param DescriptorSize A pointer to the location in which firmware returns the size, in bytes, of\r
- an individual EFI_MEMORY_DESCRIPTOR.\r
- @param DescriptorVersion A pointer to the location in which firmware returns the version number\r
- associated with the EFI_MEMORY_DESCRIPTOR.\r
-\r
- @retval EFI_SUCCESS The memory map was returned in the MemoryMap buffer.\r
- @retval EFI_BUFFER_TOO_SMALL The MemoryMap buffer was too small. The current buffer size\r
- needed to hold the memory map is returned in MemoryMapSize.\r
- @retval EFI_INVALID_PARAMETER 1) MemoryMapSize is NULL.\r
- 2) The MemoryMap buffer is not too small and MemoryMap is\r
- NULL.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_GET_MEMORY_MAP) (\r
- IN OUT UINTN *MemoryMapSize,\r
- IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,\r
- OUT UINTN *MapKey,\r
- OUT UINTN *DescriptorSize,\r
- OUT UINT32 *DescriptorVersion\r
- );\r
-\r
-/**\r
- Allocates pool memory.\r
-\r
- @param PoolType The type of pool to allocate.\r
- @param Size The number of bytes to allocate from the pool.\r
- @param Buffer A pointer to a pointer to the allocated buffer if the call succeeds;\r
- undefined otherwise.\r
-\r
- @retval EFI_SUCCESS The requested number of bytes was allocated.\r
- @retval EFI_OUT_OF_RESOURCES The pool requested could not be allocated.\r
- @retval EFI_INVALID_PARAMETER PoolType was invalid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ALLOCATE_POOL) (\r
- IN EFI_MEMORY_TYPE PoolType,\r
- IN UINTN Size,\r
- OUT VOID **Buffer\r
- );\r
-\r
-/**\r
- Returns pool memory to the system.\r
-\r
- @param Buffer Pointer to the buffer to free.\r
-\r
- @retval EFI_SUCCESS The memory was returned to the system.\r
- @retval EFI_INVALID_PARAMETER Buffer was invalid.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_FREE_POOL) (\r
- IN VOID *Buffer\r
- );\r
-\r
-/**\r
- Changes the runtime addressing mode of EFI firmware from physical to virtual.\r
-\r
- @param MemoryMapSize The size in bytes of VirtualMap.\r
- @param DescriptorSize The size in bytes of an entry in the VirtualMap.\r
- @param DescriptorVersion The version of the structure entries in VirtualMap.\r
- @param VirtualMap An array of memory descriptors which contain new virtual\r
- address mapping information for all runtime ranges.\r
-\r
- @retval EFI_SUCCESS The virtual address map has been applied.\r
- @retval EFI_UNSUPPORTED EFI firmware is not at runtime, or the EFI firmware is already in\r
- virtual address mapped mode.\r
- @retval EFI_INVALID_PARAMETER DescriptorSize or DescriptorVersion is invalid.\r
- @retval EFI_NO_MAPPING A virtual address was not supplied for a range in the memory\r
- map that requires a mapping.\r
- @retval EFI_NOT_FOUND A virtual address was supplied for an address that is not found\r
- in the memory map.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) (\r
- IN UINTN MemoryMapSize,\r
- IN UINTN DescriptorSize,\r
- IN UINT32 DescriptorVersion,\r
- IN EFI_MEMORY_DESCRIPTOR *VirtualMap\r
- );\r
-\r
-/**\r
- Connects one or more drivers to a controller.\r
-\r
- @param ControllerHandle The handle of the controller to which driver(s) are to be connected.\r
- @param DriverImageHandle A pointer to an ordered list handles that support the\r
- EFI_DRIVER_BINDING_PROTOCOL.\r
- @param RemainingDevicePath A pointer to the device path that specifies a child of the\r
- controller specified by ControllerHandle.\r
- @param Recursive If TRUE, then ConnectController() is called recursively\r
- until the entire tree of controllers below the controller specified\r
- by ControllerHandle have been created. If FALSE, then\r
- the tree of controllers is only expanded one level.\r
-\r
- @retval EFI_SUCCESS 1) One or more drivers were connected to ControllerHandle.\r
- 2) No drivers were connected to ControllerHandle, but\r
- RemainingDevicePath is not NULL, and it is an End Device\r
- Path Node.\r
- @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
- @retval EFI_NOT_FOUND 1) There are no EFI_DRIVER_BINDING_PROTOCOL instances\r
- present in the system.\r
- 2) No drivers were connected to ControllerHandle.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_CONNECT_CONTROLLER) (\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_HANDLE *DriverImageHandle, OPTIONAL\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath, OPTIONAL\r
- IN BOOLEAN Recursive\r
- );\r
-\r
-/**\r
- Disconnects one or more drivers from a controller.\r
-\r
- @param ControllerHandle The handle of the controller from which driver(s) are to be disconnected.\r
- @param DriverImageHandle The driver to disconnect from ControllerHandle.\r
- @param ChildHandle The handle of the child to destroy.\r
-\r
- @retval EFI_SUCCESS 1) One or more drivers were disconnected from the controller.\r
- 2) On entry, no drivers are managing ControllerHandle.\r
- 3) DriverImageHandle is not NULL, and on entry\r
- DriverImageHandle is not managing ControllerHandle.\r
-\r
- @retval EFI_INVALID_PARAMETER One ore more parameters are invalid.\r
- @retval EFI_OUT_OF_RESOURCES There are not enough resources available to disconnect any drivers from\r
- ControllerHandle.\r
- @retval EFI_DEVICE_ERROR The controller could not be disconnected because of a device error.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_DISCONNECT_CONTROLLER) (\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_HANDLE DriverImageHandle, OPTIONAL\r
- IN EFI_HANDLE ChildHandle OPTIONAL\r
- );\r
-\r
-\r
-\r
-//\r
-// ConvertPointer DebugDisposition type.\r
-//\r
-#define EFI_OPTIONAL_PTR 0x00000001\r
-#define EFI_OPTIONAL_POINTER EFI_OPTIONAL_PTR\r
-\r
-/**\r
- Determines the new virtual address that is to be used on subsequent memory accesses.\r
-\r
- @param DebugDisposition Supplies type information for the pointer being converted.\r
- @param Address A pointer to a pointer that is to be fixed to be the value needed\r
- for the new virtual address mappings being applied.\r
-\r
- @retval EFI_SUCCESS The pointer pointed to by Address was modified.\r
- @retval EFI_INVALID_PARAMETER 1) Address is NULL.\r
- 2) *Address is NULL and DebugDisposition does\r
- not have the EFI_OPTIONAL_PTR bit set.\r
- @retval EFI_NOT_FOUND The pointer pointed to by Address was not found to be part\r
- of the current memory map. This is normally fatal.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_CONVERT_POINTER) (\r
- IN UINTN DebugDisposition,\r
- IN OUT VOID **Address\r
- );\r
-\r
-\r
-//\r
-// These types can be ¡°ORed¡± together as needed ¨C for example,\r
-// EVT_TIMER might be ¡°Ored¡± with EVT_NOTIFY_WAIT or\r
-// EVT_NOTIFY_SIGNAL.\r
-//\r
-#define EVT_TIMER 0x80000000\r
-#define EVT_RUNTIME 0x40000000\r
-\r
-#define EVT_NOTIFY_WAIT 0x00000100\r
-#define EVT_NOTIFY_SIGNAL 0x00000200\r
-#define EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201\r
-#define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202\r
-\r
-\r
-//\r
-// The event¡¯s NotifyContext pointer points to a runtime memory\r
-// address. \r
-// The event is deprecated in UEFI2.0 and later specifications.\r
-// \r
-#define EVT_RUNTIME_CONTEXT 0x20000000\r
-\r
-\r
-/**\r
- Invoke a notification event\r
-\r
- @param Event Event whose notification function is being invoked.\r
- @param Context Pointer to the notification function's context,\r
- which is implementation-dependent.\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_EVENT_NOTIFY) (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
- );\r
-\r
-/**\r
- Creates an event.\r
-\r
- @param Type The type of event to create and its mode and attributes.\r
- @param NotifyTpl &n