]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - arch/blackfin/include/asm/delay.h
Add GPL-2.0+ SPDX-License-Identifier to source files
[karo-tx-uboot.git] / arch / blackfin / include / asm / delay.h
1 /*
2  * U-boot - delay.h Routines for introducing delays
3  *
4  * Copyright (c) 2005-2007 Analog Devices Inc.
5  *
6  * SPDX-License-Identifier:     GPL-2.0+
7  */
8
9 #ifndef _BLACKFIN_DELAY_H
10 #define _BLACKFIN_DELAY_H
11
12 /*
13  * Changes made by akbar.hussain@Lineo.com, for BLACKFIN
14  * Copyright (C) 1994 Hamish Macdonald
15  *
16  * Delay routines, using a pre-computed "loops_per_second" value.
17  */
18
19 extern __inline__ void __delay(unsigned long loops)
20 {
21         __asm__ __volatile__("1:\t%0 += -1;\n\t"
22                              "cc = %0 == 0;\n\t"
23                              "if ! cc jump 1b;\n":"=d"(loops)
24                              :"0"(loops));
25 }
26
27 /*
28  * Use only for very small delays ( < 1 msec).  Should probably use a
29  * lookup table, really, as the multiplications take much too long with
30  * short delays.  This is a "reasonable" implementation, though (and the
31  * first constant multiplications gets optimized away if the delay is
32  * a constant)
33  */
34 extern __inline__ void __udelay(unsigned long usecs)
35 {
36         __delay(usecs);
37 }
38
39 #endif