diff options
author | Juan Castillo <jcastillo.devel@gmail.com> | 2015-10-05 16:59:38 +0100 |
---|---|---|
committer | Juan Castillo <juan.castillo@arm.com> | 2015-10-20 16:53:53 +0100 |
commit | e3f6712409c54b03f42869faeff0cf8d8af9245e (patch) | |
tree | ab5c493411dbef7fb12a40b3233d828b70d551e0 | |
parent | 1fe4d4537e51f69014be057c39a1b5145e9c5930 (diff) |
Add optional bl1_plat_prepare_exit() API
This patch adds an optional API to the platform port:
void bl1_plat_prepare_exit(void);
This function is called prior to exiting BL1 in response to the
RUN_IMAGE_SMC request raised by BL2. It should be used to perform
platform specific clean up or bookkeeping operations before
transferring control to the next image.
A weak empty definition of this function has been provided to
preserve platform backwards compatibility.
Change-Id: Iec09697de5c449ae84601403795cdb6aca166ba1
-rw-r--r-- | bl1/aarch64/bl1_exceptions.S | 2 | ||||
-rw-r--r-- | docs/porting-guide.md | 11 | ||||
-rw-r--r-- | plat/common/aarch64/platform_helpers.S | 10 |
3 files changed, 23 insertions, 0 deletions
diff --git a/bl1/aarch64/bl1_exceptions.S b/bl1/aarch64/bl1_exceptions.S index ca86107c..ef390d46 100644 --- a/bl1/aarch64/bl1_exceptions.S +++ b/bl1/aarch64/bl1_exceptions.S @@ -207,6 +207,8 @@ func smc_handler64 bl disable_mmu_icache_el3 tlbi alle3 + bl bl1_plat_prepare_exit + ldp x6, x7, [x20, #(ENTRY_POINT_INFO_ARGS_OFFSET + 0x30)] ldp x4, x5, [x20, #(ENTRY_POINT_INFO_ARGS_OFFSET + 0x20)] ldp x2, x3, [x20, #(ENTRY_POINT_INFO_ARGS_OFFSET + 0x10)] diff --git a/docs/porting-guide.md b/docs/porting-guide.md index 50d36ea2..c369844c 100644 --- a/docs/porting-guide.md +++ b/docs/porting-guide.md @@ -788,6 +788,17 @@ the entry point set by loader and also set the security state and SPSR which represents the entry point system state for BL2. +### Function : bl1_plat_prepare_exit() [optional] + + Argument : void + Return : void + +This function is called prior to exiting BL1 in response to the `RUN_IMAGE_SMC` +request raised by BL2. It should be used to perform platform specific clean up +or bookkeeping operations before transferring control to the next image. This +function runs with MMU disabled. + + 3.2 Boot Loader Stage 2 (BL2) ----------------------------- diff --git a/plat/common/aarch64/platform_helpers.S b/plat/common/aarch64/platform_helpers.S index 9f4b672a..f51d24e6 100644 --- a/plat/common/aarch64/platform_helpers.S +++ b/plat/common/aarch64/platform_helpers.S @@ -37,6 +37,7 @@ .weak plat_crash_console_putc .weak plat_reset_handler .weak plat_disable_acp + .weak bl1_plat_prepare_exit #if !ENABLE_PLAT_COMPAT .globl platform_get_core_pos @@ -111,3 +112,12 @@ endfunc plat_reset_handler func plat_disable_acp ret endfunc plat_disable_acp + + /* ----------------------------------------------------- + * void bl1_plat_prepare_exit(void); + * Called before exiting BL1. Default: do nothing + * ----------------------------------------------------- + */ +func bl1_plat_prepare_exit + ret +endfunc bl1_plat_prepare_exit |