diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-18 15:22:51 (GMT) |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-18 15:22:51 (GMT) |
commit | 2656c076e31a3ce3ab2a987a578e7122dc2af51d (patch) | |
tree | 98ee4e9c816191c72fc7faaf1934f6c4e5e1f3d6 /arch/powerpc/kernel/time.c | |
parent | 811803c5572b296e0031e0099203de90d77c7bcf (diff) | |
parent | f365cfd0d8b6d8fb3583d23d48f54efa88ee8563 (diff) | |
download | linux-fsl-qoriq-2656c076e31a3ce3ab2a987a578e7122dc2af51d.tar.xz |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc-merge
Diffstat (limited to 'arch/powerpc/kernel/time.c')
-rw-r--r-- | arch/powerpc/kernel/time.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index 070b4b4..de84797 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c @@ -130,6 +130,34 @@ unsigned long tb_last_stamp; */ DEFINE_PER_CPU(unsigned long, last_jiffy); +void __delay(unsigned long loops) +{ + unsigned long start; + int diff; + + if (__USE_RTC()) { + start = get_rtcl(); + do { + /* the RTCL register wraps at 1000000000 */ + diff = get_rtcl() - start; + if (diff < 0) + diff += 1000000000; + } while (diff < loops); + } else { + start = get_tbl(); + while (get_tbl() - start < loops) + HMT_low(); + HMT_medium(); + } +} +EXPORT_SYMBOL(__delay); + +void udelay(unsigned long usecs) +{ + __delay(tb_ticks_per_usec * usecs); +} +EXPORT_SYMBOL(udelay); + static __inline__ void timer_check_rtc(void) { /* |