Merge branch 'torvalds/master'
[firefly-linux-kernel-4.4.55.git] / arch / microblaze / include / asm / delay.h
index 05b7d39e4391218775b701c12d5138b25ca2ca34..ea2a9cd9b15984a18065e8c4cdb52d962ae4ae91 100644 (file)
@@ -13,7 +13,9 @@
 #ifndef _ASM_MICROBLAZE_DELAY_H
 #define _ASM_MICROBLAZE_DELAY_H
 
-extern inline void __delay(unsigned long loops)
+#include <linux/param.h>
+
+static inline void __delay(unsigned long loops)
 {
        asm volatile ("# __delay                \n\t"           \
                        "1: addi        %0, %0, -1\t\n"         \
@@ -41,7 +43,7 @@ extern inline void __delay(unsigned long loops)
 
 extern unsigned long loops_per_jiffy;
 
-extern inline void __udelay(unsigned int x)
+static inline void __udelay(unsigned int x)
 {
 
        unsigned long long tmp =
@@ -59,13 +61,29 @@ extern inline void __udelay(unsigned int x)
 extern void __bad_udelay(void);                /* deliberately undefined */
 extern void __bad_ndelay(void);                /* deliberately undefined */
 
-#define udelay(n) (__builtin_constant_p(n) ? \
-       ((n) > __MAX_UDELAY ? __bad_udelay() : __udelay((n) * (19 * HZ))) : \
-       __udelay((n) * (19 * HZ)))
+#define udelay(n)                                              \
+       ({                                                      \
+               if (__builtin_constant_p(n)) {                  \
+                       if ((n) / __MAX_UDELAY >= 1)            \
+                               __bad_udelay();                 \
+                       else                                    \
+                               __udelay((n) * (19 * HZ));      \
+               } else {                                        \
+                       __udelay((n) * (19 * HZ));              \
+               }                                               \
+       })
 
-#define ndelay(n) (__builtin_constant_p(n) ? \
-       ((n) > __MAX_NDELAY ? __bad_ndelay() : __udelay((n) * HZ)) : \
-       __udelay((n) * HZ))
+#define ndelay(n)                                              \
+       ({                                                      \
+               if (__builtin_constant_p(n)) {                  \
+                       if ((n) / __MAX_NDELAY >= 1)            \
+                               __bad_ndelay();                 \
+                       else                                    \
+                               __udelay((n) * HZ);             \
+               } else {                                        \
+                       __udelay((n) * HZ);                     \
+               }                                               \
+       })
 
 #define muldiv(a, b, c)                (((a)*(b))/(c))