diff options
author | Soby Mathew <soby.mathew@arm.com> | 2018-01-09 14:36:14 +0000 |
---|---|---|
committer | Soby Mathew <soby.mathew@arm.com> | 2018-02-26 16:31:10 +0000 |
commit | a6f340fe58b991882d075eed6916288fe4fa40c5 (patch) | |
tree | c29b8981449b06019c3695932ba6ef5bb4db1294 /bl31 | |
parent | 6d31020e90093456efb373cde446b07770d38953 (diff) | |
download | trusted-firmware-a-a6f340fe58b991882d075eed6916288fe4fa40c5.tar.gz |
Introduce the new BL handover interface
This patch introduces a new BL handover interface. It essentially allows
passing 4 arguments between the different BL stages. Effort has been made
so as to be compatible with the previous handover interface. The previous
blx_early_platform_setup() platform API is now deprecated and the new
blx_early_platform_setup2() variant is introduced. The weak compatiblity
implementation for the new API is done in the `plat_bl_common.c` file.
Some of the new arguments in the new API will be reserved for generic
code use when dynamic configuration support is implemented. Otherwise
the other registers are available for platform use.
Change-Id: Ifddfe2ea8e32497fe1beb565cac155ad9d50d404
Signed-off-by: Soby Mathew <soby.mathew@arm.com>
Diffstat (limited to 'bl31')
-rw-r--r-- | bl31/aarch64/bl31_entrypoint.S | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/bl31/aarch64/bl31_entrypoint.S b/bl31/aarch64/bl31_entrypoint.S index 419927d8eb..924f295aff 100644 --- a/bl31/aarch64/bl31_entrypoint.S +++ b/bl31/aarch64/bl31_entrypoint.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -23,13 +23,13 @@ func bl31_entrypoint #if !RESET_TO_BL31 /* --------------------------------------------------------------- - * Preceding bootloader has populated x0 with a pointer to a - * 'bl31_params' structure & x1 with a pointer to platform - * specific structure + * Stash the previous bootloader arguments x0 - x3 for later use. * --------------------------------------------------------------- */ mov x20, x0 mov x21, x1 + mov x22, x2 + mov x23, x3 /* --------------------------------------------------------------------- * For !RESET_TO_BL31 systems, only the primary CPU ever reaches @@ -47,13 +47,6 @@ func bl31_entrypoint _init_memory=0 \ _init_c_runtime=1 \ _exception_vectors=runtime_exceptions - - /* --------------------------------------------------------------------- - * Relay the previous bootloader's arguments to the platform layer - * --------------------------------------------------------------------- - */ - mov x0, x20 - mov x1, x21 #else /* --------------------------------------------------------------------- * For RESET_TO_BL31 systems which have a programmable reset address, @@ -75,15 +68,20 @@ func bl31_entrypoint * arguments passed to the platform layer to reflect that. * --------------------------------------------------------------------- */ - mov x0, 0 - mov x1, 0 + mov x20, 0 + mov x21, 0 + mov x22, 0 + mov x23, 0 #endif /* RESET_TO_BL31 */ - /* --------------------------------------------- * Perform platform specific early arch. setup * --------------------------------------------- */ - bl bl31_early_platform_setup + mov x0, x20 + mov x1, x21 + mov x2, x22 + mov x3, x23 + bl bl31_early_platform_setup2 bl bl31_plat_arch_setup /* --------------------------------------------- |