diff options
author | Juan Castillo <juan.castillo@arm.com> | 2015-09-25 15:41:14 +0100 |
---|---|---|
committer | Juan Castillo <juan.castillo@arm.com> | 2015-10-28 09:13:40 +0000 |
commit | 40fc6cd1416b94eacb96d56015a8989fc053d9fe (patch) | |
tree | 7e01145c33d2b25da097472ba917a447f5e9df57 /plat/common/aarch64 | |
parent | 8d91ecfe3c04ed8a56a9b59768757ce853904420 (diff) |
Add optional platform error handler API
This patch adds an optional API to the platform port:
void plat_error_handler(int err) __dead2;
The platform error handler is called when there is a specific error
condition after which Trusted Firmware cannot continue. While panic()
simply prints the crash report (if enabled) and spins, the platform
error handler can be used to hand control over to the platform port
so it can perform specific bookeeping or post-error actions (for
example, reset the system). This function must not return.
The parameter indicates the type of error using standard codes from
errno.h. Possible errors reported by the generic code are:
-EAUTH : a certificate or image could not be authenticated
(when Trusted Board Boot is enabled)
-ENOENT : the requested image or certificate could not be found
or an IO error was detected
-ENOMEM : resources exhausted. Trusted Firmware does not use
dynamic memory, so this error is usually an indication
of an incorrect array size
A default weak implementation of this function has been provided.
It simply implements an infinite loop.
Change-Id: Iffaf9eee82d037da6caa43b3aed51df555e597a3
Diffstat (limited to 'plat/common/aarch64')
-rw-r--r-- | plat/common/aarch64/platform_helpers.S | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/plat/common/aarch64/platform_helpers.S b/plat/common/aarch64/platform_helpers.S index f51d24e6..56b88bc0 100644 --- a/plat/common/aarch64/platform_helpers.S +++ b/plat/common/aarch64/platform_helpers.S @@ -38,6 +38,7 @@ .weak plat_reset_handler .weak plat_disable_acp .weak bl1_plat_prepare_exit + .weak plat_error_handler #if !ENABLE_PLAT_COMPAT .globl platform_get_core_pos @@ -121,3 +122,12 @@ endfunc plat_disable_acp func bl1_plat_prepare_exit ret endfunc bl1_plat_prepare_exit + + /* ----------------------------------------------------- + * void plat_error_handler(int err) __dead2; + * Endless loop by default. + * ----------------------------------------------------- + */ +func plat_error_handler + b plat_error_handler +endfunc plat_error_handler |