• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Common header file for blackfin family of processors.
3  *
4  */
5 
6 #ifndef _BLACKFIN_H_
7 #define _BLACKFIN_H_
8 
9 #include <mach/anomaly.h>
10 
11 #ifndef __ASSEMBLY__
12 
13 /* SSYNC implementation for C file */
SSYNC(void)14 static inline void SSYNC(void)
15 {
16 	int _tmp;
17 	if (ANOMALY_05000312)
18 		__asm__ __volatile__(
19 			"cli %0;"
20 			"nop;"
21 			"nop;"
22 			"ssync;"
23 			"sti %0;"
24 			: "=d" (_tmp)
25 		);
26 	else if (ANOMALY_05000244)
27 		__asm__ __volatile__(
28 			"nop;"
29 			"nop;"
30 			"nop;"
31 			"ssync;"
32 		);
33 	else
34 		__asm__ __volatile__("ssync;");
35 }
36 
37 /* CSYNC implementation for C file */
CSYNC(void)38 static inline void CSYNC(void)
39 {
40 	int _tmp;
41 	if (ANOMALY_05000312)
42 		__asm__ __volatile__(
43 			"cli %0;"
44 			"nop;"
45 			"nop;"
46 			"csync;"
47 			"sti %0;"
48 			: "=d" (_tmp)
49 		);
50 	else if (ANOMALY_05000244)
51 		__asm__ __volatile__(
52 			"nop;"
53 			"nop;"
54 			"nop;"
55 			"csync;"
56 		);
57 	else
58 		__asm__ __volatile__("csync;");
59 }
60 
61 #else  /* __ASSEMBLY__ */
62 
63 #define LO(con32) ((con32) & 0xFFFF)
64 #define lo(con32) ((con32) & 0xFFFF)
65 #define HI(con32) (((con32) >> 16) & 0xFFFF)
66 #define hi(con32) (((con32) >> 16) & 0xFFFF)
67 
68 /* SSYNC & CSYNC implementations for assembly files */
69 
70 #define ssync(x) SSYNC(x)
71 #define csync(x) CSYNC(x)
72 
73 #if ANOMALY_05000312
74 #define SSYNC(scratch) cli scratch; nop; nop; SSYNC; sti scratch;
75 #define CSYNC(scratch) cli scratch; nop; nop; CSYNC; sti scratch;
76 
77 #elif ANOMALY_05000244
78 #define SSYNC(scratch) nop; nop; nop; SSYNC;
79 #define CSYNC(scratch) nop; nop; nop; CSYNC;
80 
81 #else
82 #define SSYNC(scratch) SSYNC;
83 #define CSYNC(scratch) CSYNC;
84 
85 #endif /* ANOMALY_05000312 & ANOMALY_05000244 handling */
86 
87 #endif /* __ASSEMBLY__ */
88 
89 #include <mach/blackfin.h>
90 #include <asm/bfin-global.h>
91 
92 #endif				/* _BLACKFIN_H_ */
93