From 929dfec0bd0ac8228f3fd97baa53cf611efe4d2d Mon Sep 17 00:00:00 2001 From: Arthur Heymans Date: Mon, 5 Feb 2024 15:10:28 +0100 Subject: arch/x86/bootblock.ld: Align the base of bootblock downwards MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Change-Id: I78c6ba6e250ded3f04b12cd0c20b18cb653a1506 Reviewed-on: https://review.coreboot.org/c/coreboot/+/80346 Reviewed-by: Martin L Roth Reviewed-by: Jérémy Compostella Tested-by: build bot (Jenkins) --- src/arch/x86/bootblock.ld | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'src/arch/x86') diff --git a/src/arch/x86/bootblock.ld b/src/arch/x86/bootblock.ld index d59eb27a64..65479851ce 100644 --- a/src/arch/x86/bootblock.ld +++ b/src/arch/x86/bootblock.ld @@ -17,19 +17,16 @@ SECTIONS { . = _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); -- cgit v1.2.3