~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/u-boot/arch/blackfin/include/asm/delay.h

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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