svn commit: r295429 - head/sys/boot/common
Andrew Turner
andrew at FreeBSD.org
Tue Feb 9 09:39:32 UTC 2016
Author: andrew
Date: Tue Feb 9 09:39:30 2016
New Revision: 295429
URL: https://svnweb.freebsd.org/changeset/base/295429
Log:
Don't set the offset when loading the kernel on the arm loader.efi. The
copyin and copyout code handle virtual addresses such that they will take
a virtual address and convert it into a valid physical address. It may
also mean we fail to boot as the elf files load address could be 0.
Sponsored by: ABT Systems Ltd
Modified:
head/sys/boot/common/load_elf.c
Modified: head/sys/boot/common/load_elf.c
==============================================================================
--- head/sys/boot/common/load_elf.c Tue Feb 9 09:38:05 2016 (r295428)
+++ head/sys/boot/common/load_elf.c Tue Feb 9 09:39:30 2016 (r295429)
@@ -353,7 +353,7 @@ __elfN(loadimage)(struct preloaded_file
#endif
} else
off = 0;
-#elif defined(__arm__)
+#elif defined(__arm__) && !defined(EFI)
/*
* The elf headers in arm kernels specify virtual addresses in all
* header fields, even the ones that should be physical addresses.
@@ -364,6 +364,11 @@ __elfN(loadimage)(struct preloaded_file
* translates it to a physical address. We do the va->pa conversion on
* the entry point address in the header now, so that later we can
* launch the kernel by just jumping to that address.
+ *
+ * When booting from UEFI the copyin and copyout functions handle
+ * adjusting the location relative to the first virtual address.
+ * Because of this there is no need to adjust the offset or entry
+ * point address as these will both be handled by the efi code.
*/
off -= ehdr->e_entry & ~PAGE_MASK;
ehdr->e_entry += off;
More information about the svn-src-head
mailing list