Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

asm-generic: make bitops.h usable

bitops.h apparently suffered from some level of bitrot, it
was missing the smp_mb__{before,after}_clear_bit functions,
and included other headers in an invalid order.

This changes the file so that new architectures can use
it out of the box.

Signed-off-by: Remis Lima Baima <remis.developer@googlemail.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

authored by

Arnd Bergmann and committed by
Arnd Bergmann
9858c60c d7c4f1b7

+18 -6
+18 -6
include/asm-generic/bitops.h
··· 1 - #ifndef _ASM_GENERIC_BITOPS_H_ 2 - #define _ASM_GENERIC_BITOPS_H_ 1 + #ifndef __ASM_GENERIC_BITOPS_H 2 + #define __ASM_GENERIC_BITOPS_H 3 3 4 4 /* 5 5 * For the benefit of those who are trying to port Linux to another 6 6 * architecture, here are some C-language equivalents. You should 7 7 * recode these in the native assembly language, if at all possible. 8 - * 8 + * 9 9 * C language equivalents written by Theodore Ts'o, 9/26/92 10 10 */ 11 11 12 - #include <asm-generic/bitops/atomic.h> 13 - #include <asm-generic/bitops/non-atomic.h> 12 + #include <linux/irqflags.h> 13 + #include <linux/compiler.h> 14 + 15 + /* 16 + * clear_bit may not imply a memory barrier 17 + */ 18 + #ifndef smp_mb__before_clear_bit 19 + #define smp_mb__before_clear_bit() smp_mb() 20 + #define smp_mb__after_clear_bit() smp_mb() 21 + #endif 22 + 14 23 #include <asm-generic/bitops/__ffs.h> 15 24 #include <asm-generic/bitops/ffz.h> 16 25 #include <asm-generic/bitops/fls.h> 26 + #include <asm-generic/bitops/__fls.h> 17 27 #include <asm-generic/bitops/fls64.h> 18 28 #include <asm-generic/bitops/find.h> 19 29 ··· 36 26 #include <asm-generic/bitops/hweight.h> 37 27 #include <asm-generic/bitops/lock.h> 38 28 29 + #include <asm-generic/bitops/atomic.h> 30 + #include <asm-generic/bitops/non-atomic.h> 39 31 #include <asm-generic/bitops/ext2-non-atomic.h> 40 32 #include <asm-generic/bitops/ext2-atomic.h> 41 33 #include <asm-generic/bitops/minix.h> 42 34 43 - #endif /* _ASM_GENERIC_BITOPS_H */ 35 + #endif /* __ASM_GENERIC_BITOPS_H */