Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.16-rc4 49 lines 893 B view raw
1/* delay.c: Delay loops for sparc64 2 * 3 * Copyright (C) 2004 David S. Miller <davem@redhat.com> 4 * 5 * Based heavily upon x86 variant which is: 6 * Copyright (C) 1993 Linus Torvalds 7 * Copyright (C) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz> 8 */ 9 10#include <linux/delay.h> 11 12void __delay(unsigned long loops) 13{ 14 __asm__ __volatile__( 15" b,pt %%xcc, 1f\n" 16" cmp %0, 0\n" 17" .align 32\n" 18"1:\n" 19" bne,pt %%xcc, 1b\n" 20" subcc %0, 1, %0\n" 21 : "=&r" (loops) 22 : "0" (loops) 23 : "cc"); 24} 25 26/* We used to multiply by HZ after shifting down by 32 bits 27 * but that runs into problems for higher values of HZ and 28 * slow cpus. 29 */ 30void __const_udelay(unsigned long n) 31{ 32 n *= 4; 33 34 n *= (cpu_data(raw_smp_processor_id()).udelay_val * (HZ/4)); 35 n >>= 32; 36 37 __delay(n + 1); 38} 39 40void __udelay(unsigned long n) 41{ 42 __const_udelay(n * 0x10c7UL); 43} 44 45 46void __ndelay(unsigned long n) 47{ 48 __const_udelay(n * 0x5UL); 49}