arch: Introduce CONFIG_FUNCTION_ALIGNMENT
authorPeter Zijlstra <peterz@infradead.org>
Thu, 15 Sep 2022 11:10:47 +0000 (13:10 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Mon, 17 Oct 2022 14:40:58 +0000 (16:40 +0200)
commitd49a0626216b95cd4bf696f6acf55f39a16ab0bb
tree52349000d2ed416b132b74e58c9f005b9a51211c
parent24a9c543d2114d416f84e386c2fa90089bd97e4c
arch: Introduce CONFIG_FUNCTION_ALIGNMENT

Generic function-alignment infrastructure.

Architectures can select FUNCTION_ALIGNMENT_xxB symbols; the
FUNCTION_ALIGNMENT symbol is then set to the largest such selected
size, 0 otherwise.

From this the -falign-functions compiler argument and __ALIGN macro
are set.

This incorporates the DEBUG_FORCE_FUNCTION_ALIGN_64B knob and future
alignment requirements for x86_64 (later in this series) into a single
place.

NOTE: also removes the 0x90 filler byte from the generic __ALIGN
      primitive, that value makes no sense outside of x86.

NOTE: .balign 0 reverts to a no-op.

Requested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20220915111143.719248727@infradead.org
Makefile
arch/Kconfig
arch/ia64/Kconfig
arch/ia64/Makefile
arch/x86/Kconfig
arch/x86/boot/compressed/head_64.S
arch/x86/include/asm/linkage.h
include/asm-generic/vmlinux.lds.h
include/linux/linkage.h
lib/Kconfig.debug