|
@@ -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.
|