• James Hogan's avatar
    MIPS: Fix little endian microMIPS MSA encodings · 6e1b29c3
    James Hogan authored
    When the toolchain doesn't support MSA we encode MSA instructions
    explicitly in assembly. Unfortunately we use .word for both MIPS and
    microMIPS encodings which is wrong, since 32-bit microMIPS instructions
    are made up from a pair of halfwords.
    
    - The most significant halfword always comes first, so for little endian
      builds the halves will be emitted in the wrong order.
    
    - 32-bit alignment isn't guaranteed, so the assembler may insert a
      16-bit nop instruction to pad the instruction stream to a 32-bit
      boundary.
    
    Use the new instruction encoding macros to encode microMIPS MSA
    instructions correctly.
    
    Fixes: d96cc3d1 ("MIPS: Add microMIPS MSA support.")
    Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
    Cc: Paul Burton <Paul.Burton@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/13312/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    6e1b29c3
msa.h 7.97 KB