arch/x86: Top-align .init in bootblock
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 <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/47970 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
This commit is contained in:
parent
6c7441f5e6
commit
2289a70b6f
5 changed files with 48 additions and 5 deletions
|
|
@ -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 . : {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue