Contents of /alx-src/tags/kernel26-2.6.12-alx-r9/include/asm-arm/delay.h
Parent Directory | Revision Log
Revision 630 -
(show annotations)
(download)
Wed Mar 4 11:03:09 2009 UTC (15 years, 6 months ago) by niro
File MIME type: text/plain
File size: 1202 byte(s)
Wed Mar 4 11:03:09 2009 UTC (15 years, 6 months ago) by niro
File MIME type: text/plain
File size: 1202 byte(s)
Tag kernel26-2.6.12-alx-r9
1 | /* |
2 | * Copyright (C) 1995-2004 Russell King |
3 | * |
4 | * Delay routines, using a pre-computed "loops_per_second" value. |
5 | */ |
6 | #ifndef __ASM_ARM_DELAY_H |
7 | #define __ASM_ARM_DELAY_H |
8 | |
9 | extern void __delay(int loops); |
10 | |
11 | /* |
12 | * This function intentionally does not exist; if you see references to |
13 | * it, it means that you're calling udelay() with an out of range value. |
14 | * |
15 | * With currently imposed limits, this means that we support a max delay |
16 | * of 2000us and 671 bogomips |
17 | */ |
18 | extern void __bad_udelay(void); |
19 | |
20 | /* |
21 | * division by multiplication: you don't have to worry about |
22 | * loss of precision. |
23 | * |
24 | * Use only for very small delays ( < 1 msec). Should probably use a |
25 | * lookup table, really, as the multiplications take much too long with |
26 | * short delays. This is a "reasonable" implementation, though (and the |
27 | * first constant multiplications gets optimized away if the delay is |
28 | * a constant) |
29 | */ |
30 | extern void __udelay(unsigned long usecs); |
31 | extern void __const_udelay(unsigned long); |
32 | |
33 | #define MAX_UDELAY_MS 2 |
34 | |
35 | #define udelay(n) \ |
36 | (__builtin_constant_p(n) ? \ |
37 | ((n) > (MAX_UDELAY_MS * 1000) ? __bad_udelay() : \ |
38 | __const_udelay((n) * 0x68dbul)) : \ |
39 | __udelay(n)) |
40 | |
41 | #endif /* defined(_ARM_DELAY_H) */ |
42 |