MIPS: __delay ABI-dependent subtraction simplification
authorMaciej W. Rozycki <macro@linux-mips.org>
Sun, 6 Apr 2014 20:42:49 +0000 (21:42 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Fri, 30 May 2014 19:01:08 +0000 (21:01 +0200)
This small update to the previous fix to __delay removes a conditional
around the ABI-dependent subtraction operation within an inline asm in
favor to the standard <asm/asm.h> LONG_SUBU macro.  No change in code
produced.

Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/6703/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/lib/delay.c

index 705cfb7c1a74e0843e40567219024882ab932ac9..21d27c6819a2fd813e56bde24924950abdcd9004 100644 (file)
@@ -11,7 +11,9 @@
 #include <linux/module.h>
 #include <linux/param.h>
 #include <linux/smp.h>
+#include <linux/stringify.h>
 
+#include <asm/asm.h>
 #include <asm/compiler.h>
 #include <asm/war.h>
 
@@ -27,11 +29,7 @@ void __delay(unsigned long loops)
        "       .set    noreorder                               \n"
        "       .align  3                                       \n"
        "1:     bnez    %0, 1b                                  \n"
-#if BITS_PER_LONG == 32
-       "       subu    %0, %1                                  \n"
-#else
-       "       dsubu   %0, %1                                  \n"
-#endif
+       "        " __stringify(LONG_SUBU) "     %0, %1          \n"
        "       .set    reorder                                 \n"
        : "=r" (loops)
        : GCC_DADDI_IMM_ASM() (1), "0" (loops));