blob: 841b506b702ab76be3aec4e4d7ad23092fb0879f [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Helge Dellerf6d12ee2013-10-23 23:29:16 +02002#ifndef _ASM_PARISC_DELAY_H
3#define _ASM_PARISC_DELAY_H
Linus Torvalds1da177e2005-04-16 15:20:36 -07004
5static __inline__ void __delay(unsigned long loops) {
6 asm volatile(
7 " .balignl 64,0x34000034\n"
8 " addib,UV -1,%0,.\n"
9 " nop\n"
10 : "=r" (loops) : "0" (loops));
11}
12
Helge Dellerf6d12ee2013-10-23 23:29:16 +020013extern void __udelay(unsigned long usecs);
14extern void __udelay_bad(unsigned long usecs);
Linus Torvalds1da177e2005-04-16 15:20:36 -070015
Helge Dellerf6d12ee2013-10-23 23:29:16 +020016static inline void udelay(unsigned long usecs)
17{
18 if (__builtin_constant_p(usecs) && (usecs) > 20000)
19 __udelay_bad(usecs);
20 __udelay(usecs);
Linus Torvalds1da177e2005-04-16 15:20:36 -070021}
22
Helge Dellerf6d12ee2013-10-23 23:29:16 +020023#endif /* _ASM_PARISC_DELAY_H */