• Yousong Zhou's avatar
    MIPS: UAPI: Fix unrecognized opcode WSBH/DSBH/DSHD when using MIPS16. · e0d8b2ec
    Yousong Zhou authored
    The nomips16 has to be added both as function attribute and assembler
    directive.
    
    When only function attribute is specified, the compiler will inline the
    function with -Os optimization.  The generated assembly code cannot be
    correctly assembled because ISA mode switch has to be done through jump
    instruction.
    
    When only ".set nomips16" directive is used, the generated assembly code
    will use MIPS32 code for the inline assembly template and MIPS16 for the
    function return.  The compiled binary is invalid:
    
        00403100 <__arch_swab16>:
          403100:   7c0410a0    wsbh    v0,a0
          403104:   e820ea31    swc2    $0,-5583(at)
    
    while correct code should be:
    
        00402650 <__arch_swab16>:
          402650:   7c0410a0    wsbh    v0,a0
          402654:   03e00008    jr  ra
          402658:   3042ffff    andi    v0,v0,0xffff
    Signed-off-by: default avatarYousong Zhou <yszhou4tech@gmail.com>
    Cc: Chen Jie <chenj@lemote.com>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/11087/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    e0d8b2ec
swab.h 1.53 KB