diff options
-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 |