summaryrefslogtreecommitdiff
path: root/bl31
diff options
context:
space:
mode:
authorSandrine Bailleux <sandrine.bailleux@arm.com>2015-06-02 17:19:43 +0100
committerSandrine Bailleux <sandrine.bailleux@arm.com>2015-06-04 11:38:58 +0100
commitbf031bba2b9dfc994a7d0c18dfc5e64469cee480 (patch)
tree883cd29a4f171803bd1ea65e34b41f73501757db /bl31
parent52010cc779a59f2bc8a23fa5754630a6e63119a4 (diff)
Introduce PROGRAMMABLE_RESET_ADDRESS build option
This patch introduces a new platform build option, called PROGRAMMABLE_RESET_ADDRESS, which tells whether the platform has a programmable or fixed reset vector address. If the reset vector address is fixed then the code relies on the platform_get_entrypoint() mailbox mechanism to figure out where it is supposed to jump. On the other hand, if it is programmable then it is assumed that the platform code will program directly the right address into the RVBAR register (instead of using the mailbox redirection) so the mailbox is ignored in this case. Change-Id: If59c3b11fb1f692976e1d8b96c7e2da0ebfba308
Diffstat (limited to 'bl31')
-rw-r--r--bl31/aarch64/bl31_entrypoint.S8
1 files changed, 7 insertions, 1 deletions
diff --git a/bl31/aarch64/bl31_entrypoint.S b/bl31/aarch64/bl31_entrypoint.S
index 5350f68f..5ba0f9cc 100644
--- a/bl31/aarch64/bl31_entrypoint.S
+++ b/bl31/aarch64/bl31_entrypoint.S
@@ -76,9 +76,15 @@ func bl31_entrypoint
mov x0, x20
mov x1, x21
#else
+ /* ---------------------------------------------------------------------
+ * For RESET_TO_BL31 systems which have a programmable reset address,
+ * bl31_entrypoint() is executed only on the cold boot path so we can
+ * skip the warm boot mailbox mechanism.
+ * ---------------------------------------------------------------------
+ */
el3_entrypoint_common \
_set_endian=1 \
- _warm_boot_mailbox=1 \
+ _warm_boot_mailbox=!PROGRAMMABLE_RESET_ADDRESS \
_secondary_cold_boot=1 \
_init_memory=1 \
_init_c_runtime=1 \