aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-01-11 16:42:32 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-11 22:01:11 -0500
commit92934bcbf96bc9dc931c40ca5f1a57685b7b813b (patch)
treeeb9690ca6b23b5603429a8b3d290d6ca2545bcaf /include
parent636aab5ce332d88a76362797a55804c7da643467 (diff)
[PATCH] i386/x86-64: Use input/output dependencies for bitops
Noticed by Andreas Schwab Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
-rw-r--r--include/asm-i386/bitops.h24
-rw-r--r--include/asm-x86_64/bitops.h24
2 files changed, 24 insertions, 24 deletions
diff --git a/include/asm-i386/bitops.h b/include/asm-i386/bitops.h
index 65679aca4b22..fe0819fe9c64 100644
--- a/include/asm-i386/bitops.h
+++ b/include/asm-i386/bitops.h
@@ -43,7 +43,7 @@ static inline void set_bit(int nr, volatile unsigned long * addr)
43{ 43{
44 __asm__ __volatile__( LOCK_PREFIX 44 __asm__ __volatile__( LOCK_PREFIX
45 "btsl %1,%0" 45 "btsl %1,%0"
46 :"=m" (ADDR) 46 :"+m" (ADDR)
47 :"Ir" (nr)); 47 :"Ir" (nr));
48} 48}
49 49
@@ -60,7 +60,7 @@ static inline void __set_bit(int nr, volatile unsigned long * addr)
60{ 60{
61 __asm__( 61 __asm__(
62 "btsl %1,%0" 62 "btsl %1,%0"
63 :"=m" (ADDR) 63 :"+m" (ADDR)
64 :"Ir" (nr)); 64 :"Ir" (nr));
65} 65}
66 66
@@ -78,7 +78,7 @@ static inline void clear_bit(int nr, volatile unsigned long * addr)
78{ 78{
79 __asm__ __volatile__( LOCK_PREFIX 79 __asm__ __volatile__( LOCK_PREFIX
80 "btrl %1,%0" 80 "btrl %1,%0"
81 :"=m" (ADDR) 81 :"+m" (ADDR)
82 :"Ir" (nr)); 82 :"Ir" (nr));
83} 83}
84 84
@@ -86,7 +86,7 @@ static inline void __clear_bit(int nr, volatile unsigned long * addr)
86{ 86{
87 __asm__ __volatile__( 87 __asm__ __volatile__(
88 "btrl %1,%0" 88 "btrl %1,%0"
89 :"=m" (ADDR) 89 :"+m" (ADDR)
90 :"Ir" (nr)); 90 :"Ir" (nr));
91} 91}
92#define smp_mb__before_clear_bit() barrier() 92#define smp_mb__before_clear_bit() barrier()
@@ -105,7 +105,7 @@ static inline void __change_bit(int nr, volatile unsigned long * addr)
105{ 105{
106 __asm__ __volatile__( 106 __asm__ __volatile__(
107 "btcl %1,%0" 107 "btcl %1,%0"
108 :"=m" (ADDR) 108 :"+m" (ADDR)
109 :"Ir" (nr)); 109 :"Ir" (nr));
110} 110}
111 111
@@ -123,7 +123,7 @@ static inline void change_bit(int nr, volatile unsigned long * addr)
123{ 123{
124 __asm__ __volatile__( LOCK_PREFIX 124 __asm__ __volatile__( LOCK_PREFIX
125 "btcl %1,%0" 125 "btcl %1,%0"
126 :"=m" (ADDR) 126 :"+m" (ADDR)
127 :"Ir" (nr)); 127 :"Ir" (nr));
128} 128}
129 129
@@ -142,7 +142,7 @@ static inline int test_and_set_bit(int nr, volatile unsigned long * addr)
142 142
143 __asm__ __volatile__( LOCK_PREFIX 143 __asm__ __volatile__( LOCK_PREFIX
144 "btsl %2,%1\n\tsbbl %0,%0" 144 "btsl %2,%1\n\tsbbl %0,%0"
145 :"=r" (oldbit),"=m" (ADDR) 145 :"=r" (oldbit),"+m" (ADDR)
146 :"Ir" (nr) : "memory"); 146 :"Ir" (nr) : "memory");
147 return oldbit; 147 return oldbit;
148} 148}
@@ -162,7 +162,7 @@ static inline int __test_and_set_bit(int nr, volatile unsigned long * addr)
162 162
163 __asm__( 163 __asm__(
164 "btsl %2,%1\n\tsbbl %0,%0" 164 "btsl %2,%1\n\tsbbl %0,%0"
165 :"=r" (oldbit),"=m" (ADDR) 165 :"=r" (oldbit),"+m" (ADDR)
166 :"Ir" (nr)); 166 :"Ir" (nr));
167 return oldbit; 167 return oldbit;
168} 168}
@@ -182,7 +182,7 @@ static inline int test_and_clear_bit(int nr, volatile unsigned long * addr)
182 182
183 __asm__ __volatile__( LOCK_PREFIX 183 __asm__ __volatile__( LOCK_PREFIX
184 "btrl %2,%1\n\tsbbl %0,%0" 184 "btrl %2,%1\n\tsbbl %0,%0"
185 :"=r" (oldbit),"=m" (ADDR) 185 :"=r" (oldbit),"+m" (ADDR)
186 :"Ir" (nr) : "memory"); 186 :"Ir" (nr) : "memory");
187 return oldbit; 187 return oldbit;
188} 188}
@@ -202,7 +202,7 @@ static inline int __test_and_clear_bit(int nr, volatile unsigned long *addr)
202 202
203 __asm__( 203 __asm__(
204 "btrl %2,%1\n\tsbbl %0,%0" 204 "btrl %2,%1\n\tsbbl %0,%0"
205 :"=r" (oldbit),"=m" (ADDR) 205 :"=r" (oldbit),"+m" (ADDR)
206 :"Ir" (nr)); 206 :"Ir" (nr));
207 return oldbit; 207 return oldbit;
208} 208}
@@ -214,7 +214,7 @@ static inline int __test_and_change_bit(int nr, volatile unsigned long *addr)
214 214
215 __asm__ __volatile__( 215 __asm__ __volatile__(
216 "btcl %2,%1\n\tsbbl %0,%0" 216 "btcl %2,%1\n\tsbbl %0,%0"
217 :"=r" (oldbit),"=m" (ADDR) 217 :"=r" (oldbit),"+m" (ADDR)
218 :"Ir" (nr) : "memory"); 218 :"Ir" (nr) : "memory");
219 return oldbit; 219 return oldbit;
220} 220}
@@ -233,7 +233,7 @@ static inline int test_and_change_bit(int nr, volatile unsigned long* addr)
233 233
234 __asm__ __volatile__( LOCK_PREFIX 234 __asm__ __volatile__( LOCK_PREFIX
235 "btcl %2,%1\n\tsbbl %0,%0" 235 "btcl %2,%1\n\tsbbl %0,%0"
236 :"=r" (oldbit),"=m" (ADDR) 236 :"=r" (oldbit),"+m" (ADDR)
237 :"Ir" (nr) : "memory"); 237 :"Ir" (nr) : "memory");
238 return oldbit; 238 return oldbit;
239} 239}
diff --git a/include/asm-x86_64/bitops.h b/include/asm-x86_64/bitops.h
index a4d5d0909453..3638ffff87fd 100644
--- a/include/asm-x86_64/bitops.h
+++ b/include/asm-x86_64/bitops.h
@@ -29,7 +29,7 @@ static __inline__ void set_bit(int nr, volatile void * addr)
29{ 29{
30 __asm__ __volatile__( LOCK_PREFIX 30 __asm__ __volatile__( LOCK_PREFIX
31 "btsl %1,%0" 31 "btsl %1,%0"
32 :"=m" (ADDR) 32 :"+m" (ADDR)
33 :"dIr" (nr) : "memory"); 33 :"dIr" (nr) : "memory");
34} 34}
35 35
@@ -46,7 +46,7 @@ static __inline__ void __set_bit(int nr, volatile void * addr)
46{ 46{
47 __asm__ volatile( 47 __asm__ volatile(
48 "btsl %1,%0" 48 "btsl %1,%0"
49 :"=m" (ADDR) 49 :"+m" (ADDR)
50 :"dIr" (nr) : "memory"); 50 :"dIr" (nr) : "memory");
51} 51}
52 52
@@ -64,7 +64,7 @@ static __inline__ void clear_bit(int nr, volatile void * addr)
64{ 64{
65 __asm__ __volatile__( LOCK_PREFIX 65 __asm__ __volatile__( LOCK_PREFIX
66 "btrl %1,%0" 66 "btrl %1,%0"
67 :"=m" (ADDR) 67 :"+m" (ADDR)
68 :"dIr" (nr)); 68 :"dIr" (nr));
69} 69}
70 70
@@ -72,7 +72,7 @@ static __inline__ void __clear_bit(int nr, volatile void * addr)
72{ 72{
73 __asm__ __volatile__( 73 __asm__ __volatile__(
74 "btrl %1,%0" 74 "btrl %1,%0"
75 :"=m" (ADDR) 75 :"+m" (ADDR)
76 :"dIr" (nr)); 76 :"dIr" (nr));
77} 77}
78 78
@@ -92,7 +92,7 @@ static __inline__ void __change_bit(int nr, volatile void * addr)
92{ 92{
93 __asm__ __volatile__( 93 __asm__ __volatile__(
94 "btcl %1,%0" 94 "btcl %1,%0"
95 :"=m" (ADDR) 95 :"+m" (ADDR)
96 :"dIr" (nr)); 96 :"dIr" (nr));
97} 97}
98 98
@@ -109,7 +109,7 @@ static __inline__ void change_bit(int nr, volatile void * addr)
109{ 109{
110 __asm__ __volatile__( LOCK_PREFIX 110 __asm__ __volatile__( LOCK_PREFIX
111 "btcl %1,%0" 111 "btcl %1,%0"
112 :"=m" (ADDR) 112 :"+m" (ADDR)
113 :"dIr" (nr)); 113 :"dIr" (nr));
114} 114}
115 115
@@ -127,7 +127,7 @@ static __inline__ int test_and_set_bit(int nr, volatile void * addr)
127 127
128 __asm__ __volatile__( LOCK_PREFIX 128 __asm__ __volatile__( LOCK_PREFIX
129 "btsl %2,%1\n\tsbbl %0,%0" 129 "btsl %2,%1\n\tsbbl %0,%0"
130 :"=r" (oldbit),"=m" (ADDR) 130 :"=r" (oldbit),"+m" (ADDR)
131 :"dIr" (nr) : "memory"); 131 :"dIr" (nr) : "memory");
132 return oldbit; 132 return oldbit;
133} 133}
@@ -147,7 +147,7 @@ static __inline__ int __test_and_set_bit(int nr, volatile void * addr)
147 147
148 __asm__( 148 __asm__(
149 "btsl %2,%1\n\tsbbl %0,%0" 149 "btsl %2,%1\n\tsbbl %0,%0"
150 :"=r" (oldbit),"=m" (ADDR) 150 :"=r" (oldbit),"+m" (ADDR)
151 :"dIr" (nr)); 151 :"dIr" (nr));
152 return oldbit; 152 return oldbit;
153} 153}
@@ -166,7 +166,7 @@ static __inline__ int test_and_clear_bit(int nr, volatile void * addr)
166 166
167 __asm__ __volatile__( LOCK_PREFIX 167 __asm__ __volatile__( LOCK_PREFIX
168 "btrl %2,%1\n\tsbbl %0,%0" 168 "btrl %2,%1\n\tsbbl %0,%0"
169 :"=r" (oldbit),"=m" (ADDR) 169 :"=r" (oldbit),"+m" (ADDR)
170 :"dIr" (nr) : "memory"); 170 :"dIr" (nr) : "memory");
171 return oldbit; 171 return oldbit;
172} 172}
@@ -186,7 +186,7 @@ static __inline__ int __test_and_clear_bit(int nr, volatile void * addr)
186 186
187 __asm__( 187 __asm__(
188 "btrl %2,%1\n\tsbbl %0,%0" 188 "btrl %2,%1\n\tsbbl %0,%0"
189 :"=r" (oldbit),"=m" (ADDR) 189 :"=r" (oldbit),"+m" (ADDR)
190 :"dIr" (nr)); 190 :"dIr" (nr));
191 return oldbit; 191 return oldbit;
192} 192}
@@ -198,7 +198,7 @@ static __inline__ int __test_and_change_bit(int nr, volatile void * addr)
198 198
199 __asm__ __volatile__( 199 __asm__ __volatile__(
200 "btcl %2,%1\n\tsbbl %0,%0" 200 "btcl %2,%1\n\tsbbl %0,%0"
201 :"=r" (oldbit),"=m" (ADDR) 201 :"=r" (oldbit),"+m" (ADDR)
202 :"dIr" (nr) : "memory"); 202 :"dIr" (nr) : "memory");
203 return oldbit; 203 return oldbit;
204} 204}
@@ -217,7 +217,7 @@ static __inline__ int test_and_change_bit(int nr, volatile void * addr)
217 217
218 __asm__ __volatile__( LOCK_PREFIX 218 __asm__ __volatile__( LOCK_PREFIX
219 "btcl %2,%1\n\tsbbl %0,%0" 219 "btcl %2,%1\n\tsbbl %0,%0"
220 :"=r" (oldbit),"=m" (ADDR) 220 :"=r" (oldbit),"+m" (ADDR)
221 :"dIr" (nr) : "memory"); 221 :"dIr" (nr) : "memory");
222 return oldbit; 222 return oldbit;
223} 223}