arm-trusted-firmware/lib
Jeenu Viswambharan a806dad58c 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>
2016-12-05 14:55:35 +00:00
..
aarch32 AArch32: Add memcpy4 function in assembly 2016-09-28 14:03:47 +01:00
aarch64 Refactor the xlat_tables library code 2016-04-13 12:06:23 +01:00
cpus AArch32: Add support for ARM Cortex-A32 MPCore Processor 2016-09-21 16:28:55 +01:00
el3_runtime Reset debug registers MDCR-EL3/SDCR and MDCR_EL2/HDCR 2016-11-09 15:45:06 +00:00
libfdt Minor libfdt changes to enable TF integration 2016-06-03 14:21:03 +01:00
locks Fix normal memory bakery lock implementation 2016-11-21 17:10:26 +00:00
pmf Add Performance Measurement Framework(PMF) 2016-06-16 08:31:42 +01:00
psci Define and use no_ret macro where no return is expected 2016-12-05 14:55:35 +00:00
semihosting AArch32: Common changes needed for BL1/BL2 2016-09-21 16:27:15 +01:00
stdlib Move stdlib header files to include/lib/stdlib 2016-06-03 14:20:48 +01:00
xlat_tables Automatically select initial xlation lookup level 2016-08-23 10:51:44 +01:00