Nathan Rossi <nat...@nathanrossi.com> writes: > 'extern inline' is not portable across various C standards. To ensure > compatiblity with various standards/compilers change the functions to > static inline. This is a portable construct and serves as a comparable > definition to 'extern inline' from the gnu90 standard. > > Additionally remove the function prototypes as they are not required due > to the functions being declared static and functions are correctly > ordered based on dependence. > > Signed-off-by: Nathan Rossi <nat...@nathanrossi.com> > Cc: Michal Simek <mon...@monstr.eu> > Cc: Tom Rini <tr...@konsulko.com>
Acked-by: Mans Rullgard <m...@mansr.com> > --- > arch/microblaze/include/asm/bitops.h | 63 > ++++++++++++------------------------ > arch/microblaze/include/asm/system.h | 2 +- > 2 files changed, 22 insertions(+), 43 deletions(-) > > diff --git a/arch/microblaze/include/asm/bitops.h > b/arch/microblaze/include/asm/bitops.h > index d42ee61..2c11d1a 100644 > --- a/arch/microblaze/include/asm/bitops.h > +++ b/arch/microblaze/include/asm/bitops.h > @@ -10,38 +10,14 @@ > > #ifdef __KERNEL__ > /* > - * Function prototypes to keep gcc -Wall happy > - */ > - > -/* > * The __ functions are not atomic > */ > > -extern void set_bit(int nr, volatile void *addr); > -extern void __set_bit(int nr, volatile void *addr); > - > -extern void clear_bit(int nr, volatile void *addr); > -#define __clear_bit(nr, addr) clear_bit(nr, addr) > -#define PLATFORM__CLEAR_BIT > - > -extern void change_bit(int nr, volatile void *addr); > -extern void __change_bit(int nr, volatile void *addr); > -extern int test_and_set_bit(int nr, volatile void *addr); > -extern int __test_and_set_bit(int nr, volatile void *addr); > -extern int test_and_clear_bit(int nr, volatile void *addr); > -extern int __test_and_clear_bit(int nr, volatile void *addr); > -extern int test_and_change_bit(int nr, volatile void *addr); > -extern int __test_and_change_bit(int nr, volatile void *addr); > -extern int __constant_test_bit(int nr, const volatile void *addr); > -extern int __test_bit(int nr, volatile void *addr); > -extern int find_first_zero_bit(void *addr, unsigned size); > -extern int find_next_zero_bit(void *addr, int size, int offset); > - > /* > * ffz = Find First Zero in word. Undefined if no zero exists, > * so code should check against ~0UL first.. > */ > -extern inline unsigned long ffz(unsigned long word) > +static inline unsigned long ffz(unsigned long word) > { > unsigned long result = 0; > > @@ -53,7 +29,7 @@ extern inline unsigned long ffz(unsigned long word) > } > > > -extern inline void set_bit(int nr, volatile void *addr) > +static inline void set_bit(int nr, volatile void *addr) > { > int * a = (int *) addr; > int mask; > @@ -66,7 +42,7 @@ extern inline void set_bit(int nr, volatile void *addr) > restore_flags(flags); > } > > -extern inline void __set_bit(int nr, volatile void *addr) > +static inline void __set_bit(int nr, volatile void *addr) > { > int * a = (int *) addr; > int mask; > @@ -83,7 +59,7 @@ extern inline void __set_bit(int nr, volatile void *addr) > #define smp_mb__before_clear_bit() barrier() > #define smp_mb__after_clear_bit() barrier() > > -extern inline void clear_bit(int nr, volatile void *addr) > +static inline void clear_bit(int nr, volatile void *addr) > { > int * a = (int *) addr; > int mask; > @@ -96,7 +72,10 @@ extern inline void clear_bit(int nr, volatile void *addr) > restore_flags(flags); > } > > -extern inline void change_bit(int nr, volatile void *addr) > +#define __clear_bit(nr, addr) clear_bit(nr, addr) > +#define PLATFORM__CLEAR_BIT > + > +static inline void change_bit(int nr, volatile void *addr) > { > int mask; > unsigned long flags; > @@ -109,7 +88,7 @@ extern inline void change_bit(int nr, volatile void *addr) > restore_flags(flags); > } > > -extern inline void __change_bit(int nr, volatile void *addr) > +static inline void __change_bit(int nr, volatile void *addr) > { > int mask; > unsigned long *ADDR = (unsigned long *) addr; > @@ -119,7 +98,7 @@ extern inline void __change_bit(int nr, volatile void > *addr) > *ADDR ^= mask; > } > > -extern inline int test_and_set_bit(int nr, volatile void *addr) > +static inline int test_and_set_bit(int nr, volatile void *addr) > { > int mask, retval; > volatile unsigned int *a = (volatile unsigned int *) addr; > @@ -135,7 +114,7 @@ extern inline int test_and_set_bit(int nr, volatile void > *addr) > return retval; > } > > -extern inline int __test_and_set_bit(int nr, volatile void *addr) > +static inline int __test_and_set_bit(int nr, volatile void *addr) > { > int mask, retval; > volatile unsigned int *a = (volatile unsigned int *) addr; > @@ -147,7 +126,7 @@ extern inline int __test_and_set_bit(int nr, volatile > void *addr) > return retval; > } > > -extern inline int test_and_clear_bit(int nr, volatile void *addr) > +static inline int test_and_clear_bit(int nr, volatile void *addr) > { > int mask, retval; > volatile unsigned int *a = (volatile unsigned int *) addr; > @@ -163,7 +142,7 @@ extern inline int test_and_clear_bit(int nr, volatile > void *addr) > return retval; > } > > -extern inline int __test_and_clear_bit(int nr, volatile void *addr) > +static inline int __test_and_clear_bit(int nr, volatile void *addr) > { > int mask, retval; > volatile unsigned int *a = (volatile unsigned int *) addr; > @@ -175,7 +154,7 @@ extern inline int __test_and_clear_bit(int nr, volatile > void *addr) > return retval; > } > > -extern inline int test_and_change_bit(int nr, volatile void *addr) > +static inline int test_and_change_bit(int nr, volatile void *addr) > { > int mask, retval; > volatile unsigned int *a = (volatile unsigned int *) addr; > @@ -191,7 +170,7 @@ extern inline int test_and_change_bit(int nr, volatile > void *addr) > return retval; > } > > -extern inline int __test_and_change_bit(int nr, volatile void *addr) > +static inline int __test_and_change_bit(int nr, volatile void *addr) > { > int mask, retval; > volatile unsigned int *a = (volatile unsigned int *) addr; > @@ -206,12 +185,12 @@ extern inline int __test_and_change_bit(int nr, > volatile void *addr) > /* > * This routine doesn't need to be atomic. > */ > -extern inline int __constant_test_bit(int nr, const volatile void *addr) > +static inline int __constant_test_bit(int nr, const volatile void *addr) > { > return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr)[nr > >> 5])) != 0; > } > > -extern inline int __test_bit(int nr, volatile void *addr) > +static inline int __test_bit(int nr, volatile void *addr) > { > int * a = (int *) addr; > int mask; > @@ -229,7 +208,7 @@ extern inline int __test_bit(int nr, volatile void *addr) > #define find_first_zero_bit(addr, size) \ > find_next_zero_bit((addr), (size), 0) > > -extern inline int find_next_zero_bit(void *addr, int size, int offset) > +static inline int find_next_zero_bit(void *addr, int size, int offset) > { > unsigned long *p = ((unsigned long *) addr) + (offset >> 5); > unsigned long result = offset & ~31UL; > @@ -275,7 +254,7 @@ found_middle: > #define hweight8(x) generic_hweight8(x) > > > -extern inline int ext2_set_bit(int nr, volatile void *addr) > +static inline int ext2_set_bit(int nr, volatile void *addr) > { > int mask, retval; > unsigned long flags; > @@ -290,7 +269,7 @@ extern inline int ext2_set_bit(int nr, volatile void > *addr) > return retval; > } > > -extern inline int ext2_clear_bit(int nr, volatile void *addr) > +static inline int ext2_clear_bit(int nr, volatile void *addr) > { > int mask, retval; > unsigned long flags; > @@ -305,7 +284,7 @@ extern inline int ext2_clear_bit(int nr, volatile void > *addr) > return retval; > } > > -extern inline int ext2_test_bit(int nr, const volatile void *addr) > +static inline int ext2_test_bit(int nr, const volatile void *addr) > { > int mask; > const volatile unsigned char *ADDR = (const unsigned char *) addr; > diff --git a/arch/microblaze/include/asm/system.h > b/arch/microblaze/include/asm/system.h > index 3090835..3107748 100644 > --- a/arch/microblaze/include/asm/system.h > +++ b/arch/microblaze/include/asm/system.h > @@ -131,7 +131,7 @@ extern void *switch_thread (struct thread_struct *last, > ((__typeof__ (*(ptr)))__xchg ((unsigned long)(with), (ptr), sizeof > (*(ptr)))) > #define tas(ptr) (xchg ((ptr), 1)) > > -extern inline unsigned long __xchg(unsigned long with, > +static inline unsigned long __xchg(unsigned long with, > __volatile__ void *ptr, int size) > { > unsigned long tmp, flags; > -- > 2.6.2 -- Måns Rullgård m...@mansr.com _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot