summaryrefslogtreecommitdiff
path: root/ArmPlatformPkg/Bds/BdsInternal.h
diff options
context:
space:
mode:
authoroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2011-08-18 13:21:14 +0000
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2011-08-18 13:21:14 +0000
commit656416bc2ee1409492343cde3f27ce717e90fdf7 (patch)
tree13b6a4458149cd6a4360afb4515b4a9c299d51e3 /ArmPlatformPkg/Bds/BdsInternal.h
parent326d1df9193fae2be1cce85be9c361eb6eabe182 (diff)
downloadedk2-platforms-656416bc2ee1409492343cde3f27ce717e90fdf7.tar.xz
ArmPlatformPkg/Bds: Add Linux 'initrd' support to BDS
An 'initrd' file can be specified for a Linux kernel. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12169 6f19259b-4bc3-4df7-8a09-765794883524
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