diff options
| author | Richard Henderson <rth@kanga.twiddle.net> | 2003-02-18 19:25:21 -0800 |
|---|---|---|
| committer | Richard Henderson <rth@kanga.twiddle.net> | 2003-02-18 19:25:21 -0800 |
| commit | 86e72865d687f8a0652609a7d63c722beb5f4e32 (patch) | |
| tree | 0720b3d5bb3e649d6adf49e0afe7171273f8459b | |
| parent | 0b38ba776d4c98c309a55eae88ae6e065e3a9360 (diff) | |
[ALPHA] Implement ndelay.
| -rw-r--r-- | arch/alpha/kernel/alpha_ksyms.c | 4 | ||||
| -rw-r--r-- | arch/alpha/lib/udelay.c | 40 | ||||
| -rw-r--r-- | include/asm-alpha/delay.h | 4 |
3 files changed, 27 insertions, 21 deletions
diff --git a/arch/alpha/kernel/alpha_ksyms.c b/arch/alpha/kernel/alpha_ksyms.c index ec9ed49c79fe..ee3db0c214ba 100644 --- a/arch/alpha/kernel/alpha_ksyms.c +++ b/arch/alpha/kernel/alpha_ksyms.c @@ -119,10 +119,6 @@ EXPORT_SYMBOL(__constant_c_memset); EXPORT_SYMBOL(copy_page); EXPORT_SYMBOL(clear_page); -EXPORT_SYMBOL(__delay); -EXPORT_SYMBOL(__udelay); -EXPORT_SYMBOL(udelay); - EXPORT_SYMBOL(__direct_map_base); EXPORT_SYMBOL(__direct_map_size); diff --git a/arch/alpha/lib/udelay.c b/arch/alpha/lib/udelay.c index 14c9b88e1d26..1c879bbce419 100644 --- a/arch/alpha/lib/udelay.c +++ b/arch/alpha/lib/udelay.c @@ -1,15 +1,16 @@ -#include <linux/config.h> -#include <linux/sched.h> /* for udelay's use of smp_processor_id */ -#include <asm/param.h> -#include <asm/smp.h> -#include <linux/delay.h> - /* * Copyright (C) 1993, 2000 Linus Torvalds * * Delay routines, using a pre-computed "loops_per_jiffy" value. */ +#include <linux/config.h> +#include <linux/module.h> +#include <linux/sched.h> /* for udelay's use of smp_processor_id */ +#include <asm/param.h> +#include <asm/smp.h> +#include <linux/delay.h> + /* * Use only for very small delays (< 1 msec). * @@ -18,7 +19,8 @@ * a 1GHz box, that's about 2 seconds. */ -void __delay(int loops) +void +__delay(int loops) { int tmp; __asm__ __volatile__( @@ -30,18 +32,24 @@ void __delay(int loops) : "=&r" (tmp), "=r" (loops) : "1"(loops)); } -void __udelay(unsigned long usecs, unsigned long lpj) +#ifdef CONFIG_SMP +#define LPJ cpu_data[smp_processor_id()].loops_per_jiffy +#else +#define LPJ loops_per_jiffy +#endif + +void +udelay(unsigned long usecs) { - usecs *= (((unsigned long)HZ << 32) / 1000000) * lpj; + usecs *= (((unsigned long)HZ << 32) / 1000000) * LPJ; __delay((long)usecs >> 32); } +EXPORT_SYMBOL(udelay); -void udelay(unsigned long usecs) +void +ndelay(unsigned long nsecs) { -#ifdef CONFIG_SMP - __udelay(usecs, cpu_data[smp_processor_id()].loops_per_jiffy); -#else - __udelay(usecs, loops_per_jiffy); -#endif + nsecs *= (((unsigned long)HZ << 32) / 1000000000) * LPJ; + __delay((long)nsecs >> 32); } - +EXPORT_SYMBOL(ndelay); diff --git a/include/asm-alpha/delay.h b/include/asm-alpha/delay.h index 86077c4e03ab..2aa3f410f7e6 100644 --- a/include/asm-alpha/delay.h +++ b/include/asm-alpha/delay.h @@ -2,7 +2,9 @@ #define __ALPHA_DELAY_H extern void __delay(int loops); -extern void __udelay(unsigned long usecs, unsigned long lpj); extern void udelay(unsigned long usecs); +extern void ndelay(unsigned long nsecs); +#define ndelay ndelay + #endif /* defined(__ALPHA_DELAY_H) */ |
