~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to arch/frv/include/asm/delay.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* delay.h: FRV delay code
 
2
 *
 
3
 * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
 
4
 * Written by David Howells (dhowells@redhat.com)
 
5
 *
 
6
 * This program is free software; you can redistribute it and/or
 
7
 * modify it under the terms of the GNU General Public License
 
8
 * as published by the Free Software Foundation; either version
 
9
 * 2 of the License, or (at your option) any later version.
 
10
 */
 
11
 
 
12
#ifndef _ASM_DELAY_H
 
13
#define _ASM_DELAY_H
 
14
 
 
15
#include <asm/param.h>
 
16
#include <asm/timer-regs.h>
 
17
 
 
18
/*
 
19
 * delay loop - runs at __core_clock_speed_HZ / 2 [there are 2 insns in the loop]
 
20
 */
 
21
extern unsigned long __delay_loops_MHz;
 
22
 
 
23
static inline void __delay(unsigned long loops)
 
24
{
 
25
        asm volatile("1:        subicc  %0,#1,%0,icc0   \n"
 
26
                     "          bnc     icc0,#2,1b      \n"
 
27
                     : "=r" (loops)
 
28
                     : "0" (loops)
 
29
                     : "icc0"
 
30
                     );
 
31
}
 
32
 
 
33
/*
 
34
 * Use only for very small delays ( < 1 msec).  Should probably use a
 
35
 * lookup table, really, as the multiplications take much too long with
 
36
 * short delays.  This is a "reasonable" implementation, though (and the
 
37
 * first constant multiplications gets optimized away if the delay is
 
38
 * a constant)
 
39
 */
 
40
 
 
41
extern unsigned long loops_per_jiffy;
 
42
 
 
43
static inline void udelay(unsigned long usecs)
 
44
{
 
45
        __delay(usecs * __delay_loops_MHz);
 
46
}
 
47
 
 
48
#define ndelay(n)       udelay((n) * 5)
 
49
 
 
50
#endif /* _ASM_DELAY_H */