From 459823d9b24cd27e91d264dbd23c9ab699c34307 Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Mon, 11 May 2015 17:37:24 +0000 Subject: ArmPkg: update BdsLib to updated definition of EFI_LOAD_OPTION Since there is now a formal definition of EFI_LOAD_OPTION, we can no longer typedef it as a UINT8*. So update the code to use the common definition, which is not a pointer type, hence the additional changes to the C code. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel Signed-off-by: Olivier Martin Reviewed-by: Ronald Cron git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17410 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPkg/Library/BdsLib/BdsLoadOption.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'ArmPkg/Library') diff --git a/ArmPkg/Library/BdsLib/BdsLoadOption.c b/ArmPkg/Library/BdsLib/BdsLoadOption.c index be5ed41980..766a9890fc 100644 --- a/ArmPkg/Library/BdsLib/BdsLoadOption.c +++ b/ArmPkg/Library/BdsLib/BdsLoadOption.c @@ -16,13 +16,14 @@ EFI_STATUS BootOptionParseLoadOption ( - IN EFI_LOAD_OPTION EfiLoadOption, + IN EFI_LOAD_OPTION *EfiLoadOption, IN UINTN EfiLoadOptionSize, IN OUT BDS_LOAD_OPTION **BdsLoadOption ) { BDS_LOAD_OPTION *LoadOption; UINTN DescriptionLength; + UINTN EfiLoadOptionPtr; if (EfiLoadOption == NULL) { return EFI_INVALID_PARAMETER; @@ -41,22 +42,23 @@ BootOptionParseLoadOption ( LoadOption = *BdsLoadOption; } + EfiLoadOptionPtr = (UINTN)EfiLoadOption; LoadOption->LoadOption = EfiLoadOption; LoadOption->LoadOptionSize = EfiLoadOptionSize; - LoadOption->Attributes = *(UINT32*)EfiLoadOption; - LoadOption->FilePathListLength = *(UINT16*)(EfiLoadOption + sizeof(UINT32)); - LoadOption->Description = (CHAR16*)(EfiLoadOption + sizeof(UINT32) + sizeof(UINT16)); + LoadOption->Attributes = *(UINT32*)EfiLoadOptionPtr; + LoadOption->FilePathListLength = *(UINT16*)(EfiLoadOptionPtr + sizeof(UINT32)); + LoadOption->Description = (CHAR16*)(EfiLoadOptionPtr + sizeof(UINT32) + sizeof(UINT16)); DescriptionLength = StrSize (LoadOption->Description); - LoadOption->FilePathList = (EFI_DEVICE_PATH_PROTOCOL*)(EfiLoadOption + sizeof(UINT32) + sizeof(UINT16) + DescriptionLength); + LoadOption->FilePathList = (EFI_DEVICE_PATH_PROTOCOL*)(EfiLoadOptionPtr + sizeof(UINT32) + sizeof(UINT16) + DescriptionLength); // If ((End of EfiLoadOptiony - Start of EfiLoadOption) == EfiLoadOptionSize) then No Optional Data - if ((UINTN)((UINTN)LoadOption->FilePathList + LoadOption->FilePathListLength - (UINTN)EfiLoadOption) == EfiLoadOptionSize) { + if ((UINTN)((UINTN)LoadOption->FilePathList + LoadOption->FilePathListLength - EfiLoadOptionPtr) == EfiLoadOptionSize) { LoadOption->OptionalData = NULL; LoadOption->OptionalDataSize = 0; } else { LoadOption->OptionalData = (VOID*)((UINTN)(LoadOption->FilePathList) + LoadOption->FilePathListLength); - LoadOption->OptionalDataSize = EfiLoadOptionSize - ((UINTN)LoadOption->OptionalData - (UINTN)EfiLoadOption); + LoadOption->OptionalDataSize = EfiLoadOptionSize - ((UINTN)LoadOption->OptionalData - EfiLoadOptionPtr); } if (*BdsLoadOption == NULL) { @@ -73,7 +75,7 @@ BootOptionFromLoadOptionVariable ( ) { EFI_STATUS Status; - EFI_LOAD_OPTION EfiLoadOption; + EFI_LOAD_OPTION *EfiLoadOption; UINTN EfiLoadOptionSize; Status = GetGlobalEnvironmentVariable (BootVariableName, NULL, &EfiLoadOptionSize, (VOID**)&EfiLoadOption); @@ -141,12 +143,12 @@ BootOptionToLoadOptionVariable ( // Allocate the memory for the EFI Load Option BdsLoadOption->LoadOptionSize = sizeof(UINT32) + sizeof(UINT16) + DescriptionSize + BdsLoadOption->FilePathListLength + BdsLoadOption->OptionalDataSize; - BdsLoadOption->LoadOption = (EFI_LOAD_OPTION)AllocateZeroPool (BdsLoadOption->LoadOptionSize); + BdsLoadOption->LoadOption = (EFI_LOAD_OPTION *)AllocateZeroPool (BdsLoadOption->LoadOptionSize); if (BdsLoadOption->LoadOption == NULL) { return EFI_OUT_OF_RESOURCES; } - EfiLoadOptionPtr = BdsLoadOption->LoadOption; + EfiLoadOptionPtr = (UINT8 *) BdsLoadOption->LoadOption; // // Populate the EFI Load Option and BDS Boot Option structures -- cgit v1.2.3