powerpc/64: Add GENERIC_CPU support for little endian
authorNicholas Piggin <npiggin@gmail.com>
Tue, 20 Feb 2018 19:08:30 +0000 (05:08 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sun, 1 Apr 2018 11:52:52 +0000 (21:52 +1000)
Add GENERIC_CPU support for little-endian rather than using POWER8
specific selection for POWER9 and above.

Restrict GENERIC_CPU to POWER8 and above on little endian.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
[mpe: Duplicate GENERIC_CPU to avoid a kbuild warning about the prompt
      being redefined. Spell out that GENERIC means >= POWER4 for BE.]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/Makefile
arch/powerpc/platforms/Kconfig.cputype

index 373d7f5..d6fa140 100644 (file)
@@ -146,8 +146,13 @@ CFLAGS-$(CONFIG_PPC32)     := -ffixed-r2 $(MULTIPLEWORD)
 CFLAGS-$(CONFIG_PPC32) += $(call cc-option,-mno-readonly-in-sdata)
 
 ifeq ($(CONFIG_PPC_BOOK3S_64),y)
+ifeq ($(CONFIG_CPU_LITTLE_ENDIAN),y)
+CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power8
+CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power8)
+else
 CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power7,$(call cc-option,-mtune=power5))
 CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mcpu=power5,-mcpu=power4)
+endif
 else
 CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
 endif
index fdae458..e8eac27 100644 (file)
@@ -87,7 +87,6 @@ endchoice
 choice
        prompt "CPU selection"
        depends on PPC64
-       default POWER8_CPU if CPU_LITTLE_ENDIAN
        default GENERIC_CPU
        help
          This will create a kernel which is optimised for a particular CPU.
@@ -96,9 +95,14 @@ choice
          If unsure, select Generic.
 
 config GENERIC_CPU
-       bool "Generic"
+       bool "Generic (POWER4 and above)"
        depends on !CPU_LITTLE_ENDIAN
 
+config GENERIC_CPU
+       bool "Generic (POWER8 and above)"
+       depends on CPU_LITTLE_ENDIAN
+       select ARCH_HAS_FAST_MULTIPLIER
+
 config CELL_CPU
        bool "Cell Broadband Engine"
        depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN