• Paul Burton's avatar
    MIPS: genex: Don't reload address unnecessarily · 4dee90d7
    Paul Burton authored
    In ejtag_debug_handler() we must reload the address of
    ejtag_debug_buffer_spinlock if an sc fails, since the address in k0 will
    have been clobbered by the result of the sc instruction. In the case
    where we simply load a non-zero value (ie. there's contention for the
    lock) the address will not be clobbered & we can simply branch back to
    repeat the load from memory without reloading the address into k0.
    
    The primary motivation for this change is that it moves the target of
    the bnez instruction to an instruction within the LL/SC loop (the LL
    itself), which we know contains no other memory accesses & therefore
    isn't affected by Loongson3 LL/SC errata.
    Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
    Cc: linux-mips@vger.kernel.org
    Cc: Huacai Chen <chenhc@lemote.com>
    Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>
    Cc: linux-kernel@vger.kernel.org
    4dee90d7
genex.S 14 KB