From: Stephen Rothwell Date: Wed, 1 Sep 2021 23:18:35 +0000 (+1000) Subject: Merge remote-tracking branch 'asm-generic/master' X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=1156f62ee47b84ace2718cc6b0cf88e1e8327704;p=users%2Fjedix%2Flinux-maple.git Merge remote-tracking branch 'asm-generic/master' # Conflicts: # include/asm-generic/bitops/non-atomic.h --- 1156f62ee47b84ace2718cc6b0cf88e1e8327704 diff --cc include/asm-generic/bitops/non-atomic.h index 365377fb104b2,c5a7d8eb9c2bd..078cc68be2f12 --- a/include/asm-generic/bitops/non-atomic.h +++ b/include/asm-generic/bitops/non-atomic.h @@@ -13,18 -13,15 +13,18 @@@ * If it's called on the same region of memory simultaneously, the effect * may be that only one operation succeeds. */ -static inline void __set_bit(unsigned int nr, volatile unsigned long *addr) +static __always_inline void - arch___set_bit(int nr, volatile unsigned long *addr) ++arch___set_bit(unsigned int nr, volatile unsigned long *addr) { unsigned long mask = BIT_MASK(nr); unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); *p |= mask; } +#define __set_bit arch___set_bit -static inline void __clear_bit(unsigned int nr, volatile unsigned long *addr) +static __always_inline void - arch___clear_bit(int nr, volatile unsigned long *addr) ++arch___clear_bit(unsigned int nr, volatile unsigned long *addr) { unsigned long mask = BIT_MASK(nr); unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); @@@ -42,8 -38,7 +42,8 @@@ * If it's called on the same region of memory simultaneously, the effect * may be that only one operation succeeds. */ -static inline void __change_bit(unsigned int nr, volatile unsigned long *addr) +static __always_inline - void arch___change_bit(int nr, volatile unsigned long *addr) ++void arch___change_bit(unsigned int nr, volatile unsigned long *addr) { unsigned long mask = BIT_MASK(nr); unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); @@@ -61,8 -55,7 +61,8 @@@ * If two examples of this operation race, one can appear to succeed * but actually fail. You must protect multiple accesses with a lock. */ -static inline int __test_and_set_bit(unsigned int nr, volatile unsigned long *addr) +static __always_inline int - arch___test_and_set_bit(int nr, volatile unsigned long *addr) ++arch___test_and_set_bit(unsigned int nr, volatile unsigned long *addr) { unsigned long mask = BIT_MASK(nr); unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); @@@ -82,8 -74,7 +82,8 @@@ * If two examples of this operation race, one can appear to succeed * but actually fail. You must protect multiple accesses with a lock. */ -static inline int __test_and_clear_bit(unsigned int nr, volatile unsigned long *addr) +static __always_inline int - arch___test_and_clear_bit(int nr, volatile unsigned long *addr) ++arch___test_and_clear_bit(unsigned int nr, volatile unsigned long *addr) { unsigned long mask = BIT_MASK(nr); unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); @@@ -92,11 -83,10 +92,11 @@@ *p = old & ~mask; return (old & mask) != 0; } +#define __test_and_clear_bit arch___test_and_clear_bit /* WARNING: non atomic and it can be reordered! */ -static inline int __test_and_change_bit(unsigned int nr, - volatile unsigned long *addr) +static __always_inline int - arch___test_and_change_bit(int nr, volatile unsigned long *addr) ++arch___test_and_change_bit(unsigned int nr, volatile unsigned long *addr) { unsigned long mask = BIT_MASK(nr); unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); @@@ -112,8 -101,7 +112,8 @@@ * @nr: bit number to test * @addr: Address to start counting from */ -static inline int test_bit(unsigned int nr, const volatile unsigned long *addr) +static __always_inline int - arch_test_bit(int nr, const volatile unsigned long *addr) ++arch_test_bit(unsigned int nr, const volatile unsigned long *addr) { return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); }