Skip to content

Commit

Permalink
microblaze: delay.h fix udelay and ndelay for 8 bit args
Browse files Browse the repository at this point in the history
Based on:
"asm-generic: delay.h fix udelay and ndelay for 8 bit args"
(sha1: a87e553)

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
  • Loading branch information
Michal Simek committed Jul 9, 2014
1 parent 163e407 commit ad1d435
Showing 1 changed file with 22 additions and 6 deletions.
28 changes: 22 additions & 6 deletions arch/microblaze/include/asm/delay.h
Original file line number Diff line number Diff line change
Expand Up @@ -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))

Expand Down

0 comments on commit ad1d435

Please sign in to comment.