summaryrefslogtreecommitdiff
path: root/arch/microblaze/include/asm
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-08-07 09:02:26 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2014-08-07 09:02:26 -0700
commit7f0d32e0c1a7a23216a0f2694ec841f60e9dddfd (patch)
tree4315f3b01fdb31c165911bf44271ee48110c1006 /arch/microblaze/include/asm
parent8b076738593244000c003111e67dba49bbbafab0 (diff)
parentef264cf0c490cc9d46edb3b6aa082d23a9506e2d (diff)
Merge tag 'microblaze-3.17-rc1' of git://git.monstr.eu/linux-2.6-microblaze
Pull microblaze updates from Michal Simek: - add new syscall and fix comment - fix udelay implementation - fix libgcc for modules * tag 'microblaze-3.17-rc1' of git://git.monstr.eu/linux-2.6-microblaze: microblaze: Change libgcc-style functions from lib-y to obj-y microblaze: Wire-up renameat2 syscall microblaze: Add syscall number comment microblaze: delay.h fix udelay and ndelay for 8 bit args
Diffstat (limited to 'arch/microblaze/include/asm')
-rw-r--r--arch/microblaze/include/asm/delay.h28
1 files changed, 22 insertions, 6 deletions
diff --git a/arch/microblaze/include/asm/delay.h b/arch/microblaze/include/asm/delay.h
index 66fc24c24238..60cb39deb533 100644
--- a/arch/microblaze/include/asm/delay.h
+++ b/arch/microblaze/include/asm/delay.h
@@ -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))