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