/* delay.c: Delay loops for sparc64 * * Copyright (C) 2004, 2006 David S. Miller * * Based heavily upon x86 variant which is: * Copyright (C) 1993 Linus Torvalds * Copyright (C) 1997 Martin Mares */ #include #include void __delay(unsigned long loops) { unsigned long bclock, now; bclock = tick_ops->get_tick(); do { now = tick_ops->get_tick(); } while ((now-bclock) < loops); } /* We used to multiply by HZ after shifting down by 32 bits * but that runs into problems for higher values of HZ and * slow cpus. */ void __const_udelay(unsigned long n) { n *= 4; n *= (cpu_data(raw_smp_processor_id()).udelay_val * (HZ/4)); n >>= 32; __delay(n + 1); } void __udelay(unsigned long n) { __const_udelay(n * 0x10c7UL); } void __ndelay(unsigned long n) { __const_udelay(n * 0x5UL); }