From 2289a70b6f5fa14f3e008bc6041d8a8bd4ef956b Mon Sep 17 00:00:00 2001 From: Kyösti Mälkki Date: Sat, 21 Dec 2019 10:17:56 +0200 Subject: arch/x86: Top-align .init in bootblock MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Link .init section near the end of bootblock program. It contains _start16bit, gdtptr and gdt that must be addressable from realmode, thus within top 64 KiB. Change-Id: If7b9737650362ac7cd82685cfdfaf18bd2429238 Signed-off-by: Kyösti Mälkki Reviewed-on: https://review.coreboot.org/c/coreboot/+/47970 Tested-by: build bot (Jenkins) Reviewed-by: Arthur Heymans --- src/soc/amd/common/block/cpu/noncar/memlayout_x86.ld | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/soc/amd/common/block/cpu') diff --git a/src/soc/amd/common/block/cpu/noncar/memlayout_x86.ld b/src/soc/amd/common/block/cpu/noncar/memlayout_x86.ld index 352472e18b..e1f2765ebb 100644 --- a/src/soc/amd/common/block/cpu/noncar/memlayout_x86.ld +++ b/src/soc/amd/common/block/cpu/noncar/memlayout_x86.ld @@ -110,6 +110,22 @@ SECTIONS { _TOO_LOW = _X86_RESET_VECTOR - 0xfff0; _bogus = ASSERT(_start16bit >= _TOO_LOW, "_start16bit too low. Please report."); + . = _X86_RESET_VECTOR - EARLYASM_SZ; + . = ALIGN(16); + BOOTBLOCK_TOP = .; + .init (.) : { + *(.init._start); + *(.init); + *(.init.*); + } + + /* + * Allocation reserves extra space here. Alignment requirements + * may cause the total size of a section to change when the start + * address gets applied. + */ + EARLYASM_SZ = SIZEOF(.init) + 16; + . = BOOTBLOCK_END - 0x10; _X86_RESET_VECTOR = .; .reset . : { -- cgit v1.2.3