blob: 08e58e679e3e4e7c0bc19237c3ed944574cdd24e [file] [log] [blame]
Helge Dellerf6d12ee2013-10-23 23:29:16 +02001#ifndef _ASM_PARISC_DELAY_H
2#define _ASM_PARISC_DELAY_H
Linus Torvalds1da177e2005-04-16 15:20:36 -07003
4static __inline__ void __delay(unsigned long loops) {
5 asm volatile(
6 " .balignl 64,0x34000034\n"
7 " addib,UV -1,%0,.\n"
8 " nop\n"
9 : "=r" (loops) : "0" (loops));
10}
11
Helge Dellerf6d12ee2013-10-23 23:29:16 +020012extern void __udelay(unsigned long usecs);
13extern void __udelay_bad(unsigned long usecs);
Linus Torvalds1da177e2005-04-16 15:20:36 -070014
Helge Dellerf6d12ee2013-10-23 23:29:16 +020015static inline void udelay(unsigned long usecs)
16{
17 if (__builtin_constant_p(usecs) && (usecs) > 20000)
18 __udelay_bad(usecs);
19 __udelay(usecs);
Linus Torvalds1da177e2005-04-16 15:20:36 -070020}
21
Helge Dellerf6d12ee2013-10-23 23:29:16 +020022#endif /* _ASM_PARISC_DELAY_H */