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

📄 delay.h

📁 linux 内核源代码
💻 H
字号:
/* * delay.h - delay functions * * Copyright (c) 2004-2007 Analog Devices Inc. * * Licensed under the GPL-2 or later. */#ifndef __ASM_DELAY_H__#define __ASM_DELAY_H__#include <asm/mach/anomaly.h>static inline void __delay(unsigned long loops){	if (ANOMALY_05000312) {		/* Interrupted loads to loop registers -> bad */		unsigned long tmp;		__asm__ __volatile__(			"[--SP] = LC0;"			"[--SP] = LT0;"			"[--SP] = LB0;"			"LSETUP (1f,1f) LC0 = %1;"			"1: NOP;"			/* We take advantage of the fact that LC0 is 0 at			 * the end of the loop.  Otherwise we'd need some			 * NOPs after the CLI here.			 */			"CLI %0;"			"LB0 = [SP++];"			"LT0 = [SP++];"			"LC0 = [SP++];"			"STI %0;"			: "=d" (tmp)			: "a" (loops)		);	} else		__asm__ __volatile__ (			"LSETUP(1f, 1f) LC0 = %0;"			"1: NOP;"			:			: "a" (loops)			: "LT0", "LB0", "LC0"		);}#include <linux/param.h>	/* needed for HZ *//* * Use only for very small delays ( < 1 msec).  Should probably use a * lookup table, really, as the multiplications take much too long with * short delays.  This is a "reasonable" implementation, though (and the * first constant multiplications gets optimized away if the delay is * a constant) */static inline void udelay(unsigned long usecs){	extern unsigned long loops_per_jiffy;	__delay(usecs * loops_per_jiffy / (1000000 / HZ));}#endif

⌨️ 快捷键说明

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