Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
f57e2db6
Commit
f57e2db6
authored
Oct 28, 2015
by
danh-arm
Browse files
Merge pull request #415 from jcastillo-arm/jc/plat_err_handler
Add optional platform error handler API
parents
ece32c4f
40fc6cd1
Changes
5
Hide whitespace changes
Inline
Side-by-side
bl1/bl1_main.c
View file @
f57e2db6
...
...
@@ -174,12 +174,8 @@ void bl1_main(void)
&
bl2_ep
);
if
(
err
)
{
/*
* TODO: print failure to load BL2 but also add a tzwdog timer
* which will reset the system eventually.
*/
ERROR
(
"Failed to load BL2 firmware.
\n
"
);
p
anic
(
);
p
lat_error_handler
(
err
);
}
/*
...
...
bl2/bl2_main.c
View file @
f57e2db6
...
...
@@ -219,7 +219,7 @@ void bl2_main(void)
e
=
load_bl30
();
if
(
e
)
{
ERROR
(
"Failed to load BL3-0 (%i)
\n
"
,
e
);
p
anic
(
);
p
lat_error_handler
(
e
);
}
/* Perform platform setup in BL2 after loading BL3-0 */
...
...
@@ -235,14 +235,14 @@ void bl2_main(void)
e
=
load_bl31
(
bl2_to_bl31_params
,
bl31_ep_info
);
if
(
e
)
{
ERROR
(
"Failed to load BL3-1 (%i)
\n
"
,
e
);
p
anic
(
);
p
lat_error_handler
(
e
);
}
e
=
load_bl32
(
bl2_to_bl31_params
);
if
(
e
)
{
if
(
e
==
-
EAUTH
)
{
ERROR
(
"Failed to authenticate BL3-2
\n
"
);
p
anic
(
);
p
lat_error_handler
(
e
);
}
else
{
WARN
(
"Failed to load BL3-2 (%i)
\n
"
,
e
);
}
...
...
@@ -251,7 +251,7 @@ void bl2_main(void)
e
=
load_bl33
(
bl2_to_bl31_params
);
if
(
e
)
{
ERROR
(
"Failed to load BL3-3 (%i)
\n
"
,
e
);
p
anic
(
);
p
lat_error_handler
(
e
);
}
/* Flush the params to be passed to memory */
...
...
docs/porting-guide.md
View file @
f57e2db6
...
...
@@ -650,6 +650,27 @@ it has restrictions for stack usage and it can use the registers x0 - x17 as
scratch registers. It should preserve the value in x18 register as it is used
by the caller to store the return address.
### Function : plat_error_handler()
Argument : int
Return : void
This API is called when the generic code encounters an error situation from
which it cannot continue. It allows the platform to perform error reporting or
recovery 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
The default implementation simply spins.
3. Modifications specific to a Boot Loader stage
-------------------------------------------------
...
...
include/plat/common/platform.h
View file @
f57e2db6
...
...
@@ -81,6 +81,7 @@ unsigned long plat_get_my_stack(void);
void
plat_report_exception
(
unsigned
long
);
int
plat_crash_console_init
(
void
);
int
plat_crash_console_putc
(
int
c
);
void
plat_error_handler
(
int
err
)
__dead2
;
/*******************************************************************************
* Mandatory BL1 functions
...
...
plat/common/aarch64/platform_helpers.S
View file @
f57e2db6
...
...
@@ -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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment