]>
Commit | Line | Data |
---|---|---|
79964ac8 | 1 | /** @file\r |
2 | This file declares Boot Script Executer PPI.\r | |
3 | \r | |
4a71b21a | 4 | This PPI is published by a PEIM upon dispatch and provides an execution engine for the\r |
5 | Framework boot script. This PEIM should be platform neutral and have no specific knowledge of\r | |
6 | platform instructions and other information. The ability to interpret the boot script depends on the\r | |
7 | abundance of other PPIs that are available. For example, if the script requests an SMBus command\r | |
8 | execution, the PEIM looks for a relevant PPI that is available to execute it, rather than executing it\r | |
9 | by issuing the native IA-32 instruction.\r | |
10 | \r | |
2bbaeb0d | 11 | Copyright (c) 2007 - 2009, Intel Corporation\r |
79964ac8 | 12 | All rights reserved. This program and the accompanying materials\r |
13 | are licensed and made available under the terms and conditions of the BSD License\r | |
14 | which accompanies this distribution. The full text of the license may be found at\r | |
15 | http://opensource.org/licenses/bsd-license.php\r | |
16 | \r | |
17 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
18 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
19 | \r | |
20 | Module Name: BootScriptExecuter.h\r | |
21 | \r | |
22 | @par Revision Reference:\r | |
23 | This PPI is defined in Framework of EFI BootScript spec.\r | |
24 | Version 0.91.\r | |
25 | \r | |
26 | **/\r | |
27 | \r | |
694b922c | 28 | #ifndef _PEI_BOOT_SCRIPT_EXECUTER_PPI_H_\r |
29 | #define _PEI_BOOT_SCRIPT_EXECUTER_PPI_H_\r | |
30 | \r | |
0106da0f | 31 | #include <PiPei.h>\r |
79964ac8 | 32 | \r |
c3902377 | 33 | #define EFI_ACPI_S3_RESUME_SCRIPT_TABLE 0x00\r |
34 | \r | |
35 | //\r | |
36 | // Boot Script Opcode Definitions\r | |
37 | //\r | |
38 | \r | |
18998e40 | 39 | ///\r |
40 | /// The opcode is to add a record for an I/O write operation into a specified boot script table.\r | |
41 | ///\r | |
c3902377 | 42 | #define EFI_BOOT_SCRIPT_IO_WRITE_OPCODE 0x00\r |
18998e40 | 43 | ///\r |
44 | /// The opcode is to add a record for an I/O modify operation into a specified boot script table.\r | |
45 | ///\r | |
c3902377 | 46 | #define EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE 0x01\r |
18998e40 | 47 | ///\r |
48 | /// The opcode is to add a record for a memory write operation into a specified boot script table.\r | |
49 | ///\r | |
c3902377 | 50 | #define EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE 0x02\r |
18998e40 | 51 | ///\r |
52 | /// The opcode is to add a record for a memory modify operation into a specified boot script table.\r | |
53 | ///\r | |
c3902377 | 54 | #define EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE 0x03\r |
18998e40 | 55 | ///\r |
56 | /// The opcode is to adds a record for a PCI configuration space write operation into a specified boot \r | |
57 | /// script table.\r | |
58 | ///\r | |
c3902377 | 59 | #define EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE 0x04\r |
18998e40 | 60 | ///\r |
61 | /// The opcode is to add a record for a PCI configuration space modify operation into a specified \r | |
62 | /// boot script table.\r | |
63 | ///\r | |
c3902377 | 64 | #define EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE 0x05\r |
18998e40 | 65 | ///\r |
66 | /// The opcode is to add a record for an SMBus command execution into a specified boot script table.\r | |
67 | ///\r | |
c3902377 | 68 | #define EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE 0x06\r |
18998e40 | 69 | ///\r |
70 | /// The opcode is to adds a record for an execution stall on the processor into a specified\r | |
71 | /// boot script table.\r | |
72 | ///\r | |
c3902377 | 73 | #define EFI_BOOT_SCRIPT_STALL_OPCODE 0x07\r |
18998e40 | 74 | ///\r |
75 | /// The opcode is to add a record for dispatching specified arbitrary code into a specified \r | |
76 | /// boot script table.\r | |
77 | ///\r | |
c3902377 | 78 | #define EFI_BOOT_SCRIPT_DISPATCH_OPCODE 0x08\r |
79 | \r | |
80 | //\r | |
18998e40 | 81 | // Extensions to boot script definitions \r |
c3902377 | 82 | //\r |
18998e40 | 83 | \r |
84 | ///\r | |
85 | /// The opcode is to add a record for memory reads of the memory location and continues when the \r | |
86 | /// exit criteria is satisfied or after a defined duration.\r | |
87 | ///\r | |
c3902377 | 88 | #define EFI_BOOT_SCRIPT_MEM_POLL_OPCODE 0x09\r |
18998e40 | 89 | ///\r |
90 | /// The opcode is to store arbitrary information in the boot script table which is a no-op on dispatch \r | |
91 | /// and is only used for debugging script issues.\r | |
92 | ///\r | |
c3902377 | 93 | #define EFI_BOOT_SCRIPT_INFORMATION_OPCODE 0x0A\r |
18998e40 | 94 | ///\r |
95 | /// The opcode is to add a record for a PCI configuration space write operation into a \r | |
96 | /// specified boot script table.\r | |
97 | /// \r | |
c3902377 | 98 | #define EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE 0x0B\r |
18998e40 | 99 | ///\r |
100 | /// The opcode is to add a record for a PCI configuration space modify operation into a specified\r | |
101 | /// boot script table.\r | |
102 | ///\r | |
c3902377 | 103 | #define EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE 0x0C\r |
18998e40 | 104 | ///\r |
105 | /// The opcode is to add a record for dispatching specified arbitrary code into a specified\r | |
106 | /// boot script table.\r | |
107 | ///\r | |
c3902377 | 108 | #define EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE 0x0D\r |
18998e40 | 109 | ///\r |
110 | /// The opcode indicate the start of the boot script table.\r | |
111 | ///\r | |
c3902377 | 112 | #define EFI_BOOT_SCRIPT_TABLE_OPCODE 0xAA\r |
18998e40 | 113 | ///\r |
114 | /// The opcode indicate the end of the boot script table.\r | |
115 | ///\r | |
c3902377 | 116 | #define EFI_BOOT_SCRIPT_TERMINATE_OPCODE 0xFF\r |
117 | \r | |
18998e40 | 118 | ///\r |
119 | /// EFI Boot Script Width\r | |
120 | ///\r | |
c3902377 | 121 | typedef enum {\r |
122 | EfiBootScriptWidthUint8,\r | |
123 | EfiBootScriptWidthUint16,\r | |
124 | EfiBootScriptWidthUint32,\r | |
125 | EfiBootScriptWidthUint64,\r | |
126 | EfiBootScriptWidthFifoUint8,\r | |
127 | EfiBootScriptWidthFifoUint16,\r | |
128 | EfiBootScriptWidthFifoUint32,\r | |
129 | EfiBootScriptWidthFifoUint64,\r | |
130 | EfiBootScriptWidthFillUint8,\r | |
131 | EfiBootScriptWidthFillUint16,\r | |
132 | EfiBootScriptWidthFillUint32,\r | |
133 | EfiBootScriptWidthFillUint64,\r | |
134 | EfiBootScriptWidthMaximum\r | |
135 | } EFI_BOOT_SCRIPT_WIDTH;\r | |
b80fbe85 | 136 | \r |
79964ac8 | 137 | #define EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI_GUID \\r |
138 | { \\r | |
139 | 0xabd42895, 0x78cf, 0x4872, {0x84, 0x44, 0x1b, 0x5c, 0x18, 0x0b, 0xfb, 0xff } \\r | |
140 | }\r | |
141 | \r | |
142 | typedef struct _EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI;\r | |
143 | \r | |
144 | /**\r | |
145 | Executes the Framework boot script table.\r | |
146 | \r | |
147 | @param PeiServices A pointer to the system PEI Services Table.\r | |
148 | @param This A pointer to the EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI instance.\r | |
149 | @param Address The physical memory address where the table is stored.\r | |
150 | It must be zero if the table to be executed is stored in a firmware volume file.\r | |
151 | @param FvFile The firmware volume file name that contains the table to\r | |
152 | be executed. It must be NULL if the table to be executed is stored in physical memory.\r | |
153 | \r | |
154 | @retval EFI_SUCCESS The boot script table was executed successfully.\r | |
155 | @retval EFI_INVALID_PARAMETER Address is zero and FvFile is NULL.\r | |
156 | @retval EFI_NOT_FOUND The file name specified in FvFile cannot be found.\r | |
157 | @retval EFI_UNSUPPORTED The format of the boot script table is invalid.\r | |
158 | Or An unsupported opcode occurred in the table.\r | |
159 | Or There were opcode execution errors, such as an insufficient dependency.\r | |
160 | \r | |
161 | **/\r | |
162 | typedef\r | |
163 | EFI_STATUS\r | |
69686d56 | 164 | (EFIAPI *EFI_PEI_BOOT_SCRIPT_EXECUTE)(\r |
79964ac8 | 165 | IN EFI_PEI_SERVICES **PeiServices,\r |
166 | IN EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI *This,\r | |
167 | IN EFI_PHYSICAL_ADDRESS Address,\r | |
168 | IN EFI_GUID *FvFile OPTIONAL\r | |
169 | );\r | |
170 | \r | |
2bbaeb0d | 171 | ///\r |
18998e40 | 172 | /// EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI produces the function which interprets and \r |
173 | /// executes the Framework boot script table\r | |
2bbaeb0d | 174 | ///\r |
79964ac8 | 175 | struct _EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI {\r |
18998e40 | 176 | ///\r |
177 | /// Executes a boot script table\r | |
178 | ///\r | |
179 | EFI_PEI_BOOT_SCRIPT_EXECUTE Execute; \r | |
79964ac8 | 180 | };\r |
181 | \r | |
182 | extern EFI_GUID gEfiPeiBootScriptExecuterPpiGuid;\r | |
183 | \r | |
184 | #endif\r |