Initrd = NULL;\r
}\r
\r
- Status = BdsBootLinux (BootOption->FilePathList,\r
+ Status = BdsBootLinuxAtag (BootOption->FilePathList,\r
Initrd, // Initrd\r
- (CHAR8*)(LinuxArguments + 1), // CmdLine\r
- NULL);\r
+ (CHAR8*)(LinuxArguments + 1)); // CmdLine\r
} else if (LoaderType == BDS_LOADER_KERNEL_LINUX_FDT) {\r
LinuxArguments = &(OptionalData->Arguments.LinuxArguments);\r
CmdLineSize = ReadUnaligned16 ((CONST UINT16*)&LinuxArguments->CmdLineSize);\r
Status = GetEnvironmentVariable ((CHAR16 *)L"FDT", DefaultFdtDevicePath, &FdtDevicePathSize, (VOID **)&FdtDevicePath);\r
ASSERT_EFI_ERROR(Status);\r
\r
- Status = BdsBootLinux (BootOption->FilePathList,\r
+ Status = BdsBootLinuxFdt (BootOption->FilePathList,\r
Initrd, // Initrd\r
(CHAR8*)(LinuxArguments + 1),\r
FdtDevicePath);\r
return Status;\r
}\r
\r
-EFI_STATUS\r
-BootOptionParseLoadOption (\r
- IN EFI_LOAD_OPTION EfiLoadOption,\r
- IN UINTN EfiLoadOptionSize,\r
- OUT BDS_LOAD_OPTION **BdsLoadOption\r
- )\r
-{\r
- BDS_LOAD_OPTION *LoadOption;\r
- UINTN FilePathListLength;\r
- UINTN DescriptionLength;\r
-\r
- if (EfiLoadOption == NULL) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
- if (EfiLoadOptionSize < sizeof(UINT32) + sizeof(UINT16) + sizeof(CHAR16) + sizeof(EFI_DEVICE_PATH_PROTOCOL)) {\r
- return EFI_BAD_BUFFER_SIZE;\r
- }\r
-\r
- LoadOption = (BDS_LOAD_OPTION*)AllocatePool(sizeof(BDS_LOAD_OPTION));\r
- if (LoadOption == NULL) {\r
- return EFI_OUT_OF_RESOURCES;\r
- }\r
-\r
- LoadOption->LoadOption = EfiLoadOption;\r
- LoadOption->LoadOptionSize = EfiLoadOptionSize;\r
-\r
- LoadOption->Attributes = *(UINT32*)EfiLoadOption;\r
- FilePathListLength = *(UINT16*)(EfiLoadOption + sizeof(UINT32));\r
- LoadOption->Description = (CHAR16*)(EfiLoadOption + sizeof(UINT32) + sizeof(UINT16));\r
- DescriptionLength = StrSize (LoadOption->Description);\r
- LoadOption->FilePathList = (EFI_DEVICE_PATH_PROTOCOL*)(EfiLoadOption + sizeof(UINT32) + sizeof(UINT16) + DescriptionLength);\r
-\r
- if ((UINTN)((UINT8*)LoadOption->FilePathList + FilePathListLength - EfiLoadOption) == EfiLoadOptionSize) {\r
- LoadOption->OptionalData = NULL;\r
- } else {\r
- LoadOption->OptionalData = (BDS_LOADER_OPTIONAL_DATA *)((UINT8*)LoadOption->FilePathList + FilePathListLength);\r
- }\r
-\r
- *BdsLoadOption = LoadOption;\r
- return EFI_SUCCESS;\r
-}\r
-\r
-EFI_STATUS\r
-BootOptionFromLoadOptionVariable (\r
- IN UINT16 LoadOptionIndex,\r
- OUT BDS_LOAD_OPTION **BdsLoadOption\r
- )\r
-{\r
- EFI_STATUS Status;\r
- CHAR16 BootVariableName[9];\r
- EFI_LOAD_OPTION EfiLoadOption;\r
- UINTN EfiLoadOptionSize;\r
-\r
- UnicodeSPrint (BootVariableName, 9 * sizeof(CHAR16), L"Boot%04X", LoadOptionIndex);\r
-\r
- Status = GetEnvironmentVariable (BootVariableName, NULL, &EfiLoadOptionSize, (VOID**)&EfiLoadOption);\r
- if (!EFI_ERROR(Status)) {\r
- Status = BootOptionParseLoadOption (EfiLoadOption,EfiLoadOptionSize,BdsLoadOption);\r
- if (!EFI_ERROR(Status)) {\r
- (*BdsLoadOption)->LoadOptionIndex = LoadOptionIndex;\r
- }\r
- }\r
-\r
- return Status;\r
-}\r
-\r
EFI_STATUS\r
BootOptionList (\r
IN OUT LIST_ENTRY *BootOptionList\r
}\r
\r
for (Index = 0; Index < BootOrderSize / sizeof (UINT16); Index++) {\r
- Status = BootOptionFromLoadOptionVariable (BootOrder[Index],&BdsLoadOption);\r
+ Status = BootOptionFromLoadOptionIndex (BootOrder[Index], &BdsLoadOption);\r
if (!EFI_ERROR(Status)) {\r
BdsLoadOptionEntry = (BDS_LOAD_OPTION_ENTRY*)AllocatePool(sizeof(BDS_LOAD_OPTION_ENTRY));\r
BdsLoadOptionEntry->BdsLoadOption = BdsLoadOption;\r
return EFI_SUCCESS;\r
}\r
\r
-UINT16\r
-BootOptionAllocateBootIndex (\r
- VOID\r
- )\r
-{\r
- EFI_STATUS Status;\r
- UINTN Index;\r
- UINT32 BootIndex;\r
- UINT16 *BootOrder;\r
- UINTN BootOrderSize;\r
- BOOLEAN Found;\r
-\r
- // Get the Boot Option Order from the environment variable\r
- Status = GetEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder);\r
- if (!EFI_ERROR(Status)) {\r
- for (BootIndex = 0; BootIndex <= 0xFFFF; BootIndex++) {\r
- Found = FALSE;\r
- for (Index = 0; Index < BootOrderSize / sizeof (UINT16); Index++) {\r
- if (BootOrder[Index] == BootIndex) {\r
- Found = TRUE;\r
- break;\r
- }\r
- }\r
- if (!Found) {\r
- return BootIndex;\r
- }\r
- }\r
- }\r
- // Return the first index\r
- return 0;\r
-}\r
-\r
STATIC\r
EFI_STATUS\r
BootOptionSetFields (\r