diff options
Diffstat (limited to 'arch/blackfin/include/asm/blackfin.h')
-rw-r--r-- | arch/blackfin/include/asm/blackfin.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/arch/blackfin/include/asm/blackfin.h b/arch/blackfin/include/asm/blackfin.h new file mode 100644 index 000000000000..8749b0e321ab --- /dev/null +++ b/arch/blackfin/include/asm/blackfin.h | |||
@@ -0,0 +1,92 @@ | |||
1 | /* | ||
2 | * Common header file for blackfin family of processors. | ||
3 | * | ||
4 | */ | ||
5 | |||
6 | #ifndef _BLACKFIN_H_ | ||
7 | #define _BLACKFIN_H_ | ||
8 | |||
9 | #define LO(con32) ((con32) & 0xFFFF) | ||
10 | #define lo(con32) ((con32) & 0xFFFF) | ||
11 | #define HI(con32) (((con32) >> 16) & 0xFFFF) | ||
12 | #define hi(con32) (((con32) >> 16) & 0xFFFF) | ||
13 | |||
14 | #include <mach/anomaly.h> | ||
15 | |||
16 | #ifndef __ASSEMBLY__ | ||
17 | |||
18 | /* SSYNC implementation for C file */ | ||
19 | static inline void SSYNC(void) | ||
20 | { | ||
21 | int _tmp; | ||
22 | if (ANOMALY_05000312) | ||
23 | __asm__ __volatile__( | ||
24 | "cli %0;" | ||
25 | "nop;" | ||
26 | "nop;" | ||
27 | "ssync;" | ||
28 | "sti %0;" | ||
29 | : "=d" (_tmp) | ||
30 | ); | ||
31 | else if (ANOMALY_05000244) | ||
32 | __asm__ __volatile__( | ||
33 | "nop;" | ||
34 | "nop;" | ||
35 | "nop;" | ||
36 | "ssync;" | ||
37 | ); | ||
38 | else | ||
39 | __asm__ __volatile__("ssync;"); | ||
40 | } | ||
41 | |||
42 | /* CSYNC implementation for C file */ | ||
43 | static inline void CSYNC(void) | ||
44 | { | ||
45 | int _tmp; | ||
46 | if (ANOMALY_05000312) | ||
47 | __asm__ __volatile__( | ||
48 | "cli %0;" | ||
49 | "nop;" | ||
50 | "nop;" | ||
51 | "csync;" | ||
52 | "sti %0;" | ||
53 | : "=d" (_tmp) | ||
54 | ); | ||
55 | else if (ANOMALY_05000244) | ||
56 | __asm__ __volatile__( | ||
57 | "nop;" | ||
58 | "nop;" | ||
59 | "nop;" | ||
60 | "csync;" | ||
61 | ); | ||
62 | else | ||
63 | __asm__ __volatile__("csync;"); | ||
64 | } | ||
65 | |||
66 | #else /* __ASSEMBLY__ */ | ||
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_ */ | ||