diff options
| author | Steve French <sfrench@us.ibm.com> | 2005-11-19 21:05:42 -0800 |
|---|---|---|
| committer | Steve French <sfrench@us.ibm.com> | 2005-11-19 21:05:42 -0800 |
| commit | 1e6b39fbb61800e3ecee58dc8c4bca57c89365cd (patch) | |
| tree | 513ce034cff05371496713b8327f9dc074bdcc6d /arch/powerpc/kernel/time.c | |
| parent | cdbce9c87e4ebd186389919b95e49592ec35dae6 (diff) | |
| parent | 3bedff1d73b86e0cf52634efb447e9ada08f2cc6 (diff) | |
Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
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 070b4b458aa..de8479769bb 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) { /* |
