• Torsten Duwe's avatar
    powerpc/ftrace: Add support for -mprofile-kernel ftrace ABI · 15308664
    Torsten Duwe authored
    The gcc switch -mprofile-kernel defines a new ABI for calling _mcount()
    very early in the function with minimal overhead.
    
    Although mprofile-kernel has been available since GCC 3.4, there were
    bugs which were only fixed recently. Currently it is known to work in
    GCC 4.9, 5 and 6.
    
    Additionally there are two possible code sequences generated by the
    flag, the first uses mflr/std/bl and the second is optimised to omit the
    std. Currently only gcc 6 has the optimised sequence. This patch
    supports both sequences.
    
    Initial work started by Vojtech Pavlik, used with permission.
    
    Key changes:
     - rework _mcount() to work for both the old and new ABIs.
     - implement new versions of ftrace_caller() and ftrace_graph_caller()
       which deal with the new ABI.
     - updates to __ftrace_make_nop() to recognise the new mcount calling
       sequence.
     - updates to __ftrace_make_call() to recognise the nop'ed sequence.
     - implement ftrace_modify_call().
     - updates to the module loader to surpress the toc save in the module
       stub when calling mcount with the new ABI.
    Reviewed-by: default avatarBalbir Singh <bsingharora@gmail.com>
    Signed-off-by: default avatarTorsten Duwe <duwe@suse.de>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    15308664
ftrace.c 14 KB