]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/microblaze/include/asm/delay.h
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph...
[karo-tx-linux.git] / arch / microblaze / include / asm / delay.h
index 66fc24c24238f64cac057fa33e9b330af10867e3..60cb39deb533975c690f4f47240e1e9c7cd2d68c 100644 (file)
@@ -61,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))