aboutsummaryrefslogtreecommitdiff
path: root/efi64/include/efi/protocol/legacyboot.h
diff options
context:
space:
mode:
Diffstat (limited to 'efi64/include/efi/protocol/legacyboot.h')
-rw-r--r--efi64/include/efi/protocol/legacyboot.h119
1 files changed, 119 insertions, 0 deletions
diff --git a/efi64/include/efi/protocol/legacyboot.h b/efi64/include/efi/protocol/legacyboot.h
new file mode 100644
index 0000000..16e94e7
--- /dev/null
+++ b/efi64/include/efi/protocol/legacyboot.h
@@ -0,0 +1,119 @@
+/*++
+
+Copyright (c) 1999 Intel Corporation
+
+Module Name:
+
+ legacyboot
+
+Abstract:
+
+ EFI support for legacy boot
+
+
+
+Revision History
+
+--*/
+
+#ifndef _LEGACY_BOOT_INCLUDE_
+#define _LEGACY_BOOT_INCLUDE_
+
+#define LEGACY_BOOT_PROTOCOL \
+ { 0x376e5eb2, 0x30e4, 0x11d3, { 0xba, 0xe5, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
+
+#pragma pack(1)
+
+//
+// BBS 1.01 (See Appendix A) IPL and BCV Table Entry Data structure.
+// Seg:Off pointers have been converted to EFI pointers in this data structure
+// This is the structure that also maps to the EFI device path for the boot selection
+//
+typedef struct {
+ UINT16 DeviceType;
+ UINT16 StatusFlag;
+ UINT32 Reserved;
+ VOID *BootHandler; // Not an EFI entry point
+ CHAR8 *DescString;
+} BBS_TABLE_ENTRY;
+#pragma pack()
+
+typedef
+EFI_STATUS
+(EFIAPI *LEGACY_BOOT_CALL) (
+ IN EFI_DEVICE_PATH *DevicePath
+ );
+
+
+//
+// BBS support functions
+// PnP Call numbers and BiosSelector hidden in implementation
+//
+
+typedef enum {
+ IplRelative,
+ BcvRelative
+} BBS_TYPE;
+
+INTERFACE_DECL(_LEGACY_BOOT_INTERFACE);
+
+//
+// == PnP Function 0x60 then BbsVersion == 0x0101 if this call fails then BbsVersion == 0x0000
+//
+
+//
+// == PnP Function 0x61
+//
+typedef
+EFI_STATUS
+(EFIAPI *GET_DEVICE_COUNT) (
+ IN struct _LEGACY_BOOT_INTERFACE *This,
+ IN BBS_TYPE *TableType,
+ OUT UINTN *DeviceCount,
+ OUT UINTN *MaxCount
+ );
+
+//
+// == PnP Function 0x62
+//
+typedef
+EFI_STATUS
+(EFIAPI *GET_PRIORITY_AND_TABLE) (
+ IN struct _LEGACY_BOOT_INTERFACE *This,
+ IN BBS_TYPE *TableType,
+ IN OUT UINTN *PrioritySize, // MaxCount * sizeof(UINT8)
+ OUT UINTN *Priority,
+ IN OUT UINTN *TableSize, // MaxCount * sizeof(BBS_TABLE_ENTRY)
+ OUT BBS_TABLE_ENTRY *TableEntrySize
+ );
+
+//
+// == PnP Function 0x63
+//
+typedef
+EFI_STATUS
+(EFIAPI *SET_PRIORITY) (
+ IN struct _LEGACY_BOOT_INTERFACE *This,
+ IN BBS_TYPE *TableType,
+ IN OUT UINTN *PrioritySize,
+ OUT UINTN *Priority
+ );
+
+typedef struct _LEGACY_BOOT_INTERFACE {
+ LEGACY_BOOT_CALL BootIt;
+
+ //
+ // New functions to allow BBS booting to be configured from EFI
+ //
+ UINTN BbsVersion; // Currently 0x0101
+ GET_DEVICE_COUNT GetDeviceCount;
+ GET_PRIORITY_AND_TABLE GetPriorityAndTable;
+ SET_PRIORITY SetPriority;
+} LEGACY_BOOT_INTERFACE;
+
+EFI_STATUS
+PlInitializeLegacyBoot (
+ VOID
+ );
+
+#endif