powerpc/64: Set default CPU in Kconfig
Since commit0069f3d14e
("powerpc/64e: Tie PPC_BOOK3E_64 to PPC_E500MC"), the only possible BOOK3E/64 are E500, so no need of a default CPU over the E5500. When the user selects book3e, they must have an e500 compatible compiler, and it won't work anymore with the default -mcpu=power64, see commitd6b551b8f9
("powerpc/64e: Fix build failure with GCC 12 (unrecognized opcode: `wrteei')"). For book3s/64, replace GENERIC_CPU by POWERPC64_CPU to match the PPC32 POWERPC_CPU, and set a default mpcu value in Kconfig directly. When a user selects a particular CPU, they must ensure the compiler has the requested capability. Therefore, remove hidden fallback, instead offer user the possibility to say they want to use the toolchain default. Fixes:d6b551b8f9
("powerpc/64e: Fix build failure with GCC 12 (unrecognized opcode: `wrteei')") Reported-by: Pali Rohár <pali@kernel.org> Tested-by: Pali Rohár <pali@kernel.org> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/76c11197b058193dcb8e8b26adffba09cfbdab11.1674632329.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
37251c7114
commit
45f7091aac
|
@ -146,19 +146,6 @@ CFLAGS-$(CONFIG_PPC32) += $(call cc-option, $(MULTIPLEWORD))
|
||||||
|
|
||||||
CFLAGS-$(CONFIG_PPC32) += $(call cc-option,-mno-readonly-in-sdata)
|
CFLAGS-$(CONFIG_PPC32) += $(call cc-option,-mno-readonly-in-sdata)
|
||||||
|
|
||||||
ifdef CONFIG_PPC_BOOK3S_64
|
|
||||||
ifdef CONFIG_CPU_LITTLE_ENDIAN
|
|
||||||
CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power8
|
|
||||||
else
|
|
||||||
CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power4
|
|
||||||
endif
|
|
||||||
CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power10, \
|
|
||||||
$(call cc-option,-mtune=power9, \
|
|
||||||
$(call cc-option,-mtune=power8)))
|
|
||||||
else ifdef CONFIG_PPC_BOOK3E_64
|
|
||||||
CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef CONFIG_FUNCTION_TRACER
|
ifdef CONFIG_FUNCTION_TRACER
|
||||||
CC_FLAGS_FTRACE := -pg
|
CC_FLAGS_FTRACE := -pg
|
||||||
ifdef CONFIG_MPROFILE_KERNEL
|
ifdef CONFIG_MPROFILE_KERNEL
|
||||||
|
@ -166,11 +153,12 @@ CC_FLAGS_FTRACE += -mprofile-kernel
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CFLAGS-$(CONFIG_TARGET_CPU_BOOL) += $(call cc-option,-mcpu=$(CONFIG_TARGET_CPU))
|
CFLAGS-$(CONFIG_TARGET_CPU_BOOL) += -mcpu=$(CONFIG_TARGET_CPU)
|
||||||
AFLAGS-$(CONFIG_TARGET_CPU_BOOL) += $(call cc-option,-mcpu=$(CONFIG_TARGET_CPU))
|
AFLAGS-$(CONFIG_TARGET_CPU_BOOL) += -mcpu=$(CONFIG_TARGET_CPU)
|
||||||
|
|
||||||
CFLAGS-$(CONFIG_E5500_CPU) += $(call cc-option,-mcpu=e500mc64,-mcpu=powerpc64)
|
CFLAGS-$(CONFIG_POWERPC64_CPU) += $(call cc-option,-mtune=power10, \
|
||||||
CFLAGS-$(CONFIG_E6500_CPU) += $(call cc-option,-mcpu=e6500,$(E5500_CPU))
|
$(call cc-option,-mtune=power9, \
|
||||||
|
$(call cc-option,-mtune=power8)))
|
||||||
|
|
||||||
asinstr := $(call as-instr,lis 9$(comma)foo@high,-DHAVE_AS_ATHIGH=1)
|
asinstr := $(call as-instr,lis 9$(comma)foo@high,-DHAVE_AS_ATHIGH=1)
|
||||||
|
|
||||||
|
|
|
@ -118,19 +118,18 @@ endchoice
|
||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "CPU selection"
|
prompt "CPU selection"
|
||||||
default GENERIC_CPU
|
|
||||||
help
|
help
|
||||||
This will create a kernel which is optimised for a particular CPU.
|
This will create a kernel which is optimised for a particular CPU.
|
||||||
The resulting kernel may not run on other CPUs, so use this with care.
|
The resulting kernel may not run on other CPUs, so use this with care.
|
||||||
|
|
||||||
If unsure, select Generic.
|
If unsure, select Generic.
|
||||||
|
|
||||||
config GENERIC_CPU
|
config POWERPC64_CPU
|
||||||
bool "Generic (POWER5 and PowerPC 970 and above)"
|
bool "Generic (POWER5 and PowerPC 970 and above)"
|
||||||
depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
|
depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
|
||||||
select PPC_64S_HASH_MMU
|
select PPC_64S_HASH_MMU
|
||||||
|
|
||||||
config GENERIC_CPU
|
config POWERPC64_CPU
|
||||||
bool "Generic (POWER8 and above)"
|
bool "Generic (POWER8 and above)"
|
||||||
depends on PPC_BOOK3S_64 && CPU_LITTLE_ENDIAN
|
depends on PPC_BOOK3S_64 && CPU_LITTLE_ENDIAN
|
||||||
select ARCH_HAS_FAST_MULTIPLIER
|
select ARCH_HAS_FAST_MULTIPLIER
|
||||||
|
@ -233,13 +232,12 @@ config E500MC_CPU
|
||||||
|
|
||||||
config TOOLCHAIN_DEFAULT_CPU
|
config TOOLCHAIN_DEFAULT_CPU
|
||||||
bool "Rely on the toolchain's implicit default CPU"
|
bool "Rely on the toolchain's implicit default CPU"
|
||||||
depends on PPC32
|
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config TARGET_CPU_BOOL
|
config TARGET_CPU_BOOL
|
||||||
bool
|
bool
|
||||||
default !GENERIC_CPU && !TOOLCHAIN_DEFAULT_CPU
|
default !TOOLCHAIN_DEFAULT_CPU
|
||||||
|
|
||||||
config TARGET_CPU
|
config TARGET_CPU
|
||||||
string
|
string
|
||||||
|
@ -251,6 +249,10 @@ config TARGET_CPU
|
||||||
default "power8" if POWER8_CPU
|
default "power8" if POWER8_CPU
|
||||||
default "power9" if POWER9_CPU
|
default "power9" if POWER9_CPU
|
||||||
default "power10" if POWER10_CPU
|
default "power10" if POWER10_CPU
|
||||||
|
default "e500mc64" if E5500_CPU
|
||||||
|
default "e6500" if E6500_CPU
|
||||||
|
default "power4" if POWERPC64_CPU && !CPU_LITTLE_ENDIAN
|
||||||
|
default "power8" if POWERPC64_CPU && CPU_LITTLE_ENDIAN
|
||||||
default "405" if 405_CPU
|
default "405" if 405_CPU
|
||||||
default "440" if 440_CPU
|
default "440" if 440_CPU
|
||||||
default "464" if 464_CPU
|
default "464" if 464_CPU
|
||||||
|
|
Loading…
Reference in New Issue