diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2024-01-25 09:23:57 -0500 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2024-05-03 22:09:37 +0200 |
commit | 20e84a6f3350931859e766e2c8033db48f140c4c (patch) | |
tree | cc7649e6214e27e7e024ba9cc3b15ef7951b6f35 /arch/alpha | |
parent | d92f1456a198a78788b03ff0f40db187dab63e65 (diff) |
alpha: jensen, t2 - make __EXTERN_INLINE same as for the rest
We want io.h primitives (readb(), etc.) to be extern inline.
However, that requires the backing out-of-line implementation
somewhere, preferably kept in sync with the inline ones.
The way it's done is __EXTERN_INLINE macro that defaults to
extern inline, but can be overridden in compilation unit where
the out-of-line instance will be.
That works, but it's brittle - we *must* make sure that asm/io.h
is the very first include in such compilation units. There'd
been a bunch of bugs of that sort in the past.
Another issue is the choice of overriding definition for
__EXTERN_INLINE; it must be either 'inline' or empty. Either
will do for compilation purposes - inline void foo(...) {...}
(without extern or static) is going to generate out-of-line
instance. The difference is that 'definition without a
prototype' heuristics trigger on
void foo(void)
{
...
}
but not on
inline void foo(void)
{
...
}
Most of the overrides go for 'inline'; in two cases (sys_jensen
and core_t2) __EXTERN_INLINE is defined as empty. Without
-Wmissing-prototypes it didn't matter, but now that we have
that thing always on...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Acked-by: Paul E. McKenney <paulmck@kernel.org>
Acked-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch/alpha')
-rw-r--r-- | arch/alpha/kernel/core_t2.c | 2 | ||||
-rw-r--r-- | arch/alpha/kernel/sys_jensen.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/arch/alpha/kernel/core_t2.c b/arch/alpha/kernel/core_t2.c index 98d5b6ff8a76..3d72d90624f1 100644 --- a/arch/alpha/kernel/core_t2.c +++ b/arch/alpha/kernel/core_t2.c @@ -10,7 +10,7 @@ * Code common to all T2 core logic chips. */ -#define __EXTERN_INLINE +#define __EXTERN_INLINE inline #include <asm/io.h> #include <asm/core_t2.h> #undef __EXTERN_INLINE diff --git a/arch/alpha/kernel/sys_jensen.c b/arch/alpha/kernel/sys_jensen.c index 5c9c88428124..a1bb1c4a7e93 100644 --- a/arch/alpha/kernel/sys_jensen.c +++ b/arch/alpha/kernel/sys_jensen.c @@ -7,7 +7,7 @@ * * Code supporting the Jensen. */ -#define __EXTERN_INLINE +#define __EXTERN_INLINE inline #include <asm/io.h> #include <asm/jensen.h> #undef __EXTERN_INLINE |