From bf031bba2b9dfc994a7d0c18dfc5e64469cee480 Mon Sep 17 00:00:00 2001 From: Sandrine Bailleux Date: Tue, 2 Jun 2015 17:19:43 +0100 Subject: 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 --- services/std_svc/psci/psci_entry.S | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'services/std_svc/psci/psci_entry.S') diff --git a/services/std_svc/psci/psci_entry.S b/services/std_svc/psci/psci_entry.S index 3f221590..050f6c6c 100644 --- a/services/std_svc/psci/psci_entry.S +++ b/services/std_svc/psci/psci_entry.S @@ -57,6 +57,11 @@ psci_aff_common_finish_entry: * On the warm boot path, most of the EL3 initialisations performed by * 'el3_entrypoint_common' must be skipped: * + * - Only when the platform bypasses the BL1/BL3-1 entrypoint by + * programming the reset address do we need to set the CPU endianness. + * In other cases, we assume this has been taken care by the + * entrypoint code. + * * - No need to determine the type of boot, we know it is a warm boot. * * - Do not try to distinguish between primary and secondary CPUs, this @@ -66,7 +71,7 @@ psci_aff_common_finish_entry: * it has been done once and for all on the cold boot path. */ el3_entrypoint_common \ - _set_endian=0 \ + _set_endian=PROGRAMMABLE_RESET_ADDRESS \ _warm_boot_mailbox=0 \ _secondary_cold_boot=0 \ _init_memory=0 \ -- cgit v1.2.3