MIPS: fix read_msa_* & write_msa_* functions on non-MSA toolchains
authorPaul Burton <paul.burton@imgtec.com>
Fri, 11 Jul 2014 15:44:33 +0000 (16:44 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Fri, 1 Aug 2014 22:06:44 +0000 (00:06 +0200)
Commit d96cc3d1ec5d "MIPS: Add microMIPS MSA support." attempted to use
the value of a macro within an inline asm statement but instead emitted
a comment leading to the cfcmsa & ctcmsa instructions being omitted. Fix
that by passing CFC_MSA_INSN & CTC_MSA_INSN as arguments to the asm
statements.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/7305/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/include/asm/msa.h

index fe25a17bc7834336edcae558f19d9c503797d704..af5638b12c756794b72df9adaeee27a828e1ddc7 100644 (file)
@@ -115,10 +115,10 @@ static inline unsigned int read_msa_##name(void)          \
        "       .set    push\n"                                 \
        "       .set    noat\n"                                 \
        "       .insn\n"                                        \
-       "       .word   #CFC_MSA_INSN | (" #cs " << 11)\n"      \
+       "       .word   %1 | (" #cs " << 11)\n"                 \
        "       move    %0, $1\n"                               \
        "       .set    pop\n"                                  \
-       : "=r"(reg));                                           \
+       : "=r"(reg) : "i"(CFC_MSA_INSN));                       \
        return reg;                                             \
 }                                                              \
                                                                \
@@ -129,9 +129,9 @@ static inline void write_msa_##name(unsigned int val)               \
        "       .set    noat\n"                                 \
        "       move    $1, %0\n"                               \
        "       .insn\n"                                        \
-       "       .word   #CTC_MSA_INSN | (" #cs " << 6)\n"       \
+       "       .word   %1 | (" #cs " << 6)\n"                  \
        "       .set    pop\n"                                  \
-       : : "r"(val));                                          \
+       : : "r"(val), "i"(CTC_MSA_INSN));                       \
 }
 
 #endif /* !TOOLCHAIN_SUPPORTS_MSA */