Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/blackfin/include/asm/blackfin.h
15126 views
1
/*
2
* Common header file for Blackfin family of processors.
3
*
4
 * Copyright 2004-2009 Analog Devices Inc.
5
 *
6
 * Licensed under the GPL-2 or later.
7
*/
8
9
#ifndef _BLACKFIN_H_
10
#define _BLACKFIN_H_
11
12
#include <mach/anomaly.h>
13
14
#ifndef __ASSEMBLY__
15
16
/* SSYNC implementation for C file */
17
static inline void SSYNC(void)
18
{
19
int _tmp;
20
if (ANOMALY_05000312)
21
__asm__ __volatile__(
22
"cli %0;"
23
"nop;"
24
"nop;"
25
"ssync;"
26
"sti %0;"
27
: "=d" (_tmp)
28
);
29
else if (ANOMALY_05000244)
30
__asm__ __volatile__(
31
"nop;"
32
"nop;"
33
"nop;"
34
"ssync;"
35
);
36
else
37
__asm__ __volatile__("ssync;");
38
}
39
40
/* CSYNC implementation for C file */
41
static inline void CSYNC(void)
42
{
43
int _tmp;
44
if (ANOMALY_05000312)
45
__asm__ __volatile__(
46
"cli %0;"
47
"nop;"
48
"nop;"
49
"csync;"
50
"sti %0;"
51
: "=d" (_tmp)
52
);
53
else if (ANOMALY_05000244)
54
__asm__ __volatile__(
55
"nop;"
56
"nop;"
57
"nop;"
58
"csync;"
59
);
60
else
61
__asm__ __volatile__("csync;");
62
}
63
64
#else /* __ASSEMBLY__ */
65
66
#define LO(con32) ((con32) & 0xFFFF)
67
#define lo(con32) ((con32) & 0xFFFF)
68
#define HI(con32) (((con32) >> 16) & 0xFFFF)
69
#define hi(con32) (((con32) >> 16) & 0xFFFF)
70
71
/* SSYNC & CSYNC implementations for assembly files */
72
73
#define ssync(x) SSYNC(x)
74
#define csync(x) CSYNC(x)
75
76
#if ANOMALY_05000312
77
#define SSYNC(scratch) cli scratch; nop; nop; SSYNC; sti scratch;
78
#define CSYNC(scratch) cli scratch; nop; nop; CSYNC; sti scratch;
79
80
#elif ANOMALY_05000244
81
#define SSYNC(scratch) nop; nop; nop; SSYNC;
82
#define CSYNC(scratch) nop; nop; nop; CSYNC;
83
84
#else
85
#define SSYNC(scratch) SSYNC;
86
#define CSYNC(scratch) CSYNC;
87
88
#endif /* ANOMALY_05000312 & ANOMALY_05000244 handling */
89
90
#endif /* __ASSEMBLY__ */
91
92
#include <asm/mem_map.h>
93
#include <mach/blackfin.h>
94
#include <asm/bfin-global.h>
95
96
#endif /* _BLACKFIN_H_ */
97
98