From 656416bc2ee1409492343cde3f27ce717e90fdf7 Mon Sep 17 00:00:00 2001 From: oliviermartin Date: Thu, 18 Aug 2011 13:21:14 +0000 Subject: 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 --- ArmPlatformPkg/Bds/BdsInternal.h | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'ArmPlatformPkg/Bds/BdsInternal.h') 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 -- cgit v1.2.3