MIPS: Microoptimize arch_{read,write}_lock
Ralf Baechle [Fri, 25 Mar 2011 17:45:13 +0000 (18:45 +0100)]
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

arch/mips/include/asm/spinlock.h

index 396e402..ca61e84 100644 (file)
@@ -245,16 +245,16 @@ static inline void arch_read_lock(arch_rwlock_t *rw)
                __asm__ __volatile__(
                "       .set    noreorder       # arch_read_lock        \n"
                "1:     ll      %1, %2                                  \n"
-               "       bltz    %1, 2f                                  \n"
+               "       bltz    %1, 3f                                  \n"
                "        addu   %1, 1                                   \n"
-               "       sc      %1, %0                                  \n"
+               "2:     sc      %1, %0                                  \n"
                "       beqz    %1, 1b                                  \n"
                "        nop                                            \n"
                "       .subsection 2                                   \n"
-               "2:     ll      %1, %2                                  \n"
-               "       bltz    %1, 2b                                  \n"
+               "3:     ll      %1, %2                                  \n"
+               "       bltz    %1, 3b                                  \n"
                "        addu   %1, 1                                   \n"
-               "       b       1b                                      \n"
+               "       b       2b                                      \n"
                "        nop                                            \n"
                "       .previous                                       \n"
                "       .set    reorder                                 \n"
@@ -324,16 +324,16 @@ static inline void arch_write_lock(arch_rwlock_t *rw)
                __asm__ __volatile__(
                "       .set    noreorder       # arch_write_lock       \n"
                "1:     ll      %1, %2                                  \n"
-               "       bnez    %1, 2f                                  \n"
+               "       bnez    %1, 3f                                  \n"
                "        lui    %1, 0x8000                              \n"
-               "       sc      %1, %0                                  \n"
-               "       beqz    %1, 2f                                  \n"
+               "2:     sc      %1, %0                                  \n"
+               "       beqz    %1, 3f                                  \n"
                "        nop                                            \n"
                "       .subsection 2                                   \n"
-               "2:     ll      %1, %2                                  \n"
-               "       bnez    %1, 2b                                  \n"
+               "3:     ll      %1, %2                                  \n"
+               "       bnez    %1, 3b                                  \n"
                "        lui    %1, 0x8000                              \n"
-               "       b       1b                                      \n"
+               "       b       2b                                      \n"
                "        nop                                            \n"
                "       .previous                                       \n"
                "       .set    reorder                                 \n"