18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef _ASM_PARISC_DELAY_H
38c2ecf20Sopenharmony_ci#define _ASM_PARISC_DELAY_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_cistatic __inline__ void __delay(unsigned long loops) {
68c2ecf20Sopenharmony_ci	asm volatile(
78c2ecf20Sopenharmony_ci	"	.balignl	64,0x34000034\n"
88c2ecf20Sopenharmony_ci	"	addib,UV -1,%0,.\n"
98c2ecf20Sopenharmony_ci	"	nop\n"
108c2ecf20Sopenharmony_ci		: "=r" (loops) : "0" (loops));
118c2ecf20Sopenharmony_ci}
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ciextern void __udelay(unsigned long usecs);
148c2ecf20Sopenharmony_ciextern void __udelay_bad(unsigned long usecs);
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_cistatic inline void udelay(unsigned long usecs)
178c2ecf20Sopenharmony_ci{
188c2ecf20Sopenharmony_ci	if (__builtin_constant_p(usecs) && (usecs) > 20000)
198c2ecf20Sopenharmony_ci		__udelay_bad(usecs);
208c2ecf20Sopenharmony_ci	__udelay(usecs);
218c2ecf20Sopenharmony_ci}
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci#endif /* _ASM_PARISC_DELAY_H */
24