mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-30 00:21:06 +00:00
arm64: Trap PIE builds early if load address is not 4K aligned
PIE requires a 4K aligned load address. If this is not met, trap the startup sequence in a WFI loop rather than running into obscure failures. Tested-by: Michal Simek <michal.simek@xilinx.com> Suggested-by: André Przywara <andre.przywara@arm.com> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> Reviewed-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
parent
11f4fbf0d4
commit
04d13b5d09
1 changed files with 17 additions and 0 deletions
|
@ -59,6 +59,23 @@ reset:
|
|||
save_boot_params_ret:
|
||||
|
||||
#if CONFIG_POSITION_INDEPENDENT
|
||||
/* Verify that we're 4K aligned. */
|
||||
adr x0, _start
|
||||
ands x0, x0, #0xfff
|
||||
b.eq 1f
|
||||
0:
|
||||
/*
|
||||
* FATAL, can't continue.
|
||||
* U-Boot needs to be loaded at a 4K aligned address.
|
||||
*
|
||||
* We use ADRP and ADD to load some symbol addresses during startup.
|
||||
* The ADD uses an absolute (non pc-relative) lo12 relocation
|
||||
* thus requiring 4K alignment.
|
||||
*/
|
||||
wfi
|
||||
b 0b
|
||||
1:
|
||||
|
||||
/*
|
||||
* Fix .rela.dyn relocations. This allows U-Boot to be loaded to and
|
||||
* executed at a different address than it was linked at.
|
||||
|
|
Loading…
Reference in a new issue