Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/blackfin/include/asm/delay.h
15126 views
1
/*
2
* delay.h - delay functions
3
*
4
* Copyright (c) 2004-2007 Analog Devices Inc.
5
*
6
* Licensed under the GPL-2 or later.
7
*/
8
9
#ifndef __ASM_DELAY_H__
10
#define __ASM_DELAY_H__
11
12
#include <mach/anomaly.h>
13
14
static inline void __delay(unsigned long loops)
15
{
16
__asm__ __volatile__ (
17
"LSETUP(1f, 1f) LC0 = %0;"
18
"1: NOP;"
19
:
20
: "a" (loops)
21
: "LT0", "LB0", "LC0"
22
);
23
}
24
25
#include <linux/param.h> /* needed for HZ */
26
27
/*
28
* close approximation borrowed from m68knommu to avoid 64-bit math
29
*/
30
31
#define HZSCALE (268435456 / (1000000/HZ))
32
33
static inline unsigned long __to_delay(unsigned long scale)
34
{
35
extern unsigned long loops_per_jiffy;
36
return (((scale * HZSCALE) >> 11) * (loops_per_jiffy >> 11)) >> 6;
37
}
38
39
static inline void udelay(unsigned long usecs)
40
{
41
__delay(__to_delay(usecs));
42
}
43
44
static inline void ndelay(unsigned long nsecs)
45
{
46
__delay(__to_delay(1) * nsecs / 1000);
47
}
48
49
#define ndelay ndelay
50
51
#endif
52
53