From c0a1f7776b8429d167cf1740ea3dbc4964dca338 Mon Sep 17 00:00:00 2001 From: oliviermartin Date: Fri, 24 Feb 2012 16:11:51 +0000 Subject: 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 --- ArmPkg/Library/BdsLib/BdsLinuxLoader.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'ArmPkg') diff --git a/ArmPkg/Library/BdsLib/BdsLinuxLoader.c b/ArmPkg/Library/BdsLib/BdsLinuxLoader.c index d2e0effb35..6cd49a2fca 100644 --- a/ArmPkg/Library/BdsLib/BdsLinuxLoader.c +++ b/ArmPkg/Library/BdsLib/BdsLinuxLoader.c @@ -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 -- cgit v1.2.3