This patch adds CPU selection to Kconfig.cputype. I did my best to make 
oldconfig
happy, but some things just don't work ;-) Maybe more CPUs and help texts can 
be 
added, but it should be enough for now.

Subject: [PATCH 1/2] [PPC64] add tuning options to Kconfig.cputype

---
 arch/powerpc/platforms/Kconfig.cputype |  133 ++++++++++++++++++++++++++++---
 1 files changed, 120 insertions(+), 13 deletions(-)

diff --git a/arch/powerpc/platforms/Kconfig.cputype 
b/arch/powerpc/platforms/Kconfig.cputype
index 7f65127..f528748 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -56,8 +56,127 @@ config E200
 
 endchoice
 
+config TUNE_OPT_CPU
+       depends on PPC64
+       def_bool n 
+       prompt "Tune/optimize for a specific CPU"
+       help
+           This option enables a sub-menu where you can choose a certain
+           CPU to tune (via -mtune) or optimize (via -mcpu) for.
+
+choice
+       depends on TUNE_OPT_CPU
+       prompt "Choose the CPU to tune for"
+       default TUNE_POWER4
+       help
+         Choosing this will make the code run faster on the selected CPU, 
+         but somehow slower on others.
+         
+          This option only changes the scheduling of instructions, not the 
+          selection of instructions itself, so the resulting kernel will keep 
+          running on all other machines.
+          
+          The default is to tune for power4.
+
+config TUNE_RS64
+       bool "RS64"
+
+config TUNE_POWER3
+       bool "POWER3"
+
+config TUNE_POWER4
+       bool "POWER4/G5/970"
+       help
+         Cause the compiler to tune for the POWER4 and derivates CPUS, like
+         G5 and other PPC970 variants.
+         
+config TUNE_POWER5
+       bool "POWER5"
+
+config TUNE_POWER6
+       bool "POWER6"
+
+config TUNE_CELL
+       bool "Cell Broadband Engine"
+       help
+         Cause the compiler to optimize for the PPE of the Cell Broadband
+         Engine. This will make the code run considerably faster on Cell
+         but somewhat slower on other machines. This option only changes
+         the scheduling of instructions, not the selection of instructions
+         itself, so the resulting kernel will keep running on all other
+         machines.
+         
+endchoice
+
+choice
+       depends on TUNE_OPT_CPU
+       default OPT_NONE
+       prompt "Choose the CPU to optimize for"
+       help
+         Choosing this will make the code run significant faster on the 
+         selected CPU by selecting the scheduling and the instruction set
+         for the specific CPU. It will propably not run on earlier gernerations
+         but should run on newer ones.
+         
+          The default is not to optimize for a specific CPU.
+
+config OPT_NONE
+       bool "none"
+
+config OPT_RS64
+       bool "RS64"
+
+config OPT_POWER3
+       bool "POWER3"
+       select POWER3
+
+config OPT_POWER4
+       bool "POWER4"
+       select POWER4_ONLY
+       ---help---
+         Cause the compiler to optimize for POWER4 processors. The resulting 
+         binary will not work on POWER3 or RS64 processors when compiled 
+         with binutils 2.15 or later.
+
+config OPT_PPC970
+       bool "G5/PPC970"
+       select POWER4_ONLY
+
+config OPT_POWER5
+       bool "POWER5"
+       select POWER4_ONLY
+
+config OPT_POWER6
+       bool "POWER6"   
+       select POWER4_ONLY
+
+endchoice
+
+config OPT_CPU
+       depends on PPC64
+       string
+       default "rs64"   if OPT_RS64
+       default "power3" if OPT_POWER3
+       default "power4" if OPT_POWER4
+       default "970"    if OPT_PPC970
+       default "power5" if OPT_POWER5
+       default "power6" if OPT_POWER6
+       default "cell"   if OPT_CELL
+       default ""
+
+config TUNE_CPU
+       depends on PPC64
+       string
+       default "rs64"   if TUNE_RS64
+       default "power3" if TUNE_POWER3
+       default "power5" if TUNE_POWER5
+       default "power6" if TUNE_POWER6
+       default "cell"   if TUNE_CELL
+       default "power4"
+
 config POWER4_ONLY
-       bool "Optimize for POWER4"
+       bool 
+       prompt "Optimize for POWER4" if !TUNE_OPT_CPU
        depends on PPC64
        default n
        ---help---
@@ -74,18 +193,6 @@ config POWER4
        depends on PPC64
        def_bool y
 
-config TUNE_CELL
-       bool "Optimize for Cell Broadband Engine"
-       depends on PPC64
-       help
-         Cause the compiler to optimize for the PPE of the Cell Broadband
-         Engine. This will make the code run considerably faster on Cell
-         but somewhat slower on other machines. This option only changes
-         the scheduling of instructions, not the selection of instructions
-         itself, so the resulting kernel will keep running on all other
-         machines. When building a kernel that is supposed to run only
-         on Cell, you should also select the POWER4_ONLY option.
-
 # this is temp to handle compat with arch=ppc
 config 8xx
        bool
-- 
1.5.6.2

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to