• Paul Burton's avatar
    MIPS: End spinlocks with .insn · 71071ed7
    Paul Burton authored
    commit 4b5347a2 upstream.
    
    When building for microMIPS we need to ensure that the assembler always
    knows that there is code at the target of a branch or jump. Recent
    toolchains will fail to link a microMIPS kernel when this isn't the case
    due to what it thinks is a branch to non-microMIPS code.
    
    mips-mti-linux-gnu-ld kernel/built-in.o: .spinlock.text+0x2fc: Unsupported branch between ISA modes.
    mips-mti-linux-gnu-ld final link failed: Bad value
    
    This is due to inline assembly labels in spinlock.h not being followed
    by an instruction mnemonic, either due to a .subsection pseudo-op or the
    end of the inline asm block.
    
    Fix this with a .insn direction after such labels.
    Signed-off-by: default avatarPaul Burton <paul.burton@imgtec.com>
    Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
    Reviewed-by: default avatarMaciej W. Rozycki <macro@imgtec.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/15325/Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    71071ed7
spinlock.h 10.3 KB