• Heiko Carstens's avatar
    s390/ftrace: optimize mcount code · 3d1e220d
    Heiko Carstens authored
    Reduce the number of executed instructions within the mcount block if
    function tracing is enabled. We achieve that by using a non-standard
    C function call ABI. Since the called function is also written in
    assembler this is not a problem.
    This also allows to replace the unconditional store at the beginning
    of the mcount block with a larl instruction, which doesn't touch
    memory.
    
    In theory we could also patch the first instruction of the mcount block
    to enable and disable function tracing. However this would break kprobes.
    This could be fixed with implementing the "kprobes_on_ftrace" feature;
    however keeping the odd jprobes working seems not to be possible without
    a lot of code churn. Therefore keep the code easy and simply accept one
    wasted 1-cycle "larl" instruction per function prologue.
    Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    3d1e220d
ftrace.c 6.44 KB