1 | /** @file
|
---|
2 | Include file matches things in PI for multiple module types.
|
---|
3 |
|
---|
4 | Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
|
---|
5 | This program and the accompanying materials are licensed and made available under
|
---|
6 | the terms and conditions of the BSD License that accompanies this distribution.
|
---|
7 | The full text of the license may be found at
|
---|
8 | http://opensource.org/licenses/bsd-license.php.
|
---|
9 |
|
---|
10 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
---|
11 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
---|
12 |
|
---|
13 | @par Revision Reference:
|
---|
14 | These elements are defined in UEFI Platform Initialization Specification 1.2.
|
---|
15 |
|
---|
16 | **/
|
---|
17 |
|
---|
18 | #ifndef __PI_MULTIPHASE_H__
|
---|
19 | #define __PI_MULTIPHASE_H__
|
---|
20 |
|
---|
21 | #include <Pi/PiFirmwareVolume.h>
|
---|
22 | #include <Pi/PiFirmwareFile.h>
|
---|
23 | #include <Pi/PiBootMode.h>
|
---|
24 | #include <Pi/PiHob.h>
|
---|
25 | #include <Pi/PiDependency.h>
|
---|
26 | #include <Pi/PiStatusCode.h>
|
---|
27 | #include <Pi/PiS3BootScript.h>
|
---|
28 |
|
---|
29 | /**
|
---|
30 | Produces an error code in the range reserved for use by the Platform Initialization
|
---|
31 | Architecture Specification.
|
---|
32 |
|
---|
33 | The supported 32-bit range is 0xA0000000-0xBFFFFFFF
|
---|
34 | The supported 64-bit range is 0xA000000000000000-0xBFFFFFFFFFFFFFFF
|
---|
35 |
|
---|
36 | @param StatusCode The status code value to convert into a warning code.
|
---|
37 | StatusCode must be in the range 0x00000000..0x1FFFFFFF.
|
---|
38 |
|
---|
39 | @return The value specified by StatusCode in the PI reserved range.
|
---|
40 |
|
---|
41 | **/
|
---|
42 | #define DXE_ERROR(StatusCode) (MAX_BIT | (MAX_BIT >> 2) | StatusCode)
|
---|
43 |
|
---|
44 | ///
|
---|
45 | /// If this value is returned by an EFI image, then the image should be unloaded.
|
---|
46 | ///
|
---|
47 | #define EFI_REQUEST_UNLOAD_IMAGE DXE_ERROR (1)
|
---|
48 |
|
---|
49 | ///
|
---|
50 | /// If this value is returned by an API, it means the capability is not yet
|
---|
51 | /// installed/available/ready to use.
|
---|
52 | ///
|
---|
53 | #define EFI_NOT_AVAILABLE_YET DXE_ERROR (2)
|
---|
54 |
|
---|
55 | ///
|
---|
56 | /// Success and warning codes reserved for use by PI.
|
---|
57 | /// Supported 32-bit range is 0x20000000-0x3fffffff.
|
---|
58 | /// Supported 64-bit range is 0x2000000000000000-0x3fffffffffffffff.
|
---|
59 | ///
|
---|
60 | #define PI_ENCODE_WARNING(a) ((MAX_BIT >> 2) | (a))
|
---|
61 |
|
---|
62 | ///
|
---|
63 | /// Error codes reserved for use by PI.
|
---|
64 | /// Supported 32-bit range is 0xa0000000-0xbfffffff.
|
---|
65 | /// Supported 64-bit range is 0xa000000000000000-0xbfffffffffffffff.
|
---|
66 | ///
|
---|
67 | #define PI_ENCODE_ERROR(a) (MAX_BIT | (MAX_BIT >> 2) | (a))
|
---|
68 |
|
---|
69 | ///
|
---|
70 | /// Return status codes defined in SMM CIS.
|
---|
71 | ///
|
---|
72 | #define EFI_INTERRUPT_PENDING PI_ENCODE_ERROR (0)
|
---|
73 |
|
---|
74 | #define EFI_WARN_INTERRUPT_SOURCE_PENDING PI_ENCODE_WARNING (0)
|
---|
75 | #define EFI_WARN_INTERRUPT_SOURCE_QUIESCED PI_ENCODE_WARNING (1)
|
---|
76 |
|
---|
77 | ///
|
---|
78 | /// Bitmask of values for Authentication Status.
|
---|
79 | /// Authentication Status is returned from EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL
|
---|
80 | /// and the EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI
|
---|
81 | ///
|
---|
82 | /// xx00 Image was not signed.
|
---|
83 | /// xxx1 Platform security policy override. Assumes the same meaning as 0010 (the image was signed, the
|
---|
84 | /// signature was tested, and the signature passed authentication test).
|
---|
85 | /// 0010 Image was signed, the signature was tested, and the signature passed authentication test.
|
---|
86 | /// 0110 Image was signed and the signature was not tested.
|
---|
87 | /// 1010 Image was signed, the signature was tested, and the signature failed the authentication test.
|
---|
88 | ///
|
---|
89 | ///@{
|
---|
90 | #define EFI_AUTH_STATUS_PLATFORM_OVERRIDE 0x01
|
---|
91 | #define EFI_AUTH_STATUS_IMAGE_SIGNED 0x02
|
---|
92 | #define EFI_AUTH_STATUS_NOT_TESTED 0x04
|
---|
93 | #define EFI_AUTH_STATUS_TEST_FAILED 0x08
|
---|
94 | #define EFI_AUTH_STATUS_ALL 0x0f
|
---|
95 | ///@}
|
---|
96 |
|
---|
97 | ///
|
---|
98 | /// SMRAM states and capabilities
|
---|
99 | ///
|
---|
100 | #define EFI_SMRAM_OPEN 0x00000001
|
---|
101 | #define EFI_SMRAM_CLOSED 0x00000002
|
---|
102 | #define EFI_SMRAM_LOCKED 0x00000004
|
---|
103 | #define EFI_CACHEABLE 0x00000008
|
---|
104 | #define EFI_ALLOCATED 0x00000010
|
---|
105 | #define EFI_NEEDS_TESTING 0x00000020
|
---|
106 | #define EFI_NEEDS_ECC_INITIALIZATION 0x00000040
|
---|
107 |
|
---|
108 | ///
|
---|
109 | /// Structure describing a SMRAM region and its accessibility attributes.
|
---|
110 | ///
|
---|
111 | typedef struct {
|
---|
112 | ///
|
---|
113 | /// Designates the physical address of the SMRAM in memory. This view of memory is
|
---|
114 | /// the same as seen by I/O-based agents, for example, but it may not be the address seen
|
---|
115 | /// by the processors.
|
---|
116 | ///
|
---|
117 | EFI_PHYSICAL_ADDRESS PhysicalStart;
|
---|
118 | ///
|
---|
119 | /// Designates the address of the SMRAM, as seen by software executing on the
|
---|
120 | /// processors. This address may or may not match PhysicalStart.
|
---|
121 | ///
|
---|
122 | EFI_PHYSICAL_ADDRESS CpuStart;
|
---|
123 | ///
|
---|
124 | /// Describes the number of bytes in the SMRAM region.
|
---|
125 | ///
|
---|
126 | UINT64 PhysicalSize;
|
---|
127 | ///
|
---|
128 | /// Describes the accessibility attributes of the SMRAM. These attributes include the
|
---|
129 | /// hardware state (e.g., Open/Closed/Locked), capability (e.g., cacheable), logical
|
---|
130 | /// allocation (e.g., allocated), and pre-use initialization (e.g., needs testing/ECC
|
---|
131 | /// initialization).
|
---|
132 | ///
|
---|
133 | UINT64 RegionState;
|
---|
134 | } EFI_SMRAM_DESCRIPTOR;
|
---|
135 |
|
---|
136 | typedef enum {
|
---|
137 | EFI_PCD_TYPE_8,
|
---|
138 | EFI_PCD_TYPE_16,
|
---|
139 | EFI_PCD_TYPE_32,
|
---|
140 | EFI_PCD_TYPE_64,
|
---|
141 | EFI_PCD_TYPE_BOOL,
|
---|
142 | EFI_PCD_TYPE_PTR
|
---|
143 | } EFI_PCD_TYPE;
|
---|
144 |
|
---|
145 | typedef struct {
|
---|
146 | ///
|
---|
147 | /// The returned information associated with the requested TokenNumber. If
|
---|
148 | /// TokenNumber is 0, then PcdType is set to EFI_PCD_TYPE_8.
|
---|
149 | ///
|
---|
150 | EFI_PCD_TYPE PcdType;
|
---|
151 | ///
|
---|
152 | /// The size of the data in bytes associated with the TokenNumber specified. If
|
---|
153 | /// TokenNumber is 0, then PcdSize is set 0.
|
---|
154 | ///
|
---|
155 | UINTN PcdSize;
|
---|
156 | ///
|
---|
157 | /// The null-terminated ASCII string associated with a given token. If the
|
---|
158 | /// TokenNumber specified was 0, then this field corresponds to the null-terminated
|
---|
159 | /// ASCII string associated with the token's namespace Guid. If NULL, there is no
|
---|
160 | /// name associated with this request.
|
---|
161 | ///
|
---|
162 | CHAR8 *PcdName;
|
---|
163 | } EFI_PCD_INFO;
|
---|
164 |
|
---|
165 | #endif
|
---|