Просмотр исходного кода

[efi] Update EDK2 headers

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 10 лет назад
Родитель
Сommit
cff0103bd2

+ 12
- 1
src/include/ipxe/efi/Base.h Просмотреть файл

@@ -6,7 +6,7 @@
6 6
   environment. There are a set of base libraries in the Mde Package that can
7 7
   be used to implement base modules.
8 8
 
9
-Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
9
+Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
10 10
 Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
11 11
 This program and the accompanying materials
12 12
 are licensed and made available under the terms and conditions of the BSD License
@@ -208,6 +208,17 @@ struct _LIST_ENTRY {
208 208
 ///
209 209
 #define NULL  ((VOID *) 0)
210 210
 
211
+///
212
+/// Maximum values for common UEFI Data Types
213
+///
214
+#define MAX_INT8    ((INT8)0x7F)
215
+#define MAX_UINT8   ((UINT8)0xFF)
216
+#define MAX_INT16   ((INT16)0x7FFF)
217
+#define MAX_UINT16  ((UINT16)0xFFFF)
218
+#define MAX_INT32   ((INT32)0x7FFFFFFF)
219
+#define MAX_UINT32  ((UINT32)0xFFFFFFFF)
220
+#define MAX_INT64   ((INT64)0x7FFFFFFFFFFFFFFFULL)
221
+#define MAX_UINT64  ((UINT64)0xFFFFFFFFFFFFFFFFULL)
211 222
 
212 223
 #define  BIT0     0x00000001
213 224
 #define  BIT1     0x00000002

+ 7
- 1
src/include/ipxe/efi/Ia32/ProcessorBind.h Просмотреть файл

@@ -1,7 +1,7 @@
1 1
 /** @file
2 2
   Processor or Compiler specific defines and types for IA-32 architecture.
3 3
 
4
-Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
4
+Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
5 5
 This program and the accompanying materials are licensed and made available under
6 6
 the terms and conditions of the BSD License that accompanies this distribution.
7 7
 The full text of the license may be found at
@@ -228,6 +228,12 @@ typedef INT32   INTN;
228 228
 ///
229 229
 #define MAX_ADDRESS   0xFFFFFFFF
230 230
 
231
+///
232
+/// Maximum legal IA-32 INTN and UINTN values.
233
+///
234
+#define MAX_INTN   ((INTN)0x7FFFFFFF)
235
+#define MAX_UINTN  ((UINTN)0xFFFFFFFF)
236
+
231 237
 ///
232 238
 /// The stack alignment required for IA-32.
233 239
 ///

+ 2
- 1
src/include/ipxe/efi/IndustryStandard/PeImage.h Просмотреть файл

@@ -4,7 +4,7 @@
4 4
   EFI_IMAGE_NT_HEADERS64 is for PE32+.
5 5
 
6 6
   This file is coded to the Visual Studio, Microsoft Portable Executable and
7
-  Common Object File Format Specification, Revision 8.0 - May 16, 2006.
7
+  Common Object File Format Specification, Revision 8.3 - February 6, 2013.
8 8
   This file also includes some definitions in PI Specification, Revision 1.0.
9 9
 
10 10
 Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
@@ -41,6 +41,7 @@ FILE_LICENCE ( BSD3 );
41 41
 #define IMAGE_FILE_MACHINE_EBC             0x0EBC
42 42
 #define IMAGE_FILE_MACHINE_X64             0x8664
43 43
 #define IMAGE_FILE_MACHINE_ARMTHUMB_MIXED  0x01c2
44
+#define IMAGE_FILE_MACHINE_ARM64           0xAA64
44 45
 
45 46
 //
46 47
 // EXE file formats

+ 35
- 2
src/include/ipxe/efi/Library/BaseLib.h Просмотреть файл

@@ -2,7 +2,7 @@
2 2
   Provides string functions, linked list functions, math functions, synchronization
3 3
   functions, and CPU architecture-specific functions.
4 4
 
5
-Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
5
+Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
6 6
 Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
7 7
 This program and the accompanying materials
8 8
 are licensed and made available under the terms and conditions of the BSD License
@@ -148,6 +148,39 @@ typedef struct {
148 148
 
149 149
 #endif  // defined (MDE_CPU_ARM)
150 150
 
151
+#if defined (MDE_CPU_AARCH64)
152
+typedef struct {
153
+  // GP regs
154
+  UINT64    X19;
155
+  UINT64    X20;
156
+  UINT64    X21;
157
+  UINT64    X22;
158
+  UINT64    X23;
159
+  UINT64    X24;
160
+  UINT64    X25;
161
+  UINT64    X26;
162
+  UINT64    X27;
163
+  UINT64    X28;
164
+  UINT64    FP;
165
+  UINT64    LR;
166
+  UINT64    IP0;
167
+
168
+  // FP regs
169
+  UINT64    D8;
170
+  UINT64    D9;
171
+  UINT64    D10;
172
+  UINT64    D11;
173
+  UINT64    D12;
174
+  UINT64    D13;
175
+  UINT64    D14;
176
+  UINT64    D15;
177
+} BASE_LIBRARY_JUMP_BUFFER;
178
+
179
+#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT 8
180
+
181
+#endif  // defined (MDE_CPU_AARCH64)
182
+
183
+
151 184
 //
152 185
 // String Services
153 186
 //
@@ -1359,7 +1392,7 @@ InsertTailList (
1359 1392
   @param  List  A pointer to the head node of a doubly linked list.
1360 1393
 
1361 1394
   @return The first node of a doubly linked list.
1362
-  @retval NULL  The list is empty.
1395
+  @retval List  The list is empty.
1363 1396
 
1364 1397
 **/
1365 1398
 LIST_ENTRY *

+ 2
- 2
src/include/ipxe/efi/Pi/PiDxeCis.h Просмотреть файл

@@ -1,7 +1,7 @@
1 1
 /** @file
2 2
   Include file matches things in PI.
3 3
 
4
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
4
+Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
5 5
 This program and the accompanying materials are licensed and made available under
6 6
 the terms and conditions of the BSD License that accompanies this distribution.
7 7
 The full text of the license may be found at
@@ -659,7 +659,7 @@ EFI_STATUS
659 659
 //
660 660
 #define DXE_SERVICES_SIGNATURE            0x565245535f455844ULL
661 661
 #define DXE_SPECIFICATION_MAJOR_REVISION  1
662
-#define DXE_SPECIFICATION_MINOR_REVISION  20
662
+#define DXE_SPECIFICATION_MINOR_REVISION  30
663 663
 #define DXE_SERVICES_REVISION             ((DXE_SPECIFICATION_MAJOR_REVISION<<16) | (DXE_SPECIFICATION_MINOR_REVISION))
664 664
 
665 665
 typedef struct {

+ 3
- 3
src/include/ipxe/efi/Pi/PiFirmwareVolume.h Просмотреть файл

@@ -1,7 +1,7 @@
1 1
 /** @file
2 2
   The firmware volume related definitions in PI.
3 3
 
4
-  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
4
+  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
5 5
   This program and the accompanying materials
6 6
   are licensed and made available under the terms and conditions of the BSD License
7 7
   which accompanies this distribution.  The full text of the license may be found at
@@ -11,7 +11,7 @@
11 11
   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 12
 
13 13
   @par Revision Reference:
14
-  PI Version 1.2C
14
+  PI Version 1.3
15 15
 
16 16
 **/
17 17
 
@@ -88,7 +88,7 @@ typedef UINT32  EFI_FVB_ATTRIBUTES_2;
88 88
 #define EFI_FVB2_ALIGNMENT_512M     0x001D0000
89 89
 #define EFI_FVB2_ALIGNMENT_1G       0x001E0000
90 90
 #define EFI_FVB2_ALIGNMENT_2G       0x001F0000
91
-
91
+#define EFI_FVB2_WEAK_ALIGNMENT     0x80000000
92 92
 
93 93
 typedef struct {
94 94
   ///

+ 30
- 1
src/include/ipxe/efi/Pi/PiMultiPhase.h Просмотреть файл

@@ -1,7 +1,7 @@
1 1
 /** @file
2 2
   Include file matches things in PI for multiple module types.
3 3
 
4
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
4
+Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
5 5
 This program and the accompanying materials are licensed and made available under
6 6
 the terms and conditions of the BSD License that accompanies this distribution.
7 7
 The full text of the license may be found at
@@ -135,4 +135,33 @@ typedef struct {
135 135
   UINT64                RegionState;
136 136
 } EFI_SMRAM_DESCRIPTOR;
137 137
 
138
+typedef enum {
139
+  EFI_PCD_TYPE_8,
140
+  EFI_PCD_TYPE_16,
141
+  EFI_PCD_TYPE_32,
142
+  EFI_PCD_TYPE_64,
143
+  EFI_PCD_TYPE_BOOL,
144
+  EFI_PCD_TYPE_PTR
145
+} EFI_PCD_TYPE;
146
+
147
+typedef struct {
148
+  ///
149
+  /// The returned information associated with the requested TokenNumber. If
150
+  /// TokenNumber is 0, then PcdType is set to EFI_PCD_TYPE_8.
151
+  ///
152
+  EFI_PCD_TYPE      PcdType;
153
+  ///
154
+  /// The size of the data in bytes associated with the TokenNumber specified. If
155
+  /// TokenNumber is 0, then PcdSize is set 0.
156
+  ///
157
+  UINTN             PcdSize;
158
+  ///
159
+  /// The null-terminated ASCII string associated with a given token. If the
160
+  /// TokenNumber specified was 0, then this field corresponds to the null-terminated
161
+  /// ASCII string associated with the token's namespace Guid. If NULL, there is no
162
+  /// name associated with this request.
163
+  ///
164
+  CHAR8             *PcdName;
165
+} EFI_PCD_INFO;
166
+
138 167
 #endif

+ 7
- 2
src/include/ipxe/efi/Pi/PiStatusCode.h Просмотреть файл

@@ -1,7 +1,7 @@
1 1
 /** @file
2 2
   StatusCode related definitions in PI.
3 3
 
4
-Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
4
+Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR>
5 5
 This program and the accompanying materials are licensed and made available under
6 6
 the terms and conditions of the BSD License that accompanies this distribution.
7 7
 The full text of the license may be found at
@@ -598,7 +598,10 @@ typedef struct {
598 598
 //
599 599
 // IO Bus Class ATA/ATAPI Subclass Progress Code definitions.
600 600
 //
601
-
601
+#define EFI_IOB_ATA_BUS_SMART_ENABLE          (EFI_SUBCLASS_SPECIFIC | 0x00000000)
602
+#define EFI_IOB_ATA_BUS_SMART_DISABLE         (EFI_SUBCLASS_SPECIFIC | 0x00000001)
603
+#define EFI_IOB_ATA_BUS_SMART_OVERTHRESHOLD   (EFI_SUBCLASS_SPECIFIC | 0x00000002)
604
+#define EFI_IOB_ATA_BUS_SMART_UNDERTHRESHOLD  (EFI_SUBCLASS_SPECIFIC | 0x00000003)
602 605
 //
603 606
 // IO Bus Class FC Subclass Progress Code definitions.
604 607
 //
@@ -671,6 +674,8 @@ typedef struct {
671 674
 //
672 675
 // IO Bus Class ATA/ATAPI Subclass Error Code definitions.
673 676
 //
677
+#define EFI_IOB_ATA_BUS_SMART_NOTSUPPORTED  (EFI_SUBCLASS_SPECIFIC | 0x00000000)
678
+#define EFI_IOB_ATA_BUS_SMART_DISABLED      (EFI_SUBCLASS_SPECIFIC | 0x00000001)
674 679
 
675 680
 //
676 681
 // IO Bus Class FC Subclass Error Code definitions.

+ 97
- 2
src/include/ipxe/efi/Protocol/DebugSupport.h Просмотреть файл

@@ -1,11 +1,13 @@
1 1
 /** @file
2
-  DebugSupport protocol and supporting definitions as defined in the UEFI2.0
2
+  DebugSupport protocol and supporting definitions as defined in the UEFI2.4
3 3
   specification.
4 4
 
5 5
   The DebugSupport protocol is used by source level debuggers to abstract the
6 6
   processor and handle context save and restore operations.
7 7
 
8 8
 Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
9
+Portions copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.<BR>
10
+
9 11
 This program and the accompanying materials are licensed and made available under
10 12
 the terms and conditions of the BSD License that accompanies this distribution.
11 13
 The full text of the license may be found at
@@ -519,6 +521,97 @@ typedef struct {
519 521
   UINT32  IFAR;
520 522
 } EFI_SYSTEM_CONTEXT_ARM;
521 523
 
524
+
525
+///
526
+///  AARCH64 processor exception types.
527
+///
528
+#define EXCEPT_AARCH64_SYNCHRONOUS_EXCEPTIONS    0
529
+#define EXCEPT_AARCH64_IRQ                       1
530
+#define EXCEPT_AARCH64_FIQ                       2
531
+#define EXCEPT_AARCH64_SERROR                    3
532
+
533
+///
534
+/// For coding convenience, define the maximum valid ARM exception.
535
+///
536
+#define MAX_AARCH64_EXCEPTION EXCEPT_AARCH64_SERROR
537
+
538
+typedef struct {
539
+  // General Purpose Registers
540
+  UINT64  X0;
541
+  UINT64  X1;
542
+  UINT64  X2;
543
+  UINT64  X3;
544
+  UINT64  X4;
545
+  UINT64  X5;
546
+  UINT64  X6;
547
+  UINT64  X7;
548
+  UINT64  X8;
549
+  UINT64  X9;
550
+  UINT64  X10;
551
+  UINT64  X11;
552
+  UINT64  X12;
553
+  UINT64  X13;
554
+  UINT64  X14;
555
+  UINT64  X15;
556
+  UINT64  X16;
557
+  UINT64  X17;
558
+  UINT64  X18;
559
+  UINT64  X19;
560
+  UINT64  X20;
561
+  UINT64  X21;
562
+  UINT64  X22;
563
+  UINT64  X23;
564
+  UINT64  X24;
565
+  UINT64  X25;
566
+  UINT64  X26;
567
+  UINT64  X27;
568
+  UINT64  X28;
569
+  UINT64  FP;   // x29 - Frame pointer
570
+  UINT64  LR;   // x30 - Link Register
571
+  UINT64  SP;   // x31 - Stack pointer
572
+
573
+  // FP/SIMD Registers
574
+  UINT64  V0[2];
575
+  UINT64  V1[2];
576
+  UINT64  V2[2];
577
+  UINT64  V3[2];
578
+  UINT64  V4[2];
579
+  UINT64  V5[2];
580
+  UINT64  V6[2];
581
+  UINT64  V7[2];
582
+  UINT64  V8[2];
583
+  UINT64  V9[2];
584
+  UINT64  V10[2];
585
+  UINT64  V11[2];
586
+  UINT64  V12[2];
587
+  UINT64  V13[2];
588
+  UINT64  V14[2];
589
+  UINT64  V15[2];
590
+  UINT64  V16[2];
591
+  UINT64  V17[2];
592
+  UINT64  V18[2];
593
+  UINT64  V19[2];
594
+  UINT64  V20[2];
595
+  UINT64  V21[2];
596
+  UINT64  V22[2];
597
+  UINT64  V23[2];
598
+  UINT64  V24[2];
599
+  UINT64  V25[2];
600
+  UINT64  V26[2];
601
+  UINT64  V27[2];
602
+  UINT64  V28[2];
603
+  UINT64  V29[2];
604
+  UINT64  V30[2];
605
+  UINT64  V31[2];
606
+
607
+  UINT64  ELR;  // Exception Link Register
608
+  UINT64  SPSR; // Saved Processor Status Register
609
+  UINT64  FPSR; // Floating Point Status Register
610
+  UINT64  ESR;  // Exception syndrome register
611
+  UINT64  FAR;  // Fault Address Register
612
+} EFI_SYSTEM_CONTEXT_AARCH64;
613
+
614
+
522 615
 ///
523 616
 /// Universal EFI_SYSTEM_CONTEXT definition.
524 617
 ///
@@ -528,6 +621,7 @@ typedef union {
528 621
   EFI_SYSTEM_CONTEXT_X64  *SystemContextX64;
529 622
   EFI_SYSTEM_CONTEXT_IPF  *SystemContextIpf;
530 623
   EFI_SYSTEM_CONTEXT_ARM  *SystemContextArm;
624
+  EFI_SYSTEM_CONTEXT_AARCH64  *SystemContextAArch64;
531 625
 } EFI_SYSTEM_CONTEXT;
532 626
 
533 627
 //
@@ -568,7 +662,8 @@ typedef enum {
568 662
   IsaX64  = IMAGE_FILE_MACHINE_X64,            ///< 0x8664
569 663
   IsaIpf  = IMAGE_FILE_MACHINE_IA64,           ///< 0x0200
570 664
   IsaEbc  = IMAGE_FILE_MACHINE_EBC,            ///< 0x0EBC
571
-  IsaArm  = IMAGE_FILE_MACHINE_ARMTHUMB_MIXED  ///< 0x01c2
665
+  IsaArm  = IMAGE_FILE_MACHINE_ARMTHUMB_MIXED, ///< 0x01c2
666
+  IsaAArch64  = IMAGE_FILE_MACHINE_ARM64       ///< 0xAA64
572 667
 } EFI_INSTRUCTION_SET_ARCHITECTURE;
573 668
 
574 669
 

+ 13
- 1
src/include/ipxe/efi/Protocol/DevicePath.h Просмотреть файл

@@ -5,7 +5,7 @@
5 5
   from a software point of view. The path must persist from boot to boot, so
6 6
   it can not contain things like PCI bus numbers that change from boot to boot.
7 7
 
8
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
8
+Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
9 9
 This program and the accompanying materials are licensed and made available under
10 10
 the terms and conditions of the BSD License that accompanies this distribution.
11 11
 The full text of the license may be found at
@@ -787,6 +787,16 @@ typedef struct {
787 787
   UINT16                          RelativeTargetPort;
788 788
 } SASEX_DEVICE_PATH;
789 789
 
790
+///
791
+/// NvmExpress Namespace Device Path SubType.
792
+///
793
+#define MSG_NVME_NAMESPACE_DP     0x17
794
+typedef struct {
795
+  EFI_DEVICE_PATH_PROTOCOL        Header;
796
+  UINT32                          NamespaceId;
797
+  UINT64                          NamespaceUuid;
798
+} NVME_NAMESPACE_DEVICE_PATH;
799
+
790 800
 ///
791 801
 /// iSCSI Device Path SubType
792 802
 ///
@@ -1085,6 +1095,7 @@ typedef union {
1085 1095
   UART_FLOW_CONTROL_DEVICE_PATH              UartFlowControl;
1086 1096
   SAS_DEVICE_PATH                            Sas;
1087 1097
   SASEX_DEVICE_PATH                          SasEx;
1098
+  NVME_NAMESPACE_DEVICE_PATH                 NvmeNamespace;
1088 1099
   HARDDRIVE_DEVICE_PATH                      HardDrive;
1089 1100
   CDROM_DEVICE_PATH                          CD;
1090 1101
 
@@ -1134,6 +1145,7 @@ typedef union {
1134 1145
   UART_FLOW_CONTROL_DEVICE_PATH              *UartFlowControl;
1135 1146
   SAS_DEVICE_PATH                            *Sas;
1136 1147
   SASEX_DEVICE_PATH                          *SasEx;
1148
+  NVME_NAMESPACE_DEVICE_PATH                 *NvmeNamespace;
1137 1149
   HARDDRIVE_DEVICE_PATH                      *HardDrive;
1138 1150
   CDROM_DEVICE_PATH                          *CD;
1139 1151
 

+ 2
- 2
src/include/ipxe/efi/Protocol/FormBrowser2.h Просмотреть файл

@@ -4,7 +4,7 @@
4 4
   The EFI_FORM_BROWSER2_PROTOCOL is the interface to call for drivers to
5 5
   leverage the EFI configuration driver interface.
6 6
 
7
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
7
+Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
8 8
 This program and the accompanying materials are licensed and made available under
9 9
 the terms and conditions of the BSD License that accompanies this distribution.
10 10
 The full text of the license may be found at
@@ -84,7 +84,7 @@ typedef UINTN EFI_BROWSER_ACTION_REQUEST;
84 84
 
85 85
   @param FormSetGuid     This field points to the EFI_GUID which must match the Guid field or one of the
86 86
                          elements of the ClassId field  in the EFI_IFR_FORM_SET op-code.  If
87
-                         FormsetGuid is NULL, then this function will display the the form set class
87
+                         FormsetGuid is NULL, then this function will display the form set class
88 88
                          EFI_HII_PLATFORM_SETUP_FORMSET_GUID.
89 89
 
90 90
   @param FormId          This field specifies the identifier of the form within the form set to render as the first

+ 5
- 8
src/include/ipxe/efi/Protocol/HiiConfigAccess.h Просмотреть файл

@@ -5,7 +5,7 @@
5 5
   This protocol is published by drivers providing and requesting
6 6
   configuration data from HII. It may only be invoked by HII.
7 7
 
8
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
8
+Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
9 9
 This program and the accompanying materials are licensed and made available under
10 10
 the terms and conditions of the BSD License that accompanies this distribution.
11 11
 The full text of the license may be found at
@@ -96,13 +96,10 @@ typedef UINTN EFI_BROWSER_ACTION;
96 96
                                   stored awaiting possible future
97 97
                                   protocols.
98 98
 
99
-  @retval EFI_NOT_FOUND           Routing data doesn't match any
100
-                                  known driver. Progress set to the
101
-                                  first character in the routing header.
102
-                                  Note: There is no requirement that the
103
-                                  driver validate the routing data. It
104
-                                  must skip the <ConfigHdr> in order to
105
-                                  process the names.
99
+  @retval EFI_NOT_FOUND           A configuration element matching
100
+                                  the routing data is not found.
101
+                                  Progress set to the first character
102
+                                  in the routing header.
106 103
 
107 104
   @retval EFI_INVALID_PARAMETER   Illegal syntax. Progress set
108 105
                                   to most recent "&" before the

+ 15
- 1
src/include/ipxe/efi/Protocol/HiiDatabase.h Просмотреть файл

@@ -225,7 +225,9 @@ EFI_STATUS
225 225
                                 updated with a value that will
226 226
                                 enable the data to fit.
227 227
   @retval EFI_NOT_FOUND         No matching handle could be found in database.
228
-  @retval EFI_INVALID_PARAMETER Handle or HandleBufferLength was NULL.
228
+  @retval EFI_INVALID_PARAMETER HandleBufferLength was NULL.
229
+  @retval EFI_INVALID_PARAMETER The value referenced by HandleBufferLength was not
230
+                                zero and Handle was NULL.
229 231
   @retval EFI_INVALID_PARAMETER PackageType is not a EFI_HII_PACKAGE_TYPE_GUID but
230 232
                                 PackageGuid is not NULL, PackageType is a EFI_HII_
231 233
                                 PACKAGE_TYPE_GUID but PackageGuid is NULL.
@@ -273,6 +275,13 @@ EFI_STATUS
273 275
 
274 276
   @retval EFI_OUT_OF_RESOURCES  BufferSize is too small to hold the package.
275 277
 
278
+  @retval EFI_NOT_FOUND         The specifiecd Handle could not be found in the
279
+                                current database.
280
+
281
+  @retval EFI_INVALID_PARAMETER BufferSize was NULL.
282
+
283
+  @retval EFI_INVALID_PARAMETER The value referenced by BufferSize was not zero
284
+                                and Buffer was NULL.
276 285
 **/
277 286
 typedef
278 287
 EFI_STATUS
@@ -395,6 +404,11 @@ EFI_STATUS
395 404
                                 KeyGuidBufferLength is updated
396 405
                                 with a value that will enable
397 406
                                 the data to fit.
407
+  @retval EFI_INVALID_PARAMETER The KeyGuidBufferLength is NULL.
408
+  @retval EFI_INVALID_PARAMETER The value referenced by
409
+                                KeyGuidBufferLength is not
410
+                                zero and KeyGuidBuffer is NULL.
411
+  @retval EFI_NOT_FOUND         There was no keyboard layout.
398 412
 
399 413
 **/
400 414
 typedef

+ 9
- 5
src/include/ipxe/efi/Protocol/NetworkInterfaceIdentifier.h Просмотреть файл

@@ -1,7 +1,7 @@
1 1
 /** @file
2 2
   EFI Network Interface Identifier Protocol.
3 3
 
4
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
4
+Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
5 5
 This program and the accompanying materials are licensed and made available under
6 6
 the terms and conditions of the BSD License that accompanies this distribution.
7 7
 The full text of the license may be found at
@@ -36,7 +36,11 @@ FILE_LICENCE ( BSD3 );
36 36
     0x1ACED566, 0x76ED, 0x4218, {0xBC, 0x81, 0x76, 0x7F, 0x1F, 0x97, 0x7A, 0x89 } \
37 37
   }
38 38
 
39
-#define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION    0x00010000
39
+//
40
+// Revision defined in UEFI Specification 2.4
41
+//
42
+#define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION    0x00020000
43
+
40 44
 
41 45
 ///
42 46
 /// Revision defined in EFI1.1.
@@ -72,9 +76,9 @@ struct _EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL {
72 76
   UINT8     MajorVer;   ///< Major version number.
73 77
   UINT8     MinorVer;   ///< Minor version number.
74 78
   BOOLEAN   Ipv6Supported; ///< TRUE if the network interface supports IPv6; otherwise FALSE.
75
-  UINT8     IfNum;      ///< The network interface number that is being identified by this Network
76
-                        ///< Interface Identifier Protocol. This field must be less than or equal
77
-                        ///< to the IFcnt field in the !PXE structure.
79
+  UINT16    IfNum;      ///< The network interface number that is being identified by this Network
80
+                        ///< Interface Identifier Protocol. This field must be less than or
81
+                        ///< equal to the (IFcnt | IFcntExt <<8 ) fields in the !PXE structure.
78 82
 
79 83
 };
80 84
 

+ 166
- 5
src/include/ipxe/efi/Protocol/SimpleFileSystem.h Просмотреть файл

@@ -7,7 +7,7 @@
7 7
 
8 8
   UEFI 2.0 can boot from any valid EFI image contained in a SimpleFileSystem.
9 9
 
10
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
10
+Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
11 11
 This program and the accompanying materials are licensed and made available under
12 12
 the terms and conditions of the BSD License that accompanies this distribution.
13 13
 The full text of the license may be found at
@@ -192,7 +192,7 @@ EFI_STATUS
192 192
   @retval EFI_DEVICE_ERROR     An attempt was made to read from a deleted file.
193 193
   @retval EFI_DEVICE_ERROR     On entry, the current file position is beyond the end of the file.
194 194
   @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.
195
-  @retval EFI_BUFFER_TO_SMALL  The BufferSize is too small to read the current directory
195
+  @retval EFI_BUFFER_TOO_SMALL The BufferSize is too small to read the current directory
196 196
                                entry. BufferSize has been updated with the size
197 197
                                needed to complete the request.
198 198
 
@@ -365,7 +365,164 @@ EFI_STATUS
365 365
   IN EFI_FILE_PROTOCOL  *This
366 366
   );
367 367
 
368
-#define EFI_FILE_PROTOCOL_REVISION   0x00010000
368
+typedef struct {
369
+  //
370
+  // If Event is NULL, then blocking I/O is performed.
371
+  // If Event is not NULL and non-blocking I/O is supported, then non-blocking I/O is performed,
372
+  // and Event will be signaled when the read request is completed.
373
+  // The caller must be prepared to handle the case where the callback associated with Event
374
+  // occurs before the original asynchronous I/O request call returns.
375
+  //
376
+  EFI_EVENT                   Event;
377
+
378
+  //
379
+  // Defines whether or not the signaled event encountered an error.
380
+  //
381
+  EFI_STATUS                  Status;
382
+
383
+  //
384
+  // For OpenEx():  Not Used, ignored.
385
+  // For ReadEx():  On input, the size of the Buffer. On output, the amount of data returned in Buffer.
386
+  //                In both cases, the size is measured in bytes.
387
+  // For WriteEx(): On input, the size of the Buffer. On output, the amount of data actually written.
388
+  //                In both cases, the size is measured in bytes.
389
+  // For FlushEx(): Not used, ignored.
390
+  //
391
+  UINTN                       BufferSize;
392
+
393
+  //
394
+  // For OpenEx():  Not Used, ignored.
395
+  // For ReadEx():  The buffer into which the data is read.
396
+  // For WriteEx(): The buffer of data to write.
397
+  // For FlushEx(): Not Used, ignored.
398
+  //
399
+  VOID                        *Buffer;
400
+} EFI_FILE_IO_TOKEN;
401
+
402
+/**
403
+  Opens a new file relative to the source directory's location.
404
+
405
+  @param  This       A pointer to the EFI_FILE_PROTOCOL instance that is the file
406
+                     handle to the source location.
407
+  @param  NewHandle  A pointer to the location to return the opened handle for the new
408
+                     file.
409
+  @param  FileName   The Null-terminated string of the name of the file to be opened.
410
+                     The file name may contain the following path modifiers: "\", ".",
411
+                     and "..".
412
+  @param  OpenMode   The mode to open the file. The only valid combinations that the
413
+                     file may be opened with are: Read, Read/Write, or Create/Read/Write.
414
+  @param  Attributes Only valid for EFI_FILE_MODE_CREATE, in which case these are the
415
+                     attribute bits for the newly created file.
416
+  @param  Token      A pointer to the token associated with the transaction.
417
+
418
+  @retval EFI_SUCCESS          If Event is NULL (blocking I/O): The data was read successfully.
419
+                               If Event is not NULL (asynchronous I/O): The request was successfully
420
+                                                                        queued for processing.
421
+  @retval EFI_NOT_FOUND        The specified file could not be found on the device.
422
+  @retval EFI_NO_MEDIA         The device has no medium.
423
+  @retval EFI_MEDIA_CHANGED    The device has a different medium in it or the medium is no
424
+                               longer supported.
425
+  @retval EFI_DEVICE_ERROR     The device reported an error.
426
+  @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.
427
+  @retval EFI_WRITE_PROTECTED  An attempt was made to create a file, or open a file for write
428
+                               when the media is write-protected.
429
+  @retval EFI_ACCESS_DENIED    The service denied access to the file.
430
+  @retval EFI_OUT_OF_RESOURCES Not enough resources were available to open the file.
431
+  @retval EFI_VOLUME_FULL      The volume is full.
432
+
433
+**/
434
+typedef
435
+EFI_STATUS
436
+(EFIAPI *EFI_FILE_OPEN_EX)(
437
+  IN EFI_FILE_PROTOCOL        *This,
438
+  OUT EFI_FILE_PROTOCOL       **NewHandle,
439
+  IN CHAR16                   *FileName,
440
+  IN UINT64                   OpenMode,
441
+  IN UINT64                   Attributes,
442
+  IN OUT EFI_FILE_IO_TOKEN    *Token
443
+  );
444
+
445
+
446
+/**
447
+  Reads data from a file.
448
+
449
+  @param  This       A pointer to the EFI_FILE_PROTOCOL instance that is the file handle to read data from.
450
+  @param  Token      A pointer to the token associated with the transaction.
451
+
452
+  @retval EFI_SUCCESS          If Event is NULL (blocking I/O): The data was read successfully.
453
+                               If Event is not NULL (asynchronous I/O): The request was successfully
454
+                                                                        queued for processing.
455
+  @retval EFI_NO_MEDIA         The device has no medium.
456
+  @retval EFI_DEVICE_ERROR     The device reported an error.
457
+  @retval EFI_DEVICE_ERROR     An attempt was made to read from a deleted file.
458
+  @retval EFI_DEVICE_ERROR     On entry, the current file position is beyond the end of the file.
459
+  @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.
460
+  @retval EFI_OUT_OF_RESOURCES Unable to queue the request due to lack of resources.
461
+**/
462
+typedef
463
+EFI_STATUS
464
+(EFIAPI *EFI_FILE_READ_EX) (
465
+  IN EFI_FILE_PROTOCOL        *This,
466
+  IN OUT EFI_FILE_IO_TOKEN    *Token
467
+);
468
+
469
+
470
+/**
471
+  Writes data to a file.
472
+
473
+  @param  This       A pointer to the EFI_FILE_PROTOCOL instance that is the file handle to write data to.
474
+  @param  Token      A pointer to the token associated with the transaction.
475
+
476
+  @retval EFI_SUCCESS          If Event is NULL (blocking I/O): The data was read successfully.
477
+                               If Event is not NULL (asynchronous I/O): The request was successfully
478
+                                                                        queued for processing.
479
+  @retval EFI_UNSUPPORTED      Writes to open directory files are not supported.
480
+  @retval EFI_NO_MEDIA         The device has no medium.
481
+  @retval EFI_DEVICE_ERROR     The device reported an error.
482
+  @retval EFI_DEVICE_ERROR     An attempt was made to write to a deleted file.
483
+  @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.
484
+  @retval EFI_WRITE_PROTECTED  The file or medium is write-protected.
485
+  @retval EFI_ACCESS_DENIED    The file was opened read only.
486
+  @retval EFI_VOLUME_FULL      The volume is full.
487
+  @retval EFI_OUT_OF_RESOURCES Unable to queue the request due to lack of resources.
488
+**/
489
+typedef
490
+EFI_STATUS
491
+(EFIAPI *EFI_FILE_WRITE_EX) (
492
+  IN EFI_FILE_PROTOCOL        *This,
493
+  IN OUT EFI_FILE_IO_TOKEN    *Token
494
+);
495
+
496
+/**
497
+  Flushes all modified data associated with a file to a device.
498
+
499
+  @param  This  A pointer to the EFI_FILE_PROTOCOL instance that is the file
500
+                handle to flush.
501
+  @param  Token A pointer to the token associated with the transaction.
502
+
503
+  @retval EFI_SUCCESS          If Event is NULL (blocking I/O): The data was read successfully.
504
+                               If Event is not NULL (asynchronous I/O): The request was successfully
505
+                                                                        queued for processing.
506
+  @retval EFI_NO_MEDIA         The device has no medium.
507
+  @retval EFI_DEVICE_ERROR     The device reported an error.
508
+  @retval EFI_VOLUME_CORRUPTED The file system structures are corrupted.
509
+  @retval EFI_WRITE_PROTECTED  The file or medium is write-protected.
510
+  @retval EFI_ACCESS_DENIED    The file was opened read-only.
511
+  @retval EFI_VOLUME_FULL      The volume is full.
512
+  @retval EFI_OUT_OF_RESOURCES Unable to queue the request due to lack of resources.
513
+
514
+**/
515
+typedef
516
+EFI_STATUS
517
+(EFIAPI *EFI_FILE_FLUSH_EX) (
518
+  IN EFI_FILE_PROTOCOL        *This,
519
+  IN OUT EFI_FILE_IO_TOKEN    *Token
520
+  );
521
+
522
+#define EFI_FILE_PROTOCOL_REVISION        0x00010000
523
+#define EFI_FILE_PROTOCOL_REVISION2       0x00020000
524
+#define EFI_FILE_PROTOCOL_LATEST_REVISION EFI_FILE_PROTOCOL_REVISION2
525
+
369 526
 //
370 527
 // Revision defined in EFI1.1.
371 528
 //
@@ -381,8 +538,8 @@ EFI_STATUS
381 538
 struct _EFI_FILE_PROTOCOL {
382 539
   ///
383 540
   /// The version of the EFI_FILE_PROTOCOL interface. The version specified
384
-  /// by this specification is 0x00010000. Future versions are required
385
-  /// to be backward compatible to version 1.0.
541
+  /// by this specification is EFI_FILE_PROTOCOL_LATEST_REVISION.
542
+  /// Future versions are required to be backward compatible to version 1.0.
386 543
   ///
387 544
   UINT64                Revision;
388 545
   EFI_FILE_OPEN         Open;
@@ -395,6 +552,10 @@ struct _EFI_FILE_PROTOCOL {
395 552
   EFI_FILE_GET_INFO     GetInfo;
396 553
   EFI_FILE_SET_INFO     SetInfo;
397 554
   EFI_FILE_FLUSH        Flush;
555
+  EFI_FILE_OPEN_EX      OpenEx;
556
+  EFI_FILE_READ_EX      ReadEx;
557
+  EFI_FILE_WRITE_EX     WriteEx;
558
+  EFI_FILE_FLUSH_EX     FlushEx;
398 559
 };
399 560
 
400 561
 

+ 14
- 0
src/include/ipxe/efi/Uefi/UefiBaseType.h Просмотреть файл

@@ -2,6 +2,8 @@
2 2
   Defines data types and constants introduced in UEFI.
3 3
 
4 4
 Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
5
+Portions copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.<BR>
6
+
5 7
 This program and the accompanying materials are licensed and made available under
6 8
 the terms and conditions of the BSD License that accompanies this distribution.
7 9
 The full text of the license may be found at
@@ -243,6 +245,11 @@ typedef union {
243 245
 ///
244 246
 #define EFI_IMAGE_MACHINE_ARMTHUMB_MIXED  0x01C2
245 247
 
248
+///
249
+/// PE32+ Machine type for AARCH64 A64 images.
250
+///
251
+#define EFI_IMAGE_MACHINE_AARCH64  0xAA64
252
+
246 253
 
247 254
 #if   defined (MDE_CPU_IA32)
248 255
 
@@ -272,6 +279,13 @@ typedef union {
272 279
 
273 280
 #define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED)
274 281
 
282
+#elif defined (MDE_CPU_AARCH64)
283
+
284
+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \
285
+  (((Machine) == EFI_IMAGE_MACHINE_AARCH64) || ((Machine) == EFI_IMAGE_MACHINE_EBC))
286
+
287
+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)
288
+
275 289
 #elif defined (MDE_CPU_EBC)
276 290
 
277 291
 ///

+ 8
- 1
src/include/ipxe/efi/Uefi/UefiInternalFormRepresentation.h Просмотреть файл

@@ -3,7 +3,7 @@
3 3
   IFR is primarily consumed by the EFI presentation engine, and produced by EFI
4 4
   internal application and drivers as well as all add-in card option-ROM drivers
5 5
 
6
-Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
6
+Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
7 7
 This program and the accompanying materials are licensed and made available under
8 8
 the terms and conditions of the BSD License that accompanies this distribution.
9 9
 The full text of the license may be found at
@@ -781,6 +781,7 @@ typedef union {
781 781
 #define EFI_IFR_SECURITY_OP            0x60
782 782
 #define EFI_IFR_MODAL_TAG_OP           0x61
783 783
 #define EFI_IFR_REFRESH_ID_OP          0x62
784
+#define EFI_IFR_WARNING_IF_OP          0x63
784 785
 
785 786
 //
786 787
 // Definitions of IFR Standard Headers
@@ -1128,6 +1129,12 @@ typedef struct _EFI_IFR_NO_SUBMIT_IF {
1128 1129
   EFI_STRING_ID            Error;
1129 1130
 } EFI_IFR_NO_SUBMIT_IF;
1130 1131
 
1132
+typedef struct _EFI_IFR_WARNING_IF {
1133
+  EFI_IFR_OP_HEADER        Header;
1134
+  EFI_STRING_ID            Warning;
1135
+  UINT8                    TimeOut;
1136
+} EFI_IFR_WARNING_IF;
1137
+
1131 1138
 typedef struct _EFI_IFR_REFRESH {
1132 1139
   EFI_IFR_OP_HEADER        Header;
1133 1140
   UINT8                    RefreshInterval;

+ 7
- 5
src/include/ipxe/efi/Uefi/UefiPxe.h Просмотреть файл

@@ -3,7 +3,7 @@
3 3
   structure prototypes, global variables and constants that
4 4
   are needed for porting PXE to EFI.
5 5
 
6
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
6
+Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
7 7
 This program and the accompanying materials are licensed and made available under
8 8
 the terms and conditions of the BSD License that accompanies this distribution.
9 9
 The full text of the license may be found at
@@ -721,10 +721,11 @@ typedef struct s_pxe_hw_undi {
721 721
   PXE_UINT8   Len;            ///< sizeof(PXE_HW_UNDI).
722 722
   PXE_UINT8   Fudge;          ///< makes 8-bit cksum equal zero.
723 723
   PXE_UINT8   Rev;            ///< PXE_ROMID_REV.
724
-  PXE_UINT8   IFcnt;          ///< physical connector count.
724
+  PXE_UINT8   IFcnt;          ///< physical connector count lower byte.
725 725
   PXE_UINT8   MajorVer;       ///< PXE_ROMID_MAJORVER.
726 726
   PXE_UINT8   MinorVer;       ///< PXE_ROMID_MINORVER.
727
-  PXE_UINT16  reserved;       ///< zero, not used.
727
+  PXE_UINT8   IFcntExt;       ///< physical connector count upper byte.
728
+  PXE_UINT8   reserved;       ///< zero, not used.
728 729
   PXE_UINT32  Implementation; ///< implementation flags.
729 730
   ///< reserved             ///< vendor use.
730 731
   ///< UINT32 Status;       ///< status port.
@@ -817,10 +818,11 @@ typedef struct s_pxe_sw_undi {
817 818
   PXE_UINT8   Len;            ///< sizeof(PXE_SW_UNDI).
818 819
   PXE_UINT8   Fudge;          ///< makes 8-bit cksum zero.
819 820
   PXE_UINT8   Rev;            ///< PXE_ROMID_REV.
820
-  PXE_UINT8   IFcnt;          ///< physical connector count.
821
+  PXE_UINT8   IFcnt;          ///< physical connector count lower byte.
821 822
   PXE_UINT8   MajorVer;       ///< PXE_ROMID_MAJORVER.
822 823
   PXE_UINT8   MinorVer;       ///< PXE_ROMID_MINORVER.
823
-  PXE_UINT16  reserved1;      ///< zero, not used.
824
+  PXE_UINT8   IFcntExt;       ///< physical connector count upper byte.
825
+  PXE_UINT8   reserved1;      ///< zero, not used.
824 826
   PXE_UINT32  Implementation; ///< Implementation flags.
825 827
   PXE_UINT64  EntryPoint;     ///< API entry point.
826 828
   PXE_UINT8   reserved2[3];   ///< zero, not used.

+ 92
- 52
src/include/ipxe/efi/Uefi/UefiSpec.h Просмотреть файл

@@ -1,11 +1,11 @@
1 1
 /** @file
2 2
   Include file that supports UEFI.
3 3
 
4
-  This include file must contain things defined in the UEFI 2.3 specification.
5
-  If a code construct is defined in the UEFI 2.3 specification it must be included
4
+  This include file must contain things defined in the UEFI 2.4 specification.
5
+  If a code construct is defined in the UEFI 2.4 specification it must be included
6 6
   by this include file.
7 7
 
8
-Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
8
+Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
9 9
 This program and the accompanying materials are licensed and made available under
10 10
 the terms and conditions of the BSD License that accompanies this distribution.
11 11
 The full text of the license may be found at
@@ -459,11 +459,11 @@ typedef enum {
459 459
   ///
460 460
   TimerCancel,
461 461
   ///
462
-  /// An event is to be signalled periodically at a specified interval from the current time.
462
+  /// An event is to be signaled periodically at a specified interval from the current time.
463 463
   ///
464 464
   TimerPeriodic,
465 465
   ///
466
-  /// An event is to be signalled once at a specified interval from the current time.
466
+  /// An event is to be signaled once at a specified interval from the current time.
467 467
   ///
468 468
   TimerRelative
469 469
 } EFI_TIMER_DELAY;
@@ -664,13 +664,20 @@ EFI_STATUS
664 664
                                  then EFI_INVALID_PARAMETER is returned.
665 665
   @param  VendorGuid             A unique identifier for the vendor.
666 666
   @param  Attributes             Attributes bitmask to set for the variable.
667
-  @param  DataSize               The size in bytes of the Data buffer. A size of zero causes the
668
-                                 variable to be deleted.
667
+  @param  DataSize               The size in bytes of the Data buffer. Unless the EFI_VARIABLE_APPEND_WRITE,
668
+                                 EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS, or
669
+                                 EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS attribute is set, a size of zero
670
+                                 causes the variable to be deleted. When the EFI_VARIABLE_APPEND_WRITE attribute is
671
+                                 set, then a SetVariable() call with a DataSize of zero will not cause any change to
672
+                                 the variable value (the timestamp associated with the variable may be updated however
673
+                                 even if no new data value is provided,see the description of the
674
+                                 EFI_VARIABLE_AUTHENTICATION_2 descriptor below. In this case the DataSize will not
675
+                                 be zero since the EFI_VARIABLE_AUTHENTICATION_2 descriptor will be populated).
669 676
   @param  Data                   The contents for the variable.
670 677
 
671 678
   @retval EFI_SUCCESS            The firmware has successfully stored the variable and its data as
672 679
                                  defined by the Attributes.
673
-  @retval EFI_INVALID_PARAMETER  An invalid combination of attribute bits was supplied, or the
680
+  @retval EFI_INVALID_PARAMETER  An invalid combination of attribute bits, name, and GUID was supplied, or the
674 681
                                  DataSize exceeds the maximum allowed.
675 682
   @retval EFI_INVALID_PARAMETER  VariableName is an empty string.
676 683
   @retval EFI_OUT_OF_RESOURCES   Not enough storage is available to hold the variable and its data.
@@ -678,8 +685,9 @@ EFI_STATUS
678 685
   @retval EFI_WRITE_PROTECTED    The variable in question is read-only.
679 686
   @retval EFI_WRITE_PROTECTED    The variable in question cannot be deleted.
680 687
   @retval EFI_SECURITY_VIOLATION The variable could not be written due to EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS
681
-                                 set but the AuthInfo does NOT pass the validation check carried out
682
-                                 by the firmware.
688
+                                 or EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACESS being set, but the AuthInfo
689
+                                 does NOT pass the validation check carried out by the firmware.
690
+
683 691
   @retval EFI_NOT_FOUND          The variable trying to be updated or deleted was not found.
684 692
 
685 693
 **/
@@ -989,7 +997,15 @@ typedef enum {
989 997
   /// state.  If the system does not support this reset type, then when the system
990 998
   /// is rebooted, it should exhibit the EfiResetCold attributes.
991 999
   ///
992
-  EfiResetShutdown
1000
+  EfiResetShutdown,
1001
+  ///
1002
+  /// Used to induce a system-wide reset. The exact type of the reset is defined by
1003
+  /// the EFI_GUID that follows the Null-terminated Unicode string passed into
1004
+  /// ResetData. If the platform does not recognize the EFI_GUID in ResetData the
1005
+  /// platform must pick a supported reset type to perform. The platform may
1006
+  /// optionally log the parameters from any non-normal reset that occurs.
1007
+  ///
1008
+  EfiResetPlatformSpecific
993 1009
 } EFI_RESET_TYPE;
994 1010
 
995 1011
 /**
@@ -1150,6 +1166,8 @@ EFI_STATUS
1150 1166
   @retval EFI_OUT_OF_RESOURCES  There was not enough memory in pool to install all the protocols.
1151 1167
   @retval EFI_ALREADY_STARTED   A Device Path Protocol instance was passed in that is already present in
1152 1168
                                 the handle database.
1169
+  @retval EFI_INVALID_PARAMETER Handle is NULL.
1170
+  @retval EFI_INVALID_PARAMETER Protocol is already installed on the handle specified by Handle.
1153 1171
 
1154 1172
 **/
1155 1173
 typedef
@@ -1655,7 +1673,11 @@ typedef struct {
1655 1673
   @retval EFI_INVALID_PARAMETER CapsuleCount is 0.
1656 1674
   @retval EFI_DEVICE_ERROR      The capsule update was started, but failed due to a device error.
1657 1675
   @retval EFI_UNSUPPORTED       The capsule type is not supported on this platform.
1658
-  @retval EFI_OUT_OF_RESOURCES  There were insufficient resources to process the capsule.
1676
+  @retval EFI_OUT_OF_RESOURCES  When ExitBootServices() has been previously called this error indicates the capsule
1677
+                                is compatible with this platform but is not capable of being submitted or processed
1678
+                                in runtime. The caller may resubmit the capsule prior to ExitBootServices().
1679
+  @retval EFI_OUT_OF_RESOURCES  When ExitBootServices() has not been previously called then this error indicates
1680
+                                the capsule is compatible with this platform but there are insufficient resources to process.
1659 1681
 
1660 1682
 **/
1661 1683
 typedef
@@ -1682,7 +1704,11 @@ EFI_STATUS
1682 1704
   @retval EFI_UNSUPPORTED       The capsule type is not supported on this platform, and
1683 1705
                                 MaximumCapsuleSize and ResetType are undefined.
1684 1706
   @retval EFI_INVALID_PARAMETER MaximumCapsuleSize is NULL.
1685
-  @retval EFI_OUT_OF_RESOURCES  There were insufficient resources to process the query request.
1707
+  @retval EFI_OUT_OF_RESOURCES  When ExitBootServices() has been previously called this error indicates the capsule
1708
+                                is compatible with this platform but is not capable of being submitted or processed
1709
+                                in runtime. The caller may resubmit the capsule prior to ExitBootServices().
1710
+  @retval EFI_OUT_OF_RESOURCES  When ExitBootServices() has not been previously called then this error indicates
1711
+                                the capsule is compatible with this platform but there are insufficient resources to process.
1686 1712
 
1687 1713
 **/
1688 1714
 typedef
@@ -1728,12 +1754,17 @@ EFI_STATUS
1728 1754
 //
1729 1755
 // Firmware should stop at a firmware user interface on next boot
1730 1756
 //
1731
-#define EFI_OS_INDICATIONS_BOOT_TO_FW_UI    0x0000000000000001
1757
+#define EFI_OS_INDICATIONS_BOOT_TO_FW_UI                    0x0000000000000001
1758
+#define EFI_OS_INDICATIONS_TIMESTAMP_REVOCATION             0x0000000000000002
1759
+#define EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED  0x0000000000000004
1760
+#define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED            0x0000000000000008
1761
+#define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED     0x0000000000000010
1732 1762
 
1733 1763
 //
1734 1764
 // EFI Runtime Services Table
1735 1765
 //
1736 1766
 #define EFI_SYSTEM_TABLE_SIGNATURE      SIGNATURE_64 ('I','B','I',' ','S','Y','S','T')
1767
+#define EFI_2_40_SYSTEM_TABLE_REVISION  ((2 << 16) | (40))
1737 1768
 #define EFI_2_31_SYSTEM_TABLE_REVISION  ((2 << 16) | (31))
1738 1769
 #define EFI_2_30_SYSTEM_TABLE_REVISION  ((2 << 16) | (30))
1739 1770
 #define EFI_2_20_SYSTEM_TABLE_REVISION  ((2 << 16) | (20))
@@ -1741,10 +1772,11 @@ EFI_STATUS
1741 1772
 #define EFI_2_00_SYSTEM_TABLE_REVISION  ((2 << 16) | (00))
1742 1773
 #define EFI_1_10_SYSTEM_TABLE_REVISION  ((1 << 16) | (10))
1743 1774
 #define EFI_1_02_SYSTEM_TABLE_REVISION  ((1 << 16) | (02))
1744
-#define EFI_SYSTEM_TABLE_REVISION       EFI_2_31_SYSTEM_TABLE_REVISION
1775
+#define EFI_SYSTEM_TABLE_REVISION       EFI_2_40_SYSTEM_TABLE_REVISION
1776
+#define EFI_SPECIFICATION_VERSION       EFI_SYSTEM_TABLE_REVISION
1745 1777
 
1746 1778
 #define EFI_RUNTIME_SERVICES_SIGNATURE  SIGNATURE_64 ('R','U','N','T','S','E','R','V')
1747
-#define EFI_RUNTIME_SERVICES_REVISION   EFI_2_31_SYSTEM_TABLE_REVISION
1779
+#define EFI_RUNTIME_SERVICES_REVISION   EFI_SPECIFICATION_VERSION
1748 1780
 
1749 1781
 ///
1750 1782
 /// EFI Runtime Services Table.
@@ -1796,7 +1828,7 @@ typedef struct {
1796 1828
 
1797 1829
 
1798 1830
 #define EFI_BOOT_SERVICES_SIGNATURE   SIGNATURE_64 ('B','O','O','T','S','E','R','V')
1799
-#define EFI_BOOT_SERVICES_REVISION    EFI_2_31_SYSTEM_TABLE_REVISION
1831
+#define EFI_BOOT_SERVICES_REVISION    EFI_SPECIFICATION_VERSION
1800 1832
 
1801 1833
 ///
1802 1834
 /// EFI Boot Services Table.
@@ -2013,41 +2045,46 @@ EFI_STATUS
2013 2045
 ///
2014 2046
 /// EFI Boot Key Data
2015 2047
 ///
2016
-typedef UINT32 EFI_BOOT_KEY_DATA;
2017
-///
2018
-/// Indicates the revision of the EFI_KEY_OPTION structure. This revision level should be 0.
2019
-///
2020
-#define EFI_KEY_OPTION_REVISION_MASK        0x000000FF
2021
-///
2022
-/// Either the left or right Shift keys must be pressed (1) or must not be pressed (0).
2023
-///
2024
-#define EFI_KEY_OPTION_SHIFT_PRESSED_MASK   BIT8
2025
-///
2026
-/// Either the left or right Control keys must be pressed (1) or must not be pressed (0).
2027
-///
2028
-#define EFI_KEY_OPTION_CONTROL_PRESSED_MASK BIT9
2029
-///
2030
-/// Either the left or right Alt keys must be pressed (1) or must not be pressed (0).
2031
-///
2032
-#define EFI_KEY_OPTION_ALT_PRESSED_MASK     BIT10
2033
-///
2034
-/// Either the left or right Logo keys must be pressed (1) or must not be pressed (0).
2035
-///
2036
-#define EFI_KEY_OPTION_LOGO_PRESSED_MASK    BIT11
2037
-///
2038
-/// The Menu key must be pressed (1) or must not be pressed (0).
2039
-///
2040
-#define EFI_KEY_OPTION_MENU_PRESSED_MASK    BIT12
2041
-///
2042
-/// The SysReq key must be pressed (1) or must not be pressed (0).
2043
-///
2044
-#define EFI_KEY_OPTION_SYS_REQ_PRESSED_MASK BIT13
2045
-///
2046
-/// Specifies the actual number of entries in EFI_KEY_OPTION.Keys, from 0-3. If
2047
-/// zero, then only the shift state is considered. If more than one, then the boot option will
2048
-/// only be launched if all of the specified keys are pressed with the same shift state.
2049
-///
2050
-#define EFI_KEY_OPTION_INPUT_KEY_COUNT_MASK (BIT30 | BIT31)
2048
+typedef union {
2049
+  struct {
2050
+    ///
2051
+    /// Indicates the revision of the EFI_KEY_OPTION structure. This revision level should be 0.
2052
+    ///
2053
+    UINT32  Revision        : 8;
2054
+    ///
2055
+    /// Either the left or right Shift keys must be pressed (1) or must not be pressed (0).
2056
+    ///
2057
+    UINT32  ShiftPressed    : 1;
2058
+    ///
2059
+    /// Either the left or right Control keys must be pressed (1) or must not be pressed (0).
2060
+    ///
2061
+    UINT32  ControlPressed  : 1;
2062
+    ///
2063
+    /// Either the left or right Alt keys must be pressed (1) or must not be pressed (0).
2064
+    ///
2065
+    UINT32  AltPressed      : 1;
2066
+    ///
2067
+    /// Either the left or right Logo keys must be pressed (1) or must not be pressed (0).
2068
+    ///
2069
+    UINT32  LogoPressed     : 1;
2070
+    ///
2071
+    /// The Menu key must be pressed (1) or must not be pressed (0).
2072
+    ///
2073
+    UINT32  MenuPressed     : 1;
2074
+    ///
2075
+    /// The SysReq key must be pressed (1) or must not be pressed (0).
2076
+    ///
2077
+    UINT32  SysReqPressed    : 1;
2078
+    UINT32  Reserved        : 16;
2079
+    ///
2080
+    /// Specifies the actual number of entries in EFI_KEY_OPTION.Keys, from 0-3. If
2081
+    /// zero, then only the shift state is considered. If more than one, then the boot option will
2082
+    /// only be launched if all of the specified keys are pressed with the same shift state.
2083
+    ///
2084
+    UINT32  InputKeyCount   : 2;
2085
+  } Options;
2086
+  UINT32  PackedValue;
2087
+} EFI_BOOT_KEY_DATA;
2051 2088
 
2052 2089
 ///
2053 2090
 /// EFI Key Option.
@@ -2085,6 +2122,7 @@ typedef struct {
2085 2122
 #define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64    L"\\EFI\\BOOT\\BOOTIA64.EFI"
2086 2123
 #define EFI_REMOVABLE_MEDIA_FILE_NAME_X64     L"\\EFI\\BOOT\\BOOTX64.EFI"
2087 2124
 #define EFI_REMOVABLE_MEDIA_FILE_NAME_ARM     L"\\EFI\\BOOT\\BOOTARM.EFI"
2125
+#define EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64 L"\\EFI\\BOOT\\BOOTAA64.EFI"
2088 2126
 
2089 2127
 #if   defined (MDE_CPU_IA32)
2090 2128
   #define EFI_REMOVABLE_MEDIA_FILE_NAME   EFI_REMOVABLE_MEDIA_FILE_NAME_IA32
@@ -2095,6 +2133,8 @@ typedef struct {
2095 2133
 #elif defined (MDE_CPU_EBC)
2096 2134
 #elif defined (MDE_CPU_ARM)
2097 2135
   #define EFI_REMOVABLE_MEDIA_FILE_NAME   EFI_REMOVABLE_MEDIA_FILE_NAME_ARM
2136
+#elif defined (MDE_CPU_AARCH64)
2137
+  #define EFI_REMOVABLE_MEDIA_FILE_NAME   EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64
2098 2138
 #else
2099 2139
   #error Unknown Processor Type
2100 2140
 #endif

+ 7
- 1
src/include/ipxe/efi/X64/ProcessorBind.h Просмотреть файл

@@ -1,7 +1,7 @@
1 1
 /** @file
2 2
   Processor or Compiler specific defines and types x64 (Intel 64, AMD64).
3 3
 
4
-  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
4
+  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
5 5
   This program and the accompanying materials
6 6
   are licensed and made available under the terms and conditions of the BSD License
7 7
   which accompanies this distribution.  The full text of the license may be found at
@@ -229,6 +229,12 @@ typedef INT64   INTN;
229 229
 ///
230 230
 #define MAX_ADDRESS   0xFFFFFFFFFFFFFFFFULL
231 231
 
232
+///
233
+/// Maximum legal x64 INTN and UINTN values.
234
+///
235
+#define MAX_INTN   ((INTN)0x7FFFFFFFFFFFFFFFULL)
236
+#define MAX_UINTN  ((UINTN)0xFFFFFFFFFFFFFFFFULL)
237
+
232 238
 ///
233 239
 /// The stack alignment required for x64
234 240
 ///

Загрузка…
Отмена
Сохранить