diff options
author | Andi Kleen <ak@suse.de> | 2006-01-11 16:42:32 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-11 22:01:11 -0500 |
commit | 92934bcbf96bc9dc931c40ca5f1a57685b7b813b (patch) | |
tree | eb9690ca6b23b5603429a8b3d290d6ca2545bcaf /include | |
parent | 636aab5ce332d88a76362797a55804c7da643467 (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.h | 24 | ||||
-rw-r--r-- | include/asm-x86_64/bitops.h | 24 |
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 | } |