sandbox: change local_irq_save() to macro
PATCH v2 1/1 sandbox: change local_irq_save() to macro
local_irq_save() should be a macro, not a function because local_irq_save() saves flag to the given argument.
GCC is silent about this issue, but Clang warns:
In file included from lib/asm-offsets.c:15:
In file included from include/common.h:20:
In file included from include/linux/bitops.h:110:arch/sandbox/include/asm/bitops.h:59:17:
warning: variable 'flags' is uninitialized when used here
[-Wuninitialized]
local_irq_save(flags);
^~~~~That change causes another warning:
In file included from include/linux/bitops.h:110:0,
from include/common.h:20,
from lib/asm-offsets.c:15:arch/sandbox/include/asm/bitops.h: In function ?test_and_set_bit?:arch/sandbox/include/asm/bitops.h:56:16: warning: unused variable ?flags? [-Wunused-variable]
So, flags should be set to __always_unused.
---
Changes in v2:
- I forgot to "git add arch/sandbox/include/asm/bitops.h" in v1 Resending.
arch/sandbox/include/asm/bitops.h | 5 +++-- arch/sandbox/include/asm/system.h | 5 +---- 2 files changed, 4 insertions(+), 6 deletions(-)
arch/sandbox/include/asm/bitops.h +3 -2
@@ -17,6 +17,7 @@#ifndef __ASM_SANDBOX_BITOPS_H#define __ASM_SANDBOX_BITOPS_H +#include <linux/compiler.h> #include <asm/system.h> #ifdef __KERNEL__
@@ -53,7 +54,7 @@ static inline int __test_and_set_bit(int nr, void *addr)static inline int test_and_set_bit (int nr,void *addr) { -unsigned long flags; +unsigned long __always_unused flags;int out;local_irq_save (flags);
@@ -75,7 +76,7 @@ static inline int __test_and_clear_bit(int nr, void *addr)static inline int test_and_clear_bit (int nr,void *addr) { -unsigned long flags; +unsigned long __always_unused flags;int out;local_irq_save (flags);
arch/sandbox/include/asm/system.h +1 -4
@@ -8,10 +8,7 @@#define __ASM_SANDBOX_SYSTEM_H/* Define this as nops for sandbox architecture */ -static inline void local_irq_save (unsigned flags __attribute__((unused))) -{ -} - +#define local_irq_save (x)#define local_irq_enable ()#define local_irq_disable ()#define local_save_flags (x)
Signature · 1 line
1.9.1
PATCH v2 1/1 sandbox: change local_irq_save() to macro
Quoted 19 lines · Masahiro Yamada
local_irq_save()should be a macro, not a function becauselocal_irq_save()saves flag to the given argument.GCC is silent about this issue, but Clang warns:
In file included from
lib/asm-offsets.c:15:
In file included frominclude/common.h:20:
In file included frominclude/linux/bitops.h:110:arch/sandbox/include/asm/bitops.h:59:17:
warning: variable 'flags' is uninitialized when used here[-Wuninitialized] local_irq_save(flags); ^~~~~That change causes another warning:
In file included from
include/linux/bitops.h:110:0,from include/common.h:20, from lib/asm-offsets.c:15:
Quoted 8 lines
arch/sandbox/include/asm/bitops.h: In function ?test_and_set_bit?:arch/sandbox/include/asm/bitops.h:56:16: warning: unused variable ?flags? [-Wunused-variable]So, flags should be set to
__always_unused.Signed-off-by Masahiro Yamada <[email protected]>Cc Simon Glass <[email protected]>Cc Jeroen Hofstee <[email protected]>
PATCH v2 1/1 sandbox: change local_irq_save() to macro
In reply to Masahiro YamadaQuoted 19 lines · Masahiro Yamada
local_irq_save()should be a macro, not a function becauselocal_irq_save()saves flag to the given argument.GCC is silent about this issue, but Clang warns:
In file included from
lib/asm-offsets.c:15:
In file included frominclude/common.h:20:
In file included frominclude/linux/bitops.h:110:arch/sandbox/include/asm/bitops.h:59:17:
warning: variable 'flags' is uninitialized when used here[-Wuninitialized] local_irq_save(flags); ^~~~~That change causes another warning:
In file included from
include/linux/bitops.h:110:0,from include/common.h:20, from lib/asm-offsets.c:15:
Quoted 8 lines
arch/sandbox/include/asm/bitops.h: In function ?test_and_set_bit?:arch/sandbox/include/asm/bitops.h:56:16: warning: unused variable ?flags? [-Wunused-variable]So, flags should be set to
__always_unused.Signed-off-by Masahiro Yamada <[email protected]>Cc Simon Glass <[email protected]>Cc Jeroen Hofstee <[email protected]>
Regards,
Jeroen