diff options
author | Robin Getz <robin.getz@analog.com> | 2007-08-03 05:56:29 -0400 |
---|---|---|
committer | Bryan Wu <bryan.wu@analog.com> | 2007-08-03 05:56:29 -0400 |
commit | fb51d566803413d2682ca718aef1c6f946fdab05 (patch) | |
tree | 1d1fbec0a1e469a1ef411cf3f924db1cf69ebe3d /include/asm-blackfin/blackfin.h | |
parent | 35c724f310c4b73dbfa6503a46bf86a4c55f8193 (diff) |
Blackfin arch: Fix Anomaly hanlding, as pointed out by Mike
Signed-off-by: Robin Getz <robin.getz@analog.com>
Cc: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Diffstat (limited to 'include/asm-blackfin/blackfin.h')
-rw-r--r-- | include/asm-blackfin/blackfin.h | 32 |
1 files changed, 7 insertions, 25 deletions
diff --git a/include/asm-blackfin/blackfin.h b/include/asm-blackfin/blackfin.h index 3c6e597dced4..984b74f0a2ec 100644 --- a/include/asm-blackfin/blackfin.h +++ b/include/asm-blackfin/blackfin.h | |||
@@ -19,7 +19,7 @@ | |||
19 | static inline void SSYNC(void) | 19 | static inline void SSYNC(void) |
20 | { | 20 | { |
21 | int _tmp; | 21 | int _tmp; |
22 | if (ANOMALY_05000312 && ANOMALY_05000244) | 22 | if (ANOMALY_05000312) |
23 | __asm__ __volatile__( | 23 | __asm__ __volatile__( |
24 | "cli %0;" | 24 | "cli %0;" |
25 | "nop;" | 25 | "nop;" |
@@ -28,14 +28,7 @@ static inline void SSYNC(void) | |||
28 | "sti %0;" | 28 | "sti %0;" |
29 | : "=d" (_tmp) | 29 | : "=d" (_tmp) |
30 | ); | 30 | ); |
31 | else if (ANOMALY_05000312 && !ANOMALY_05000244) | 31 | else if (ANOMALY_05000244) |
32 | __asm__ __volatile__( | ||
33 | "cli %0;" | ||
34 | "ssync;" | ||
35 | "sti %0;" | ||
36 | : "=d" (_tmp) | ||
37 | ); | ||
38 | else if (!ANOMALY_05000312 && ANOMALY_05000244) | ||
39 | __asm__ __volatile__( | 32 | __asm__ __volatile__( |
40 | "nop;" | 33 | "nop;" |
41 | "nop;" | 34 | "nop;" |
@@ -50,7 +43,7 @@ static inline void SSYNC(void) | |||
50 | static inline void CSYNC(void) | 43 | static inline void CSYNC(void) |
51 | { | 44 | { |
52 | int _tmp; | 45 | int _tmp; |
53 | if (ANOMALY_05000312 && ANOMALY_05000244) | 46 | if (ANOMALY_05000312) |
54 | __asm__ __volatile__( | 47 | __asm__ __volatile__( |
55 | "cli %0;" | 48 | "cli %0;" |
56 | "nop;" | 49 | "nop;" |
@@ -59,14 +52,7 @@ static inline void CSYNC(void) | |||
59 | "sti %0;" | 52 | "sti %0;" |
60 | : "=d" (_tmp) | 53 | : "=d" (_tmp) |
61 | ); | 54 | ); |
62 | else if (ANOMALY_05000312 && !ANOMALY_05000244) | 55 | else if (ANOMALY_05000244) |
63 | __asm__ __volatile__( | ||
64 | "cli %0;" | ||
65 | "csync;" | ||
66 | "sti %0;" | ||
67 | : "=d" (_tmp) | ||
68 | ); | ||
69 | else if (!ANOMALY_05000312 && ANOMALY_05000244) | ||
70 | __asm__ __volatile__( | 56 | __asm__ __volatile__( |
71 | "nop;" | 57 | "nop;" |
72 | "nop;" | 58 | "nop;" |
@@ -84,19 +70,15 @@ static inline void CSYNC(void) | |||
84 | #define ssync(x) SSYNC(x) | 70 | #define ssync(x) SSYNC(x) |
85 | #define csync(x) CSYNC(x) | 71 | #define csync(x) CSYNC(x) |
86 | 72 | ||
87 | #if ANOMALY_05000312 && ANOMALY_05000244 | 73 | #if ANOMALY_05000312 |
88 | #define SSYNC(scratch) cli scratch; nop; nop; SSYNC; sti scratch; | ||
89 | #define CSYNC(scratch) cli scratch; nop; nop; CSYNC; sti scratch; | ||
90 | |||
91 | #elif ANOMALY_05000312 && !ANOMALY_05000244 | ||
92 | #define SSYNC(scratch) cli scratch; nop; nop; SSYNC; sti scratch; | 74 | #define SSYNC(scratch) cli scratch; nop; nop; SSYNC; sti scratch; |
93 | #define CSYNC(scratch) cli scratch; nop; nop; CSYNC; sti scratch; | 75 | #define CSYNC(scratch) cli scratch; nop; nop; CSYNC; sti scratch; |
94 | 76 | ||
95 | #elif !ANOMALY_05000312 && ANOMALY_05000244 | 77 | #elif ANOMALY_05000244 |
96 | #define SSYNC(scratch) nop; nop; nop; SSYNC; | 78 | #define SSYNC(scratch) nop; nop; nop; SSYNC; |
97 | #define CSYNC(scratch) nop; nop; nop; CSYNC; | 79 | #define CSYNC(scratch) nop; nop; nop; CSYNC; |
98 | 80 | ||
99 | #elif !ANOMALY_05000312 && !ANOMALY_05000244 | 81 | #else |
100 | #define SSYNC(scratch) SSYNC; | 82 | #define SSYNC(scratch) SSYNC; |
101 | #define CSYNC(scratch) CSYNC; | 83 | #define CSYNC(scratch) CSYNC; |
102 | 84 | ||