]>
Commit | Line | Data |
---|---|---|
959ccb23 | 1 | /** @file\r |
2 | Include file matches things in PI for multiple module types.\r | |
3 | \r | |
9095d37b | 4 | Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r |
9344f092 | 5 | SPDX-License-Identifier: BSD-2-Clause-Patent\r |
959ccb23 | 6 | \r |
959ccb23 | 7 | @par Revision Reference:\r |
af2dc6a7 | 8 | These elements are defined in UEFI Platform Initialization Specification 1.2.\r |
959ccb23 | 9 | \r |
10 | **/\r | |
11 | \r | |
12 | #ifndef __PI_MULTIPHASE_H__\r | |
13 | #define __PI_MULTIPHASE_H__\r | |
14 | \r | |
959ccb23 | 15 | #include <Pi/PiFirmwareVolume.h>\r |
16 | #include <Pi/PiFirmwareFile.h>\r | |
17 | #include <Pi/PiBootMode.h>\r | |
959ccb23 | 18 | #include <Pi/PiHob.h>\r |
19 | #include <Pi/PiDependency.h>\r | |
d7dfd027 | 20 | #include <Pi/PiStatusCode.h>\r |
8c803876 | 21 | #include <Pi/PiS3BootScript.h>\r |
211a2649 | 22 | \r |
b205f267 | 23 | /**\r |
24 | Produces an error code in the range reserved for use by the Platform Initialization\r | |
25 | Architecture Specification.\r | |
26 | \r | |
9095d37b LG |
27 | The supported 32-bit range is 0xA0000000-0xBFFFFFFF\r |
28 | The supported 64-bit range is 0xA000000000000000-0xBFFFFFFFFFFFFFFF\r | |
b205f267 | 29 | \r |
9095d37b | 30 | @param StatusCode The status code value to convert into a warning code.\r |
b205f267 | 31 | StatusCode must be in the range 0x00000000..0x1FFFFFFF.\r |
32 | \r | |
33 | @return The value specified by StatusCode in the PI reserved range.\r | |
34 | \r | |
35 | **/\r | |
36 | #define DXE_ERROR(StatusCode) (MAX_BIT | (MAX_BIT >> 2) | StatusCode)\r | |
37 | \r | |
38 | ///\r | |
39 | /// If this value is returned by an EFI image, then the image should be unloaded.\r | |
40 | ///\r | |
41 | #define EFI_REQUEST_UNLOAD_IMAGE DXE_ERROR (1)\r | |
42 | \r | |
43 | ///\r | |
9095d37b | 44 | /// If this value is returned by an API, it means the capability is not yet\r |
b205f267 | 45 | /// installed/available/ready to use.\r |
46 | ///\r | |
47 | #define EFI_NOT_AVAILABLE_YET DXE_ERROR (2)\r | |
48 | \r | |
04c5d169 | 49 | ///\r |
af2dc6a7 | 50 | /// Success and warning codes reserved for use by PI.\r |
51 | /// Supported 32-bit range is 0x20000000-0x3fffffff.\r | |
52 | /// Supported 64-bit range is 0x2000000000000000-0x3fffffffffffffff.\r | |
04c5d169 | 53 | ///\r |
54 | #define PI_ENCODE_WARNING(a) ((MAX_BIT >> 2) | (a))\r | |
55 | \r | |
56 | ///\r | |
af2dc6a7 | 57 | /// Error codes reserved for use by PI.\r |
58 | /// Supported 32-bit range is 0xa0000000-0xbfffffff.\r | |
59 | /// Supported 64-bit range is 0xa000000000000000-0xbfffffffffffffff.\r | |
04c5d169 | 60 | ///\r |
61 | #define PI_ENCODE_ERROR(a) (MAX_BIT | (MAX_BIT >> 2) | (a))\r | |
62 | \r | |
9095d37b | 63 | ///\r |
af2dc6a7 | 64 | /// Return status codes defined in SMM CIS.\r |
9095d37b | 65 | ///\r |
04c5d169 | 66 | #define EFI_INTERRUPT_PENDING PI_ENCODE_ERROR (0)\r |
67 | \r | |
68 | #define EFI_WARN_INTERRUPT_SOURCE_PENDING PI_ENCODE_WARNING (0)\r | |
69 | #define EFI_WARN_INTERRUPT_SOURCE_QUIESCED PI_ENCODE_WARNING (1)\r | |
70 | \r | |
b205f267 | 71 | ///\r |
72 | /// Bitmask of values for Authentication Status.\r | |
9095d37b | 73 | /// Authentication Status is returned from EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL\r |
b205f267 | 74 | /// and the EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI\r |
75 | ///\r | |
76 | /// xx00 Image was not signed.\r | |
af2dc6a7 | 77 | /// xxx1 Platform security policy override. Assumes the same meaning as 0010 (the image was signed, the\r |
b205f267 | 78 | /// signature was tested, and the signature passed authentication test).\r |
79 | /// 0010 Image was signed, the signature was tested, and the signature passed authentication test.\r | |
80 | /// 0110 Image was signed and the signature was not tested.\r | |
81 | /// 1010 Image was signed, the signature was tested, and the signature failed the authentication test.\r | |
82 | ///\r | |
83 | ///@{\r | |
84 | #define EFI_AUTH_STATUS_PLATFORM_OVERRIDE 0x01\r | |
85 | #define EFI_AUTH_STATUS_IMAGE_SIGNED 0x02\r | |
86 | #define EFI_AUTH_STATUS_NOT_TESTED 0x04\r | |
87 | #define EFI_AUTH_STATUS_TEST_FAILED 0x08\r | |
88 | #define EFI_AUTH_STATUS_ALL 0x0f\r | |
89 | ///@}\r | |
211a2649 | 90 | \r |
79a42176 | 91 | ///\r |
2f208e59 | 92 | /// MMRAM states and capabilities\r |
79a42176 | 93 | ///\r |
2f208e59 ED |
94 | #define EFI_MMRAM_OPEN 0x00000001\r |
95 | #define EFI_MMRAM_CLOSED 0x00000002\r | |
96 | #define EFI_MMRAM_LOCKED 0x00000004\r | |
79a42176 | 97 | #define EFI_CACHEABLE 0x00000008\r |
98 | #define EFI_ALLOCATED 0x00000010\r | |
99 | #define EFI_NEEDS_TESTING 0x00000020\r | |
100 | #define EFI_NEEDS_ECC_INITIALIZATION 0x00000040\r | |
101 | \r | |
2f208e59 ED |
102 | #define EFI_SMRAM_OPEN EFI_MMRAM_OPEN\r |
103 | #define EFI_SMRAM_CLOSED EFI_MMRAM_CLOSED\r | |
104 | #define EFI_SMRAM_LOCKED EFI_MMRAM_LOCKED\r | |
105 | \r | |
79a42176 | 106 | ///\r |
2f208e59 | 107 | /// Structure describing a MMRAM region and its accessibility attributes.\r |
79a42176 | 108 | ///\r |
109 | typedef struct {\r | |
110 | ///\r | |
2f208e59 ED |
111 | /// Designates the physical address of the MMRAM in memory. This view of memory is\r |
112 | /// the same as seen by I/O-based agents, for example, but it may not be the address seen\r | |
79a42176 | 113 | /// by the processors.\r |
114 | ///\r | |
115 | EFI_PHYSICAL_ADDRESS PhysicalStart;\r | |
116 | ///\r | |
2f208e59 | 117 | /// Designates the address of the MMRAM, as seen by software executing on the\r |
79a42176 | 118 | /// processors. This address may or may not match PhysicalStart.\r |
119 | ///\r | |
9095d37b | 120 | EFI_PHYSICAL_ADDRESS CpuStart;\r |
79a42176 | 121 | ///\r |
2f208e59 | 122 | /// Describes the number of bytes in the MMRAM region.\r |
79a42176 | 123 | ///\r |
124 | UINT64 PhysicalSize;\r | |
125 | ///\r | |
2f208e59 ED |
126 | /// Describes the accessibility attributes of the MMRAM. These attributes include the\r |
127 | /// hardware state (e.g., Open/Closed/Locked), capability (e.g., cacheable), logical\r | |
128 | /// allocation (e.g., allocated), and pre-use initialization (e.g., needs testing/ECC\r | |
79a42176 | 129 | /// initialization).\r |
130 | ///\r | |
131 | UINT64 RegionState;\r | |
2f208e59 ED |
132 | } EFI_MMRAM_DESCRIPTOR;\r |
133 | \r | |
134 | typedef EFI_MMRAM_DESCRIPTOR EFI_SMRAM_DESCRIPTOR;\r | |
79a42176 | 135 | \r |
96d6d004 SZ |
136 | typedef enum {\r |
137 | EFI_PCD_TYPE_8,\r | |
138 | EFI_PCD_TYPE_16,\r | |
139 | EFI_PCD_TYPE_32,\r | |
140 | EFI_PCD_TYPE_64,\r | |
141 | EFI_PCD_TYPE_BOOL,\r | |
142 | EFI_PCD_TYPE_PTR\r | |
143 | } EFI_PCD_TYPE;\r | |
144 | \r | |
145 | typedef struct {\r | |
146 | ///\r | |
147 | /// The returned information associated with the requested TokenNumber. If\r | |
148 | /// TokenNumber is 0, then PcdType is set to EFI_PCD_TYPE_8.\r | |
149 | ///\r | |
150 | EFI_PCD_TYPE PcdType;\r | |
151 | ///\r | |
152 | /// The size of the data in bytes associated with the TokenNumber specified. If\r | |
153 | /// TokenNumber is 0, then PcdSize is set 0.\r | |
154 | ///\r | |
155 | UINTN PcdSize;\r | |
156 | ///\r | |
157 | /// The null-terminated ASCII string associated with a given token. If the\r | |
158 | /// TokenNumber specified was 0, then this field corresponds to the null-terminated\r | |
159 | /// ASCII string associated with the token's namespace Guid. If NULL, there is no\r | |
160 | /// name associated with this request.\r | |
161 | ///\r | |
162 | CHAR8 *PcdName;\r | |
163 | } EFI_PCD_INFO;\r | |
164 | \r | |
0d24d7d6 HW |
165 | /**\r |
166 | The function prototype for invoking a function on an Application Processor.\r | |
167 | \r | |
168 | This definition is used by the UEFI MP Serices Protocol, and the\r | |
169 | PI SMM System Table.\r | |
170 | \r | |
171 | @param[in,out] Buffer The pointer to private data buffer.\r | |
172 | **/\r | |
173 | typedef\r | |
174 | VOID\r | |
175 | (EFIAPI *EFI_AP_PROCEDURE)(\r | |
176 | IN OUT VOID *Buffer\r | |
177 | );\r | |
178 | \r | |
18f169a9 ED |
179 | /**\r |
180 | The function prototype for invoking a function on an Application Processor.\r | |
181 | \r | |
182 | This definition is used by the UEFI MM MP Serices Protocol.\r | |
183 | \r | |
184 | @param[in] ProcedureArgument The pointer to private data buffer.\r | |
185 | \r | |
186 | @retval EFI_SUCCESS Excutive the procedure successfully\r | |
187 | \r | |
188 | **/\r | |
189 | typedef\r | |
190 | EFI_STATUS\r | |
191 | (EFIAPI *EFI_AP_PROCEDURE2)(\r | |
192 | IN VOID *ProcedureArgument\r | |
193 | );\r | |
194 | \r | |
959ccb23 | 195 | #endif\r |