Quellcode durchsuchen

Add EBC (EFI Byte Code) protocol support.

Signed-off-by: Pete Batard <pete@akeo.ie>
Signed-off-by: Nigel Croxon <nigel.croxon@hpe.com>
Nigel Croxon vor 8 Jahren
Ursprung
Commit
447ad9aa3a
3 geänderte Dateien mit 51 neuen und 1 gelöschten Zeilen
  1. 1 0
      inc/efilib.h
  2. 49 1
      inc/efiprot.h
  3. 1 0
      lib/data.c

+ 1 - 0
inc/efilib.h

@@ -111,6 +111,7 @@ extern EFI_GUID gEfiBusSpecificDriverOverrideProtocolGuid;
 #define BusSpecificDriverOverrideProtocol gEfiBusSpecificDriverOverrideProtocolGuid
 extern EFI_GUID gEfiDriverFamilyOverrideProtocolGuid;
 #define DriverFamilyOverrideProtocol gEfiDriverFamilyOverrideProtocolGuid
+extern EFI_GUID gEfiEbcProtocolGuid;
 
 extern EFI_GUID gEfiGlobalVariableGuid;
 #define EfiGlobalVariable gEfiGlobalVariableGuid

+ 49 - 1
inc/efiprot.h

@@ -1372,6 +1372,54 @@ typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL {
   EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION       GetVersion;
 } EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL;
 
+//
+// EFI_EBC_PROTOCOL
+//
 
-#endif
+#define EFI_EBC_INTERPRETER_PROTOCOL_GUID              \
+     {0x13ac6dd1, 0x73d0, 0x11d4, {0xb0, 0x6b, 0x00, 0xaa, 0x00, 0xbd, 0x6d, 0xe7} }
+
+#define EFI_EBC_PROTOCOL_GUID EFI_EBC_INTERPRETER_PROTOCOL_GUID
+
+INTERFACE_DECL(_EFI_EBC_PROTOCOL);
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_EBC_CREATE_THUNK)(
+  IN struct _EFI_EBC_PROTOCOL   *This,
+  IN EFI_HANDLE                 ImageHandle,
+  IN VOID                       *EbcEntryPoint,
+  OUT VOID                      **Thunk);
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_EBC_UNLOAD_IMAGE)(
+  IN struct _EFI_EBC_PROTOCOL   *This,
+  IN EFI_HANDLE                 ImageHandle);
 
+typedef
+EFI_STATUS
+(EFIAPI *EBC_ICACHE_FLUSH)(
+  IN EFI_PHYSICAL_ADDRESS       Start,
+  IN UINT64                     Length);
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_EBC_REGISTER_ICACHE_FLUSH)(
+  IN struct _EFI_EBC_PROTOCOL   *This,
+  IN EBC_ICACHE_FLUSH           Flush);
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_EBC_GET_VERSION)(
+  IN struct _EFI_EBC_PROTOCOL   *This,
+  IN OUT UINT64                 *Version);
+
+typedef struct _EFI_EBC_PROTOCOL {
+  EFI_EBC_CREATE_THUNK          CreateThunk;
+  EFI_EBC_UNLOAD_IMAGE          UnloadImage;
+  EFI_EBC_REGISTER_ICACHE_FLUSH RegisterICacheFlush;
+  EFI_EBC_GET_VERSION           GetVersion;
+} EFI_EBC_PROTOCOL;
+
+#endif

+ 1 - 0
lib/data.c

@@ -116,6 +116,7 @@ EFI_GUID gEfiHashProtocolGuid                       = EFI_HASH_PROTOCOL_GUID;
 EFI_GUID gEfiPlatformDriverOverrideProtocolGuid     = EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID;
 EFI_GUID gEfiBusSpecificDriverOverrideProtocolGuid  = EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID;
 EFI_GUID gEfiDriverFamilyOverrideProtocolGuid       = EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID;
+EFI_GUID gEfiEbcProtocolGuid                        = EFI_EBC_PROTOCOL_GUID;
 
 //
 // File system information IDs