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