diff options
| author | Alan Cox <alan@lxorguk.ukuu.org.uk> | 2003-02-18 00:40:59 -0800 |
|---|---|---|
| committer | Andy Grover <agrover@groveronline.com> | 2003-02-18 00:40:59 -0800 |
| commit | c0630ba10df3a20ab916557c76f1cf8245ed65aa (patch) | |
| tree | f42bb130d16a40884cac9a2457f86e2bd395d397 | |
| parent | 8b18caf447a6ad543d7aea6a7877d7516d8c381a (diff) | |
[PATCH] ndelay() for x86
The implementation is not ideal. Thats something to tidy up.
| -rw-r--r-- | arch/i386/kernel/i386_ksyms.c | 1 | ||||
| -rw-r--r-- | arch/i386/lib/delay.c | 5 | ||||
| -rw-r--r-- | include/asm-i386/delay.h | 6 |
3 files changed, 12 insertions, 0 deletions
diff --git a/arch/i386/kernel/i386_ksyms.c b/arch/i386/kernel/i386_ksyms.c index 90f14e4c3b31..93244d036138 100644 --- a/arch/i386/kernel/i386_ksyms.c +++ b/arch/i386/kernel/i386_ksyms.c @@ -104,6 +104,7 @@ EXPORT_SYMBOL_NOVERS(__up_wakeup); /* Networking helper routines. */ EXPORT_SYMBOL(csum_partial_copy_generic); /* Delay loops */ +EXPORT_SYMBOL(__ndelay); EXPORT_SYMBOL(__udelay); EXPORT_SYMBOL(__delay); EXPORT_SYMBOL(__const_udelay); diff --git a/arch/i386/lib/delay.c b/arch/i386/lib/delay.c index 55eae89750e7..a678560d383f 100644 --- a/arch/i386/lib/delay.c +++ b/arch/i386/lib/delay.c @@ -41,3 +41,8 @@ void __udelay(unsigned long usecs) { __const_udelay(usecs * 0x000010c6); /* 2**32 / 1000000 */ } + +void __ndelay(unsigned long nsecs) +{ + __const_udelay(nsecs * 0x00005); /* 2**32 / 1000000000 (rounded up) */ +} diff --git a/include/asm-i386/delay.h b/include/asm-i386/delay.h index c7d218492964..72930c7109bb 100644 --- a/include/asm-i386/delay.h +++ b/include/asm-i386/delay.h @@ -8,13 +8,19 @@ */ extern void __bad_udelay(void); +extern void __bad_ndelay(void); extern void __udelay(unsigned long usecs); +extern void __ndelay(unsigned long nsecs); extern void __const_udelay(unsigned long usecs); extern void __delay(unsigned long loops); #define udelay(n) (__builtin_constant_p(n) ? \ ((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c6ul)) : \ __udelay(n)) + +#define ndelay(n) (__builtin_constant_p(n) ? \ + ((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \ + __ndelay(n)) #endif /* defined(_I386_DELAY_H) */ |
