diff options
Diffstat (limited to 'arch/mips/include/asm/bitops.h')
-rw-r--r-- | arch/mips/include/asm/bitops.h | 64 |
1 files changed, 32 insertions, 32 deletions
diff --git a/arch/mips/include/asm/bitops.h b/arch/mips/include/asm/bitops.h index 6663bcca9d0c..9f935f6aa996 100644 --- a/arch/mips/include/asm/bitops.h +++ b/arch/mips/include/asm/bitops.h | |||
@@ -79,28 +79,28 @@ static inline void set_bit(unsigned long nr, volatile unsigned long *addr) | |||
79 | " " __SC "%0, %1 \n" | 79 | " " __SC "%0, %1 \n" |
80 | " beqzl %0, 1b \n" | 80 | " beqzl %0, 1b \n" |
81 | " .set mips0 \n" | 81 | " .set mips0 \n" |
82 | : "=&r" (temp), "=" GCC_OFF12_ASM() (*m) | 82 | : "=&r" (temp), "=" GCC_OFF_SMALL_ASM() (*m) |
83 | : "ir" (1UL << bit), GCC_OFF12_ASM() (*m)); | 83 | : "ir" (1UL << bit), GCC_OFF_SMALL_ASM() (*m)); |
84 | #ifdef CONFIG_CPU_MIPSR2 | 84 | #if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR6) |
85 | } else if (kernel_uses_llsc && __builtin_constant_p(bit)) { | 85 | } else if (kernel_uses_llsc && __builtin_constant_p(bit)) { |
86 | do { | 86 | do { |
87 | __asm__ __volatile__( | 87 | __asm__ __volatile__( |
88 | " " __LL "%0, %1 # set_bit \n" | 88 | " " __LL "%0, %1 # set_bit \n" |
89 | " " __INS "%0, %3, %2, 1 \n" | 89 | " " __INS "%0, %3, %2, 1 \n" |
90 | " " __SC "%0, %1 \n" | 90 | " " __SC "%0, %1 \n" |
91 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m) | 91 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m) |
92 | : "ir" (bit), "r" (~0)); | 92 | : "ir" (bit), "r" (~0)); |
93 | } while (unlikely(!temp)); | 93 | } while (unlikely(!temp)); |
94 | #endif /* CONFIG_CPU_MIPSR2 */ | 94 | #endif /* CONFIG_CPU_MIPSR2 || CONFIG_CPU_MIPSR6 */ |
95 | } else if (kernel_uses_llsc) { | 95 | } else if (kernel_uses_llsc) { |
96 | do { | 96 | do { |
97 | __asm__ __volatile__( | 97 | __asm__ __volatile__( |
98 | " .set arch=r4000 \n" | 98 | " .set "MIPS_ISA_ARCH_LEVEL" \n" |
99 | " " __LL "%0, %1 # set_bit \n" | 99 | " " __LL "%0, %1 # set_bit \n" |
100 | " or %0, %2 \n" | 100 | " or %0, %2 \n" |
101 | " " __SC "%0, %1 \n" | 101 | " " __SC "%0, %1 \n" |
102 | " .set mips0 \n" | 102 | " .set mips0 \n" |
103 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m) | 103 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m) |
104 | : "ir" (1UL << bit)); | 104 | : "ir" (1UL << bit)); |
105 | } while (unlikely(!temp)); | 105 | } while (unlikely(!temp)); |
106 | } else | 106 | } else |
@@ -131,28 +131,28 @@ static inline void clear_bit(unsigned long nr, volatile unsigned long *addr) | |||
131 | " " __SC "%0, %1 \n" | 131 | " " __SC "%0, %1 \n" |
132 | " beqzl %0, 1b \n" | 132 | " beqzl %0, 1b \n" |
133 | " .set mips0 \n" | 133 | " .set mips0 \n" |
134 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m) | 134 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m) |
135 | : "ir" (~(1UL << bit))); | 135 | : "ir" (~(1UL << bit))); |
136 | #ifdef CONFIG_CPU_MIPSR2 | 136 | #if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR6) |
137 | } else if (kernel_uses_llsc && __builtin_constant_p(bit)) { | 137 | } else if (kernel_uses_llsc && __builtin_constant_p(bit)) { |
138 | do { | 138 | do { |
139 | __asm__ __volatile__( | 139 | __asm__ __volatile__( |
140 | " " __LL "%0, %1 # clear_bit \n" | 140 | " " __LL "%0, %1 # clear_bit \n" |
141 | " " __INS "%0, $0, %2, 1 \n" | 141 | " " __INS "%0, $0, %2, 1 \n" |
142 | " " __SC "%0, %1 \n" | 142 | " " __SC "%0, %1 \n" |
143 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m) | 143 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m) |
144 | : "ir" (bit)); | 144 | : "ir" (bit)); |
145 | } while (unlikely(!temp)); | 145 | } while (unlikely(!temp)); |
146 | #endif /* CONFIG_CPU_MIPSR2 */ | 146 | #endif /* CONFIG_CPU_MIPSR2 || CONFIG_CPU_MIPSR6 */ |
147 | } else if (kernel_uses_llsc) { | 147 | } else if (kernel_uses_llsc) { |
148 | do { | 148 | do { |
149 | __asm__ __volatile__( | 149 | __asm__ __volatile__( |
150 | " .set arch=r4000 \n" | 150 | " .set "MIPS_ISA_ARCH_LEVEL" \n" |
151 | " " __LL "%0, %1 # clear_bit \n" | 151 | " " __LL "%0, %1 # clear_bit \n" |
152 | " and %0, %2 \n" | 152 | " and %0, %2 \n" |
153 | " " __SC "%0, %1 \n" | 153 | " " __SC "%0, %1 \n" |
154 | " .set mips0 \n" | 154 | " .set mips0 \n" |
155 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m) | 155 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m) |
156 | : "ir" (~(1UL << bit))); | 156 | : "ir" (~(1UL << bit))); |
157 | } while (unlikely(!temp)); | 157 | } while (unlikely(!temp)); |
158 | } else | 158 | } else |
@@ -197,7 +197,7 @@ static inline void change_bit(unsigned long nr, volatile unsigned long *addr) | |||
197 | " " __SC "%0, %1 \n" | 197 | " " __SC "%0, %1 \n" |
198 | " beqzl %0, 1b \n" | 198 | " beqzl %0, 1b \n" |
199 | " .set mips0 \n" | 199 | " .set mips0 \n" |
200 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m) | 200 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m) |
201 | : "ir" (1UL << bit)); | 201 | : "ir" (1UL << bit)); |
202 | } else if (kernel_uses_llsc) { | 202 | } else if (kernel_uses_llsc) { |
203 | unsigned long *m = ((unsigned long *) addr) + (nr >> SZLONG_LOG); | 203 | unsigned long *m = ((unsigned long *) addr) + (nr >> SZLONG_LOG); |
@@ -205,12 +205,12 @@ static inline void change_bit(unsigned long nr, volatile unsigned long *addr) | |||
205 | 205 | ||
206 | do { | 206 | do { |
207 | __asm__ __volatile__( | 207 | __asm__ __volatile__( |
208 | " .set arch=r4000 \n" | 208 | " .set "MIPS_ISA_ARCH_LEVEL" \n" |
209 | " " __LL "%0, %1 # change_bit \n" | 209 | " " __LL "%0, %1 # change_bit \n" |
210 | " xor %0, %2 \n" | 210 | " xor %0, %2 \n" |
211 | " " __SC "%0, %1 \n" | 211 | " " __SC "%0, %1 \n" |
212 | " .set mips0 \n" | 212 | " .set mips0 \n" |
213 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m) | 213 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m) |
214 | : "ir" (1UL << bit)); | 214 | : "ir" (1UL << bit)); |
215 | } while (unlikely(!temp)); | 215 | } while (unlikely(!temp)); |
216 | } else | 216 | } else |
@@ -245,7 +245,7 @@ static inline int test_and_set_bit(unsigned long nr, | |||
245 | " beqzl %2, 1b \n" | 245 | " beqzl %2, 1b \n" |
246 | " and %2, %0, %3 \n" | 246 | " and %2, %0, %3 \n" |
247 | " .set mips0 \n" | 247 | " .set mips0 \n" |
248 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m), "=&r" (res) | 248 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m), "=&r" (res) |
249 | : "r" (1UL << bit) | 249 | : "r" (1UL << bit) |
250 | : "memory"); | 250 | : "memory"); |
251 | } else if (kernel_uses_llsc) { | 251 | } else if (kernel_uses_llsc) { |
@@ -254,12 +254,12 @@ static inline int test_and_set_bit(unsigned long nr, | |||
254 | 254 | ||
255 | do { | 255 | do { |
256 | __asm__ __volatile__( | 256 | __asm__ __volatile__( |
257 | " .set arch=r4000 \n" | 257 | " .set "MIPS_ISA_ARCH_LEVEL" \n" |
258 | " " __LL "%0, %1 # test_and_set_bit \n" | 258 | " " __LL "%0, %1 # test_and_set_bit \n" |
259 | " or %2, %0, %3 \n" | 259 | " or %2, %0, %3 \n" |
260 | " " __SC "%2, %1 \n" | 260 | " " __SC "%2, %1 \n" |
261 | " .set mips0 \n" | 261 | " .set mips0 \n" |
262 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m), "=&r" (res) | 262 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m), "=&r" (res) |
263 | : "r" (1UL << bit) | 263 | : "r" (1UL << bit) |
264 | : "memory"); | 264 | : "memory"); |
265 | } while (unlikely(!res)); | 265 | } while (unlikely(!res)); |
@@ -308,12 +308,12 @@ static inline int test_and_set_bit_lock(unsigned long nr, | |||
308 | 308 | ||
309 | do { | 309 | do { |
310 | __asm__ __volatile__( | 310 | __asm__ __volatile__( |
311 | " .set arch=r4000 \n" | 311 | " .set "MIPS_ISA_ARCH_LEVEL" \n" |
312 | " " __LL "%0, %1 # test_and_set_bit \n" | 312 | " " __LL "%0, %1 # test_and_set_bit \n" |
313 | " or %2, %0, %3 \n" | 313 | " or %2, %0, %3 \n" |
314 | " " __SC "%2, %1 \n" | 314 | " " __SC "%2, %1 \n" |
315 | " .set mips0 \n" | 315 | " .set mips0 \n" |
316 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m), "=&r" (res) | 316 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m), "=&r" (res) |
317 | : "r" (1UL << bit) | 317 | : "r" (1UL << bit) |
318 | : "memory"); | 318 | : "memory"); |
319 | } while (unlikely(!res)); | 319 | } while (unlikely(!res)); |
@@ -355,10 +355,10 @@ static inline int test_and_clear_bit(unsigned long nr, | |||
355 | " beqzl %2, 1b \n" | 355 | " beqzl %2, 1b \n" |
356 | " and %2, %0, %3 \n" | 356 | " and %2, %0, %3 \n" |
357 | " .set mips0 \n" | 357 | " .set mips0 \n" |
358 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m), "=&r" (res) | 358 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m), "=&r" (res) |
359 | : "r" (1UL << bit) | 359 | : "r" (1UL << bit) |
360 | : "memory"); | 360 | : "memory"); |
361 | #ifdef CONFIG_CPU_MIPSR2 | 361 | #if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR6) |
362 | } else if (kernel_uses_llsc && __builtin_constant_p(nr)) { | 362 | } else if (kernel_uses_llsc && __builtin_constant_p(nr)) { |
363 | unsigned long *m = ((unsigned long *) addr) + (nr >> SZLONG_LOG); | 363 | unsigned long *m = ((unsigned long *) addr) + (nr >> SZLONG_LOG); |
364 | unsigned long temp; | 364 | unsigned long temp; |
@@ -369,7 +369,7 @@ static inline int test_and_clear_bit(unsigned long nr, | |||
369 | " " __EXT "%2, %0, %3, 1 \n" | 369 | " " __EXT "%2, %0, %3, 1 \n" |
370 | " " __INS "%0, $0, %3, 1 \n" | 370 | " " __INS "%0, $0, %3, 1 \n" |
371 | " " __SC "%0, %1 \n" | 371 | " " __SC "%0, %1 \n" |
372 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m), "=&r" (res) | 372 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m), "=&r" (res) |
373 | : "ir" (bit) | 373 | : "ir" (bit) |
374 | : "memory"); | 374 | : "memory"); |
375 | } while (unlikely(!temp)); | 375 | } while (unlikely(!temp)); |
@@ -380,13 +380,13 @@ static inline int test_and_clear_bit(unsigned long nr, | |||
380 | 380 | ||
381 | do { | 381 | do { |
382 | __asm__ __volatile__( | 382 | __asm__ __volatile__( |
383 | " .set arch=r4000 \n" | 383 | " .set "MIPS_ISA_ARCH_LEVEL" \n" |
384 | " " __LL "%0, %1 # test_and_clear_bit \n" | 384 | " " __LL "%0, %1 # test_and_clear_bit \n" |
385 | " or %2, %0, %3 \n" | 385 | " or %2, %0, %3 \n" |
386 | " xor %2, %3 \n" | 386 | " xor %2, %3 \n" |
387 | " " __SC "%2, %1 \n" | 387 | " " __SC "%2, %1 \n" |
388 | " .set mips0 \n" | 388 | " .set mips0 \n" |
389 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m), "=&r" (res) | 389 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m), "=&r" (res) |
390 | : "r" (1UL << bit) | 390 | : "r" (1UL << bit) |
391 | : "memory"); | 391 | : "memory"); |
392 | } while (unlikely(!res)); | 392 | } while (unlikely(!res)); |
@@ -428,7 +428,7 @@ static inline int test_and_change_bit(unsigned long nr, | |||
428 | " beqzl %2, 1b \n" | 428 | " beqzl %2, 1b \n" |
429 | " and %2, %0, %3 \n" | 429 | " and %2, %0, %3 \n" |
430 | " .set mips0 \n" | 430 | " .set mips0 \n" |
431 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m), "=&r" (res) | 431 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m), "=&r" (res) |
432 | : "r" (1UL << bit) | 432 | : "r" (1UL << bit) |
433 | : "memory"); | 433 | : "memory"); |
434 | } else if (kernel_uses_llsc) { | 434 | } else if (kernel_uses_llsc) { |
@@ -437,12 +437,12 @@ static inline int test_and_change_bit(unsigned long nr, | |||
437 | 437 | ||
438 | do { | 438 | do { |
439 | __asm__ __volatile__( | 439 | __asm__ __volatile__( |
440 | " .set arch=r4000 \n" | 440 | " .set "MIPS_ISA_ARCH_LEVEL" \n" |
441 | " " __LL "%0, %1 # test_and_change_bit \n" | 441 | " " __LL "%0, %1 # test_and_change_bit \n" |
442 | " xor %2, %0, %3 \n" | 442 | " xor %2, %0, %3 \n" |
443 | " " __SC "\t%2, %1 \n" | 443 | " " __SC "\t%2, %1 \n" |
444 | " .set mips0 \n" | 444 | " .set mips0 \n" |
445 | : "=&r" (temp), "+" GCC_OFF12_ASM() (*m), "=&r" (res) | 445 | : "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (*m), "=&r" (res) |
446 | : "r" (1UL << bit) | 446 | : "r" (1UL << bit) |
447 | : "memory"); | 447 | : "memory"); |
448 | } while (unlikely(!res)); | 448 | } while (unlikely(!res)); |
@@ -485,7 +485,7 @@ static inline unsigned long __fls(unsigned long word) | |||
485 | __builtin_constant_p(cpu_has_clo_clz) && cpu_has_clo_clz) { | 485 | __builtin_constant_p(cpu_has_clo_clz) && cpu_has_clo_clz) { |
486 | __asm__( | 486 | __asm__( |
487 | " .set push \n" | 487 | " .set push \n" |
488 | " .set mips32 \n" | 488 | " .set "MIPS_ISA_LEVEL" \n" |
489 | " clz %0, %1 \n" | 489 | " clz %0, %1 \n" |
490 | " .set pop \n" | 490 | " .set pop \n" |
491 | : "=r" (num) | 491 | : "=r" (num) |
@@ -498,7 +498,7 @@ static inline unsigned long __fls(unsigned long word) | |||
498 | __builtin_constant_p(cpu_has_mips64) && cpu_has_mips64) { | 498 | __builtin_constant_p(cpu_has_mips64) && cpu_has_mips64) { |
499 | __asm__( | 499 | __asm__( |
500 | " .set push \n" | 500 | " .set push \n" |
501 | " .set mips64 \n" | 501 | " .set "MIPS_ISA_LEVEL" \n" |
502 | " dclz %0, %1 \n" | 502 | " dclz %0, %1 \n" |
503 | " .set pop \n" | 503 | " .set pop \n" |
504 | : "=r" (num) | 504 | : "=r" (num) |
@@ -562,7 +562,7 @@ static inline int fls(int x) | |||
562 | if (__builtin_constant_p(cpu_has_clo_clz) && cpu_has_clo_clz) { | 562 | if (__builtin_constant_p(cpu_has_clo_clz) && cpu_has_clo_clz) { |
563 | __asm__( | 563 | __asm__( |
564 | " .set push \n" | 564 | " .set push \n" |
565 | " .set mips32 \n" | 565 | " .set "MIPS_ISA_LEVEL" \n" |
566 | " clz %0, %1 \n" | 566 | " clz %0, %1 \n" |
567 | " .set pop \n" | 567 | " .set pop \n" |
568 | : "=r" (x) | 568 | : "=r" (x) |