ArmPkg/BdsLib: Added support for using uInitrd

Detect if there is a u-boot header on the initrd (by checking the
signature) and skip it.

Signed-off-by: ryan.harkin@linaro.org
Reviewed-by: oliviermartin




git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13031 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
oliviermartin 2012-02-24 16:11:51 +00:00
parent 1093e3074f
commit c0a1f7776b
1 changed files with 14 additions and 0 deletions

View File

@ -166,6 +166,13 @@ BdsBootLinuxAtag (
Print (L"ERROR: Did not find initrd image.\n");
return Status;
}
// Check if the initrd is a uInitrd
if (*(UINT32*)((UINTN)InitrdImage) == LINUX_UIMAGE_SIGNATURE) {
// Skip the 64-byte image header
InitrdImage = (EFI_PHYSICAL_ADDRESS)((UINTN)InitrdImage + 64);
InitrdImageSize -= 64;
}
}
//
@ -233,6 +240,13 @@ BdsBootLinuxFdt (
Print (L"ERROR: Did not find initrd image.\n");
return Status;
}
// Check if the initrd is a uInitrd
if (*(UINT32*)((UINTN)InitrdImage) == LINUX_UIMAGE_SIGNATURE) {
// Skip the 64-byte image header
InitrdImage = (EFI_PHYSICAL_ADDRESS)((UINTN)InitrdImage + 64);
InitrdImageSize -= 64;
}
}
// Load the FDT binary from a device path