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