Commit e0f21e1cbc26faa558cb955ccda65638a34f4bb1

Authored by Nathan Rossi
Committed by Michal Simek
1 parent 7cb73730c8

microblaze: Fix C99/gnu99 compatiblity for inline functions

'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 <nathan@nathanrossi.com>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Tom Rini <trini@konsulko.com>
Acked-by: Mans Rullgard <mans@mansr.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>

Showing 2 changed files with 22 additions and 43 deletions Side-by-side Diff

arch/microblaze/include/asm/bitops.h
... ... @@ -14,38 +14,14 @@
14 14  
15 15 #ifdef __KERNEL__
16 16 /*
17   - * Function prototypes to keep gcc -Wall happy
18   - */
19   -
20   -/*
21 17 * The __ functions are not atomic
22 18 */
23 19  
24   -extern void set_bit(int nr, volatile void *addr);
25   -extern void __set_bit(int nr, volatile void *addr);
26   -
27   -extern void clear_bit(int nr, volatile void *addr);
28   -#define __clear_bit(nr, addr) clear_bit(nr, addr)
29   -#define PLATFORM__CLEAR_BIT
30   -
31   -extern void change_bit(int nr, volatile void *addr);
32   -extern void __change_bit(int nr, volatile void *addr);
33   -extern int test_and_set_bit(int nr, volatile void *addr);
34   -extern int __test_and_set_bit(int nr, volatile void *addr);
35   -extern int test_and_clear_bit(int nr, volatile void *addr);
36   -extern int __test_and_clear_bit(int nr, volatile void *addr);
37   -extern int test_and_change_bit(int nr, volatile void *addr);
38   -extern int __test_and_change_bit(int nr, volatile void *addr);
39   -extern int __constant_test_bit(int nr, const volatile void *addr);
40   -extern int __test_bit(int nr, volatile void *addr);
41   -extern int find_first_zero_bit(void *addr, unsigned size);
42   -extern int find_next_zero_bit(void *addr, int size, int offset);
43   -
44 20 /*
45 21 * ffz = Find First Zero in word. Undefined if no zero exists,
46 22 * so code should check against ~0UL first..
47 23 */
48   -extern inline unsigned long ffz(unsigned long word)
  24 +static inline unsigned long ffz(unsigned long word)
49 25 {
50 26 unsigned long result = 0;
51 27  
... ... @@ -57,7 +33,7 @@
57 33 }
58 34  
59 35  
60   -extern inline void set_bit(int nr, volatile void *addr)
  36 +static inline void set_bit(int nr, volatile void *addr)
61 37 {
62 38 int * a = (int *) addr;
63 39 int mask;
... ... @@ -70,7 +46,7 @@
70 46 restore_flags(flags);
71 47 }
72 48  
73   -extern inline void __set_bit(int nr, volatile void *addr)
  49 +static inline void __set_bit(int nr, volatile void *addr)
74 50 {
75 51 int * a = (int *) addr;
76 52 int mask;
... ... @@ -87,7 +63,7 @@
87 63 #define smp_mb__before_clear_bit() barrier()
88 64 #define smp_mb__after_clear_bit() barrier()
89 65  
90   -extern inline void clear_bit(int nr, volatile void *addr)
  66 +static inline void clear_bit(int nr, volatile void *addr)
91 67 {
92 68 int * a = (int *) addr;
93 69 int mask;
... ... @@ -100,7 +76,10 @@
100 76 restore_flags(flags);
101 77 }
102 78  
103   -extern inline void change_bit(int nr, volatile void *addr)
  79 +#define __clear_bit(nr, addr) clear_bit(nr, addr)
  80 +#define PLATFORM__CLEAR_BIT
  81 +
  82 +static inline void change_bit(int nr, volatile void *addr)
104 83 {
105 84 int mask;
106 85 unsigned long flags;
... ... @@ -113,7 +92,7 @@
113 92 restore_flags(flags);
114 93 }
115 94  
116   -extern inline void __change_bit(int nr, volatile void *addr)
  95 +static inline void __change_bit(int nr, volatile void *addr)
117 96 {
118 97 int mask;
119 98 unsigned long *ADDR = (unsigned long *) addr;
... ... @@ -123,7 +102,7 @@
123 102 *ADDR ^= mask;
124 103 }
125 104  
126   -extern inline int test_and_set_bit(int nr, volatile void *addr)
  105 +static inline int test_and_set_bit(int nr, volatile void *addr)
127 106 {
128 107 int mask, retval;
129 108 volatile unsigned int *a = (volatile unsigned int *) addr;
... ... @@ -139,7 +118,7 @@
139 118 return retval;
140 119 }
141 120  
142   -extern inline int __test_and_set_bit(int nr, volatile void *addr)
  121 +static inline int __test_and_set_bit(int nr, volatile void *addr)
143 122 {
144 123 int mask, retval;
145 124 volatile unsigned int *a = (volatile unsigned int *) addr;
... ... @@ -151,7 +130,7 @@
151 130 return retval;
152 131 }
153 132  
154   -extern inline int test_and_clear_bit(int nr, volatile void *addr)
  133 +static inline int test_and_clear_bit(int nr, volatile void *addr)
155 134 {
156 135 int mask, retval;
157 136 volatile unsigned int *a = (volatile unsigned int *) addr;
... ... @@ -167,7 +146,7 @@
167 146 return retval;
168 147 }
169 148  
170   -extern inline int __test_and_clear_bit(int nr, volatile void *addr)
  149 +static inline int __test_and_clear_bit(int nr, volatile void *addr)
171 150 {
172 151 int mask, retval;
173 152 volatile unsigned int *a = (volatile unsigned int *) addr;
... ... @@ -179,7 +158,7 @@
179 158 return retval;
180 159 }
181 160  
182   -extern inline int test_and_change_bit(int nr, volatile void *addr)
  161 +static inline int test_and_change_bit(int nr, volatile void *addr)
183 162 {
184 163 int mask, retval;
185 164 volatile unsigned int *a = (volatile unsigned int *) addr;
... ... @@ -195,7 +174,7 @@
195 174 return retval;
196 175 }
197 176  
198   -extern inline int __test_and_change_bit(int nr, volatile void *addr)
  177 +static inline int __test_and_change_bit(int nr, volatile void *addr)
199 178 {
200 179 int mask, retval;
201 180 volatile unsigned int *a = (volatile unsigned int *) addr;
202 181  
... ... @@ -210,12 +189,12 @@
210 189 /*
211 190 * This routine doesn't need to be atomic.
212 191 */
213   -extern inline int __constant_test_bit(int nr, const volatile void *addr)
  192 +static inline int __constant_test_bit(int nr, const volatile void *addr)
214 193 {
215 194 return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr)[nr >> 5])) != 0;
216 195 }
217 196  
218   -extern inline int __test_bit(int nr, volatile void *addr)
  197 +static inline int __test_bit(int nr, volatile void *addr)
219 198 {
220 199 int * a = (int *) addr;
221 200 int mask;
... ... @@ -233,7 +212,7 @@
233 212 #define find_first_zero_bit(addr, size) \
234 213 find_next_zero_bit((addr), (size), 0)
235 214  
236   -extern inline int find_next_zero_bit(void *addr, int size, int offset)
  215 +static inline int find_next_zero_bit(void *addr, int size, int offset)
237 216 {
238 217 unsigned long *p = ((unsigned long *) addr) + (offset >> 5);
239 218 unsigned long result = offset & ~31UL;
... ... @@ -279,7 +258,7 @@
279 258 #define hweight8(x) generic_hweight8(x)
280 259  
281 260  
282   -extern inline int ext2_set_bit(int nr, volatile void *addr)
  261 +static inline int ext2_set_bit(int nr, volatile void *addr)
283 262 {
284 263 int mask, retval;
285 264 unsigned long flags;
... ... @@ -294,7 +273,7 @@
294 273 return retval;
295 274 }
296 275  
297   -extern inline int ext2_clear_bit(int nr, volatile void *addr)
  276 +static inline int ext2_clear_bit(int nr, volatile void *addr)
298 277 {
299 278 int mask, retval;
300 279 unsigned long flags;
... ... @@ -309,7 +288,7 @@
309 288 return retval;
310 289 }
311 290  
312   -extern inline int ext2_test_bit(int nr, const volatile void *addr)
  291 +static inline int ext2_test_bit(int nr, const volatile void *addr)
313 292 {
314 293 int mask;
315 294 const volatile unsigned char *ADDR = (const unsigned char *) addr;
arch/microblaze/include/asm/system.h
... ... @@ -131,7 +131,7 @@
131 131 ((__typeof__ (*(ptr)))__xchg ((unsigned long)(with), (ptr), sizeof (*(ptr))))
132 132 #define tas(ptr) (xchg ((ptr), 1))
133 133  
134   -extern inline unsigned long __xchg(unsigned long with,
  134 +static inline unsigned long __xchg(unsigned long with,
135 135 __volatile__ void *ptr, int size)
136 136 {
137 137 unsigned long tmp, flags;