Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

x86/hweight: Use ASM_CALL_CONSTRAINT in inline asm()

Use ASM_CALL_CONSTRAINT to prevent inline asm() that includes call
instruction from being scheduled before the frame pointer gets set
up by the containing function. This unconstrained scheduling might
cause objtool to print a "call without frame pointer save/setup"
warning. Current versions of compilers don't seem to trigger this
condition, but without this constraint there's nothing to prevent
the compiler from scheduling the insn in front of frame creation.

Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://lore.kernel.org/r/20250312123905.149298-2-ubizjak@gmail.com

authored by

Uros Bizjak and committed by
Ingo Molnar
194a6130 72899899

+2 -2
+2 -2
arch/x86/include/asm/arch_hweight.h
··· 17 17 unsigned int res; 18 18 19 19 asm (ALTERNATIVE("call __sw_hweight32", "popcntl %[val], %[cnt]", X86_FEATURE_POPCNT) 20 - : [cnt] "=" REG_OUT (res) 20 + : [cnt] "=" REG_OUT (res), ASM_CALL_CONSTRAINT 21 21 : [val] REG_IN (w)); 22 22 23 23 return res; ··· 45 45 unsigned long res; 46 46 47 47 asm (ALTERNATIVE("call __sw_hweight64", "popcntq %[val], %[cnt]", X86_FEATURE_POPCNT) 48 - : [cnt] "=" REG_OUT (res) 48 + : [cnt] "=" REG_OUT (res), ASM_CALL_CONSTRAINT 49 49 : [val] REG_IN (w)); 50 50 51 51 return res;