xref: /openbmc/linux/arch/parisc/include/asm/delay.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2f6d12eefSHelge Deller #ifndef _ASM_PARISC_DELAY_H
3f6d12eefSHelge Deller #define _ASM_PARISC_DELAY_H
4deae26bfSKyle McMartin 
__delay(unsigned long loops)5deae26bfSKyle McMartin static __inline__ void __delay(unsigned long loops) {
6deae26bfSKyle McMartin 	asm volatile(
7deae26bfSKyle McMartin 	"	.balignl	64,0x34000034\n"
8deae26bfSKyle McMartin 	"	addib,UV -1,%0,.\n"
9deae26bfSKyle McMartin 	"	nop\n"
10deae26bfSKyle McMartin 		: "=r" (loops) : "0" (loops));
11deae26bfSKyle McMartin }
12deae26bfSKyle McMartin 
13f6d12eefSHelge Deller extern void __udelay(unsigned long usecs);
14f6d12eefSHelge Deller extern void __udelay_bad(unsigned long usecs);
15deae26bfSKyle McMartin 
udelay(unsigned long usecs)16f6d12eefSHelge Deller static inline void udelay(unsigned long usecs)
17f6d12eefSHelge Deller {
18f6d12eefSHelge Deller 	if (__builtin_constant_p(usecs) && (usecs) > 20000)
19f6d12eefSHelge Deller 		__udelay_bad(usecs);
20f6d12eefSHelge Deller 	__udelay(usecs);
21deae26bfSKyle McMartin }
22deae26bfSKyle McMartin 
23f6d12eefSHelge Deller #endif /* _ASM_PARISC_DELAY_H */
24