Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
h8300
include
asm
delay.h
Go to the documentation of this file.
1
#ifndef _H8300_DELAY_H
2
#define _H8300_DELAY_H
3
4
#include <asm/param.h>
5
6
/*
7
* Copyright (C) 2002 Yoshinori Sato <
[email protected]
>
8
*
9
* Delay routines, using a pre-computed "loops_per_second" value.
10
*/
11
12
static
inline
void
__delay
(
unsigned
long
loops)
13
{
14
__asm__
__volatile__ (
"1:\n\t"
15
"dec.l #1,%0\n\t"
16
"bne 1b"
17
:
"=r"
(loops):
"0"
(loops));
18
}
19
20
/*
21
* Use only for very small delays ( < 1 msec). Should probably use a
22
* lookup table, really, as the multiplications take much too long with
23
* short delays. This is a "reasonable" implementation, though (and the
24
* first constant multiplications gets optimized away if the delay is
25
* a constant)
26
*/
27
28
extern
unsigned
long
loops_per_jiffy
;
29
30
static
inline
void
udelay
(
unsigned
long
usecs
)
31
{
32
usecs *= 4295;
/* 2**32 / 1000000 */
33
usecs /= (loops_per_jiffy*
HZ
);
34
if
(usecs)
35
__delay
(usecs);
36
}
37
38
#endif
/* _H8300_DELAY_H */
Generated on Thu Jan 10 2013 12:49:20 for Linux Kernel by
1.8.2