• Jeenu Viswambharan's avatar
    Define and use no_ret macro where no return is expected · a806dad5
    Jeenu Viswambharan authored
    
    
    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: default avatarDouglas Raillard <douglas.raillard@arm.com>
    Signed-off-by: default avatarJeenu Viswambharan <jeenu.viswambharan@arm.com>
    a806dad5
bl1_exceptions.S 8.76 KB