xtensa: add kernel ABI selection to Kconfig
Add choice to use default or call0 ABI for the kernel code. If call0 ABI is chosen add '-mabi=call0' to the flags. The toolchain support for this option is rather new so only enable it when the compiler supports it. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
19c5699f9a
commit
c20e1117d9
|
@ -92,6 +92,9 @@ config CPU_BIG_ENDIAN
|
|||
config CPU_LITTLE_ENDIAN
|
||||
def_bool !CPU_BIG_ENDIAN
|
||||
|
||||
config CC_HAVE_CALL0_ABI
|
||||
def_bool $(success,test "$(shell,echo __XTENSA_CALL0_ABI__ | $(CC) -mabi=call0 -E -P - 2>/dev/null)" = 1)
|
||||
|
||||
menu "Processor type and features"
|
||||
|
||||
choice
|
||||
|
@ -250,6 +253,38 @@ config FAST_SYSCALL_SPILL_REGISTERS
|
|||
|
||||
If unsure, say N.
|
||||
|
||||
choice
|
||||
prompt "Kernel ABI"
|
||||
default KERNEL_ABI_DEFAULT
|
||||
help
|
||||
Select ABI for the kernel code. This ABI is independent of the
|
||||
supported userspace ABI and any combination of the
|
||||
kernel/userspace ABI is possible and should work.
|
||||
|
||||
In case both kernel and userspace support only call0 ABI
|
||||
all register windows support code will be omitted from the
|
||||
build.
|
||||
|
||||
If unsure, choose the default ABI.
|
||||
|
||||
config KERNEL_ABI_DEFAULT
|
||||
bool "Default ABI"
|
||||
help
|
||||
Select this option to compile kernel code with the default ABI
|
||||
selected for the toolchain.
|
||||
Normally cores with windowed registers option use windowed ABI and
|
||||
cores without it use call0 ABI.
|
||||
|
||||
config KERNEL_ABI_CALL0
|
||||
bool "Call0 ABI" if CC_HAVE_CALL0_ABI
|
||||
help
|
||||
Select this option to compile kernel code with call0 ABI even with
|
||||
toolchain that defaults to windowed ABI.
|
||||
When this option is not selected the default toolchain ABI will
|
||||
be used for the kernel code.
|
||||
|
||||
endchoice
|
||||
|
||||
config USER_ABI_CALL0
|
||||
bool
|
||||
|
||||
|
|
|
@ -35,6 +35,10 @@ KBUILD_CFLAGS += -ffreestanding -D__linux__
|
|||
KBUILD_CFLAGS += -pipe -mlongcalls -mtext-section-literals
|
||||
KBUILD_CFLAGS += $(call cc-option,-mforce-no-pic,)
|
||||
KBUILD_CFLAGS += $(call cc-option,-mno-serialize-volatile,)
|
||||
ifneq ($(CONFIG_KERNEL_ABI_CALL0),)
|
||||
KBUILD_CFLAGS += -mabi=call0
|
||||
KBUILD_AFLAGS += -mabi=call0
|
||||
endif
|
||||
|
||||
KBUILD_AFLAGS += -mlongcalls -mtext-section-literals
|
||||
|
||||
|
|
Loading…
Reference in New Issue