Use explicit 0x200000 instead of MAXPAGESIZE for the amd64 kernel physaddr

MAXPAGESIZE is not well defined by the GNU ld documentation.
Different linkers, and different versions of the same linker, use
different MAXPAGESIZE values. Current versions of GNU gold and LLVM's
lld use 4K. When set to 4K the kernel panics at boot due to an issue
with x86bios.

Here we want the kernel physaddr to be the amd64 superpage size, so use
that value (2MB) explicitly. With this change GNU gold and LLVM lld can
link a working amd64 kernel.

PR:		214718 (x86bios)
Differential Revision:	https://reviews.freebsd.org/D8610
This commit is contained in:
Ed Maste 2016-11-25 18:57:14 +00:00
parent d52fad0e5d
commit 9d99bb0a0a
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=309151

View File

@ -6,7 +6,7 @@ SEARCH_DIR("/usr/lib");
SECTIONS
{
/* Read-only sections, merged into text segment: */
kernphys = CONSTANT (MAXPAGESIZE);
kernphys = 0x200000;
. = kernbase + kernphys + SIZEOF_HEADERS;
/*
* Use the AT keyword in order to set the right LMA that contains