⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udelay.c

📁 linux-2.6.15.6
💻 C
字号:
/* * arch/sh64/lib/udelay.c * * Delay routines, using a pre-computed "loops_per_jiffy" value. * * Copyright (C) 2000, 2001  Paolo Alberelli * Copyright (C) 2003, 2004  Paul Mundt * * This file is subject to the terms and conditions of the GNU General Public * License.  See the file "COPYING" in the main directory of this archive * for more details. */#include <linux/config.h>#include <linux/sched.h>#include <asm/param.h>extern unsigned long loops_per_jiffy;/* * Use only for very small delays (< 1 msec). * * The active part of our cycle counter is only 32-bits wide, and * we're treating the difference between two marks as signed.  On * a 1GHz box, that's about 2 seconds. */void __delay(int loops){	long long dummy;	__asm__ __volatile__("gettr	tr0, %1\n\t"			     "pta	$+4, tr0\n\t"			     "addi	%0, -1, %0\n\t"			     "bne	%0, r63, tr0\n\t"			     "ptabs	%1, tr0\n\t":"=r"(loops),			     "=r"(dummy)			     :"0"(loops));}void __udelay(unsigned long long usecs, unsigned long lpj){	usecs *= (((unsigned long long) HZ << 32) / 1000000) * lpj;	__delay((long long) usecs >> 32);}void __ndelay(unsigned long long nsecs, unsigned long lpj){	nsecs *= (((unsigned long long) HZ << 32) / 1000000000) * lpj;	__delay((long long) nsecs >> 32);}void udelay(unsigned long usecs){	__udelay(usecs, loops_per_jiffy);}void ndelay(unsigned long nsecs){	__ndelay(nsecs, loops_per_jiffy);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -