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
This commit is contained in:
Juan Castillo 2015-10-05 16:59:38 +01:00 committed by Juan Castillo
parent 1fe4d4537e
commit e3f6712409
3 changed files with 23 additions and 0 deletions

View File

@ -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)]

View File

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

View File

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