The start position for an ins instruction is always encoded as an
immediate, so allowing registers to be used by the inline asm makes no
sense. It should never happen anyway since a bit index should always be
small enough to be treated as an immediate, but remove the nonsensical
"r" for sanity.

Signed-off-by: Paul Burton <paul.bur...@mips.com>
---

 arch/mips/include/asm/bitops.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/mips/include/asm/bitops.h b/arch/mips/include/asm/bitops.h
index b8785bdf3507..83fd1f1c3ab4 100644
--- a/arch/mips/include/asm/bitops.h
+++ b/arch/mips/include/asm/bitops.h
@@ -85,7 +85,7 @@ static inline void set_bit(unsigned long nr, volatile 
unsigned long *addr)
                        "       " __INS "%0, %3, %2, 1                  \n"
                        "       " __SC "%0, %1                          \n"
                        : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m)
-                       : "ir" (bit), "r" (~0)
+                       : "i" (bit), "r" (~0)
                        : __LLSC_CLOBBER);
                } while (unlikely(!temp));
                return;
@@ -150,7 +150,7 @@ static inline void clear_bit(unsigned long nr, volatile 
unsigned long *addr)
                        "       " __INS "%0, $0, %2, 1                  \n"
                        "       " __SC "%0, %1                          \n"
                        : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m)
-                       : "ir" (bit)
+                       : "i" (bit)
                        : __LLSC_CLOBBER);
                } while (unlikely(!temp));
                return;
@@ -383,7 +383,7 @@ static inline int test_and_clear_bit(unsigned long nr,
                        "       " __INS "%0, $0, %3, 1                  \n"
                        "       " __SC  "%0, %1                         \n"
                        : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m), "=&r" 
(res)
-                       : "ir" (bit)
+                       : "i" (bit)
                        : __LLSC_CLOBBER);
                } while (unlikely(!temp));
        } else {
-- 
2.23.0

Reply via email to