1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef _ASM_PARISC_DELAY_H 3*4882a593Smuzhiyun #define _ASM_PARISC_DELAY_H 4*4882a593Smuzhiyun __delay(unsigned long loops)5*4882a593Smuzhiyunstatic __inline__ void __delay(unsigned long loops) { 6*4882a593Smuzhiyun asm volatile( 7*4882a593Smuzhiyun " .balignl 64,0x34000034\n" 8*4882a593Smuzhiyun " addib,UV -1,%0,.\n" 9*4882a593Smuzhiyun " nop\n" 10*4882a593Smuzhiyun : "=r" (loops) : "0" (loops)); 11*4882a593Smuzhiyun } 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun extern void __udelay(unsigned long usecs); 14*4882a593Smuzhiyun extern void __udelay_bad(unsigned long usecs); 15*4882a593Smuzhiyun udelay(unsigned long usecs)16*4882a593Smuzhiyunstatic inline void udelay(unsigned long usecs) 17*4882a593Smuzhiyun { 18*4882a593Smuzhiyun if (__builtin_constant_p(usecs) && (usecs) > 20000) 19*4882a593Smuzhiyun __udelay_bad(usecs); 20*4882a593Smuzhiyun __udelay(usecs); 21*4882a593Smuzhiyun } 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #endif /* _ASM_PARISC_DELAY_H */ 24