summaryrefslogtreecommitdiff
path: root/ArmPlatformPkg/Bds/BdsInternal.h
diff options
context:
space:
mode:
Diffstat (limited to 'ArmPlatformPkg/Bds/BdsInternal.h')
-rw-r--r--ArmPlatformPkg/Bds/BdsInternal.h28
1 files changed, 20 insertions, 8 deletions
diff --git a/ArmPlatformPkg/Bds/BdsInternal.h b/ArmPlatformPkg/Bds/BdsInternal.h
index 9ef36a1ff6..e0bf105db8 100644
--- a/ArmPlatformPkg/Bds/BdsInternal.h
+++ b/ArmPlatformPkg/Bds/BdsInternal.h
@@ -35,7 +35,7 @@
#define BOOT_DEVICE_DESCRIPTION_MAX 100
#define BOOT_DEVICE_FILEPATH_MAX 100
-#define BOOT_DEVICE_OPTION_MAX 100
+#define BOOT_DEVICE_OPTION_MAX 300
#define BOOT_DEVICE_ADDRESS_MAX 20
typedef enum {
@@ -44,9 +44,19 @@ typedef enum {
BDS_LOADER_KERNEL_LINUX_FDT,
} BDS_LOADER_TYPE;
+typedef struct{
+ UINT16 InitrdPathListLength;
+ EFI_DEVICE_PATH_PROTOCOL *InitrdPathList;
+ CHAR8 CmdLine[BOOT_DEVICE_OPTION_MAX + 1];
+} BDS_LINUX_ATAG_ARGUMENTS;
+
+typedef union {
+ BDS_LINUX_ATAG_ARGUMENTS LinuxAtagArguments;
+} BDS_LOADER_ARGUMENTS;
+
typedef struct {
- BDS_LOADER_TYPE LoaderType;
- CHAR8 Arguments[];
+ BDS_LOADER_TYPE LoaderType;
+ BDS_LOADER_ARGUMENTS Arguments;
} BDS_LOADER_OPTIONAL_DATA;
typedef enum {
@@ -68,6 +78,7 @@ typedef struct {
typedef UINT8* EFI_LOAD_OPTION;
+/* This is defined by the UEFI specs, don't change it */
typedef struct {
LIST_ENTRY Link;
@@ -86,8 +97,8 @@ typedef struct _BDS_LOAD_OPTION_SUPPORT {
BDS_SUPPORTED_DEVICE_TYPE Type;
EFI_STATUS (*ListDevices)(IN OUT LIST_ENTRY* BdsLoadOptionList);
BOOLEAN (*IsSupported)(IN BDS_LOAD_OPTION* BdsLoadOption);
- EFI_STATUS (*CreateDevicePathNode)(IN BDS_SUPPORTED_DEVICE* BdsLoadOption, OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNode, OUT BDS_LOADER_TYPE *BootType, OUT UINT32 *Attributes);
- EFI_STATUS (*UpdateDevicePathNode)(IN BDS_LOAD_OPTION *BootOption, OUT EFI_DEVICE_PATH_PROTOCOL** NewDevicePath, OUT BDS_LOADER_TYPE *BootType, OUT UINT32 *Attributes);
+ EFI_STATUS (*CreateDevicePathNode)(IN BDS_SUPPORTED_DEVICE* BdsLoadOption, OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNode, OUT BDS_LOADER_TYPE *BootType, OUT UINT32 *Attributes);
+ EFI_STATUS (*UpdateDevicePathNode)(IN EFI_DEVICE_PATH *OldDevicePath, OUT EFI_DEVICE_PATH_PROTOCOL** NewDevicePath, OUT BDS_LOADER_TYPE *BootType, OUT UINT32 *Attributes);
} BDS_LOAD_OPTION_SUPPORT;
#define LOAD_OPTION_FROM_LINK(a) BASE_CR(a, BDS_LOAD_OPTION, Link)
@@ -107,7 +118,8 @@ BootDeviceListSupportedInit (
EFI_STATUS
BootDeviceListSupportedFree (
- IN LIST_ENTRY *SupportedDeviceList
+ IN LIST_ENTRY *SupportedDeviceList,
+ IN BDS_SUPPORTED_DEVICE *Except
);
EFI_STATUS
@@ -187,7 +199,7 @@ BootOptionCreate (
IN CHAR16* BootDescription,
IN EFI_DEVICE_PATH_PROTOCOL* DevicePath,
IN BDS_LOADER_TYPE BootType,
- IN CHAR8* BootArguments,
+ IN BDS_LOADER_ARGUMENTS *BootArguments,
OUT BDS_LOAD_OPTION **BdsLoadOption
);
@@ -198,7 +210,7 @@ BootOptionUpdate (
IN CHAR16* BootDescription,
IN EFI_DEVICE_PATH_PROTOCOL* DevicePath,
IN BDS_LOADER_TYPE BootType,
- IN CHAR8* BootArguments
+ IN BDS_LOADER_ARGUMENTS *BootArguments
);
EFI_STATUS