• Ralf Baechle's avatar
    MIPS: Get rid of branches to .subsections. · 7837314d
    Ralf Baechle authored
    It was a nice optimization - on paper at least.  In practice it results in
    branches that may exceed the maximum legal range for a branch.  We can
    fight that problem with -ffunction-sections but -ffunction-sections again
    is incompatible with -pg used by the function tracer.
    
    By rewriting the loop around all simple LL/SC blocks to C we reduce the
    amount of inline assembler and at the same time allow GCC to often fill
    the branch delay slots with something sensible or whatever else clever
    optimization it may have up in its sleeve.
    
    With this optimization gone we also no longer need -ffunction-sections,
    so drop it.
    
    This optimization was originally introduced in 2.6.21, commit
    5999eca25c1fd4b9b9aca7833b04d10fe4bc877d (linux-mips.org) rsp.
    f65e4fa8 (kernel.org).
    
    Original fix for the issues which caused me to pull this optimization by
    Paul Gortmaker <paul.gortmaker@windriver.com>.
    Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    7837314d
atomic.h 17.6 KB