aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-blackfin
diff options
context:
space:
mode:
authorRobin Getz <robin.getz@analog.com>2007-08-03 05:56:29 -0400
committerBryan Wu <bryan.wu@analog.com>2007-08-03 05:56:29 -0400
commitfb51d566803413d2682ca718aef1c6f946fdab05 (patch)
tree1d1fbec0a1e469a1ef411cf3f924db1cf69ebe3d /include/asm-blackfin
parent35c724f310c4b73dbfa6503a46bf86a4c55f8193 (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')
-rw-r--r--include/asm-blackfin/blackfin.h32
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 @@
19static inline void SSYNC(void) 19static 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)
50static inline void CSYNC(void) 43static 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