arch/x86: Top-align .text in bootblock
Move .text section closer to .init. This reduces the size of the flat bootblock binary and footprint in CBFS. Change-Id: I64325bd633e1104853cfb928c7f801d94ff3045a Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/47971 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
This commit is contained in:
parent
2289a70b6f
commit
49dbbe99c2
|
@ -191,6 +191,9 @@ config C_ENV_BOOTBLOCK_SIZE
|
||||||
hex
|
hex
|
||||||
default 0x10000
|
default 0x10000
|
||||||
|
|
||||||
|
config FIXED_BOOTBLOCK_SIZE
|
||||||
|
bool
|
||||||
|
|
||||||
# Default address romstage is to be linked at
|
# Default address romstage is to be linked at
|
||||||
config ROMSTAGE_ADDR
|
config ROMSTAGE_ADDR
|
||||||
hex
|
hex
|
||||||
|
|
|
@ -12,12 +12,25 @@ ap_sipi_vector_in_rom = (_start16bit >> 12) & 0xff;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SECTIONS {
|
SECTIONS {
|
||||||
|
|
||||||
|
#if CONFIG(FIXED_BOOTBLOCK_SIZE)
|
||||||
. = _ebootblock - CONFIG_C_ENV_BOOTBLOCK_SIZE;
|
. = _ebootblock - CONFIG_C_ENV_BOOTBLOCK_SIZE;
|
||||||
|
#else
|
||||||
|
. = BOOTBLOCK_TOP - PROGRAM_SZ;
|
||||||
|
. = ALIGN(16);
|
||||||
|
#endif
|
||||||
|
|
||||||
_bootblock = .;
|
_bootblock = .;
|
||||||
|
|
||||||
INCLUDE "bootblock/lib/program.ld"
|
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;
|
||||||
|
|
||||||
. = MIN(_ID_SECTION, _FIT_POINTER) - EARLYASM_SZ;
|
. = MIN(_ID_SECTION, _FIT_POINTER) - EARLYASM_SZ;
|
||||||
. = CONFIG(SIPI_VECTOR_IN_ROM) ? ALIGN(4096) : ALIGN(16);
|
. = CONFIG(SIPI_VECTOR_IN_ROM) ? ALIGN(4096) : ALIGN(16);
|
||||||
BOOTBLOCK_TOP = .;
|
BOOTBLOCK_TOP = .;
|
||||||
|
@ -66,3 +79,5 @@ SECTIONS {
|
||||||
_bogus1 = ASSERT(_bootblock & 0x80000000, "_bootblock too low, invalid ld script");
|
_bogus1 = ASSERT(_bootblock & 0x80000000, "_bootblock too low, invalid ld script");
|
||||||
_bogus2 = ASSERT(_start16bit & 0x80000000, "_start16bit too low, invalid ld script");
|
_bogus2 = ASSERT(_start16bit & 0x80000000, "_start16bit too low, invalid ld script");
|
||||||
_bogus3 = ASSERT(_start16bit >= 0xffff0000, "_start16bit too low. Please report.");
|
_bogus3 = ASSERT(_start16bit >= 0xffff0000, "_start16bit too low. Please report.");
|
||||||
|
_bogus4 = ASSERT(_ebootblock - _bootblock <= CONFIG_C_ENV_BOOTBLOCK_SIZE,
|
||||||
|
"_bootblock too low, increase C_ENV_BOOTBLOCK_SIZE");
|
||||||
|
|
Loading…
Reference in New Issue