mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-05-09 02:51:21 +00:00
Define and use no_ret macro where no return is expected
There are many instances in ARM Trusted Firmware where control is transferred to functions from which return isn't expected. Such jumps are made using 'bl' instruction to provide the callee with the location from which it was jumped to. Additionally, debuggers infer the caller by examining where 'lr' register points to. If a 'bl' of the nature described above falls at the end of an assembly function, 'lr' will be left pointing to a location outside of the function range. This misleads the debugger back trace. This patch defines a 'no_ret' macro to be used when jumping to functions from which return isn't expected. The macro ensures to use 'bl' instruction for the jump, and also, for debug builds, places a 'nop' instruction immediately thereafter (unless instructed otherwise) so as to leave 'lr' pointing within the function range. Change-Id: Ib34c69fc09197cfd57bc06e147cc8252910e01b0 Co-authored-by: Douglas Raillard <douglas.raillard@arm.com> Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
This commit is contained in:
parent
c59428b150
commit
a806dad58c
19 changed files with 122 additions and 78 deletions
|
@ -176,5 +176,5 @@ endfunc do_stack_maintenance
|
|||
func psci_power_down_wfi
|
||||
dsb sy // ensure write buffer empty
|
||||
wfi
|
||||
bl plat_panic_handler
|
||||
no_ret plat_panic_handler
|
||||
endfunc psci_power_down_wfi
|
||||
|
|
|
@ -167,7 +167,7 @@ endfunc psci_do_pwrup_cache_maintenance
|
|||
func psci_power_down_wfi
|
||||
dsb sy // ensure write buffer empty
|
||||
wfi
|
||||
bl plat_panic_handler
|
||||
no_ret plat_panic_handler
|
||||
endfunc psci_power_down_wfi
|
||||
|
||||
/* -----------------------------------------------------------------------
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue