Martin L Roth has submitted this change. ( https://review.coreboot.org/c/coreboot/+/80346?usp=email )
(
6 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: arch/x86/bootblock.ld: Align the base of bootblock downwards ......................................................................
arch/x86/bootblock.ld: Align the base of bootblock downwards
Instead of using some aritmetics that sometimes works, use the largest alignment necessary (page tables) and align downwards in the linker script.
This fixes linking failing when linking in page tables inside the bootblock.
This can result in a slight increase in bootblock size of at most 4096 - 512 bytes.
Signed-off-by: Arthur Heymans arthur@aheymans.xyz Change-Id: I78c6ba6e250ded3f04b12cd0c20b18cb653a1506 Reviewed-on: https://review.coreboot.org/c/coreboot/+/80346 Reviewed-by: Martin L Roth gaumless@gmail.com Reviewed-by: Jérémy Compostella jeremy.compostella@intel.com Tested-by: build bot (Jenkins) no-reply@coreboot.org --- M src/arch/x86/bootblock.ld 1 file changed, 4 insertions(+), 7 deletions(-)
Approvals: Jérémy Compostella: Looks good to me, but someone else must approve build bot (Jenkins): Verified Martin L Roth: Looks good to me, approved
diff --git a/src/arch/x86/bootblock.ld b/src/arch/x86/bootblock.ld index d59eb27..6547985 100644 --- a/src/arch/x86/bootblock.ld +++ b/src/arch/x86/bootblock.ld @@ -17,19 +17,16 @@ . = _ebootblock - CONFIG_C_ENV_BOOTBLOCK_SIZE; #else . = BOOTBLOCK_TOP - PROGRAM_SZ; - . = ALIGN(64); + /* Page tables need to be at a 4K boundary so align the bootblock downwards */ + . = ALIGN(4096); + . -= 4096; #endif
_bootblock = .;
INCLUDE "bootblock/lib/program.ld"
- /* - * Allocation reserves extra space here. Alignment requirements - * may cause the total size of a section to change when the start - * address gets applied. - */ - PROGRAM_SZ = SIZEOF(.text) + 512; + PROGRAM_SZ = SIZEOF(.text);
. = MIN(_ECFW_PTR, MIN(_ID_SECTION, _FIT_POINTER)) - EARLYASM_SZ; . = CONFIG(SIPI_VECTOR_IN_ROM) ? ALIGN(4096) : ALIGN(16);