three i386 patches
cover three i386 patches
Hi Andrew,
following this mail, I'll send the following three patches that have accumulated in my better i386 CPU selection patch (but don't depend on it):
[1/3] gcc 2.95 supports -march=k6 (no need for check_gcc) [2/3] added Pentium M and Pentium-4 M options [3/3] AMD Elan is a different subarch
Please apply
Adrian
Signature · 4 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon SeedPATCH 1/3 gcc 2.95 supports -march=k6 (no need for check_gcc)
gcc 2.95 supports -march=k6 (no need for check_gcc)
arch/i386/Makefile renamed from arch/i386/Makefile.old +1 -1
@@ -35,7 +35,7 @@ cflags-$(CONFIG_MPENTIUMII) += $(call check_gcc,-march=pentium2,-march=i686) cflags-$(CONFIG_MPENTIUMIII) += $(call check_gcc,-march=pentium3,-march=i686) cflags-$(CONFIG_MPENTIUM4) += $(call check_gcc,-march=pentium4,-march=i686) -cflags-$(CONFIG_MK6) += $(call check_gcc,-march=k6,-march=i586) +cflags-$(CONFIG_MK6) += -march=k6 # Please note, that patches that add -march=athlon-xp and friends are pointless. # They make zero difference whatsosever to performance at this time. cflags-$(CONFIG_MK7) += $(call check_gcc,-march=athlon,-march=i686 $(align)-functions=4)
PATCH 2/3 add Pentium M and Pentium-4 M options
In reply to Adrian Bunkadd Pentium M and Pentium-4 M options:
- add MPENTIUMM (equivalent to PENTIUMIII except for a bigger X86_L1_CACHE_SHIFT)
- document that MPENTIUM4 is the right choice for a Pentium-4 M
diffstat output:
arch/i386/Kconfig | 28 +++++++++++++++++----------- arch/i386/Makefile | 1 + include/asm-i386/module.h | 4 +++- 3 files changed, 21 insertions(+), 12 deletions(-)
include/asm-i386/module.h renamed from include/asm-i386/module.h.old +3 -1
@@ -26,6 +26,8 @@#define MODULE_PROC_FAMILY "PENTIUMII "#elif definedCONFIG_MPENTIUMIII #define MODULE_PROC_FAMILY "PENTIUMIII " +#elif definedCONFIG_MPENTIUMM +#define MODULE_PROC_FAMILY "PENTIUMM "#elif definedCONFIG_MPENTIUM4 #define MODULE_PROC_FAMILY "PENTIUM4 "#elif definedCONFIG_MK6
@@ -49,7 +51,7 @@#elif CONFIG_MVIAC3_2 #define MODULE_PROC_FAMILY "VIAC3-2 "#else -#error unknown processor family +#define MODULE_PROC_FAMILY "this needs to be fixed"#endif #define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY
arch/i386/Kconfig renamed from arch/i386/Kconfig.old +17 -11
@@ -222,14 +222,20 @@ extended prefetch instructions in addition to the Pentium II extensions. +config MPENTIUMM + bool "Pentium M" + help + Select this for Intel Pentium M (not Pentium-4 M) + notebook chips. + config MPENTIUM4 - bool "Pentium-4/Celeron(P4-based)/Xeon" + bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon" help - Select this for Intel Pentium 4 chips. This includes both - the Pentium 4 and P4-based Celeron chips. This option - enables compile flags optimized for the chip, uses the - correct cache shift, and applies any applicable Pentium III - optimizations. + Select this for Intel Pentium 4 chips. This includes the + Pentium 4, P4-based Celeron and Xeon, and Pentium-4 M + (not Pentium M) chips. This option enables compile flags + optimized for the chip, uses the correct cache shift, and + applies any applicable Pentium III optimizations. config MK6 bool "K6/K6-II/K6-III"
@@ -329,7 +335,7 @@ int default "7" if MPENTIUM4 || X86_GENERIC default "4" if MELAN || M486 || M386 - default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 + default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MCYRIXIII || MK6 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 default "6" if MK7 || MK8 config RWSEM_GENERIC_SPINLOCK
@@ -379,17 +385,17 @@ config X86_GOOD_APIC bool - depends on MK7 || MPENTIUM4 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || MK8 + depends on MK7 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || MK8 default y config X86_INTEL_USERCOPY bool - depends on MPENTIUM4 || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 + depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 default y config X86_USE_PPRO_CHECKSUM bool - depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 + depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 default y config X86_USE_3DNOW
@@ -561,7 +567,7 @@ config X86_TSC bool - depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2) && !X86_NUMAQ + depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2) && !X86_NUMAQ default y config X86_MCE
arch/i386/Makefile renamed from arch/i386/Makefile.old +1 -0
@@ -34,6 +34,7 @@ cflags-$(CONFIG_M686) += -march=i686 cflags-$(CONFIG_MPENTIUMII) += $(call check_gcc,-march=pentium2,-march=i686) cflags-$(CONFIG_MPENTIUMIII) += $(call check_gcc,-march=pentium3,-march=i686) +cflags-$(CONFIG_MPENTIUMM) += $(call check_gcc,-march=pentium3,-march=i686) cflags-$(CONFIG_MPENTIUM4) += $(call check_gcc,-march=pentium4,-march=i686) cflags-$(CONFIG_MK6) += -march=k6 # Please note, that patches that add -march=athlon-xp and friends are pointless.
PATCH 3/3 AMD Elan is a different subarch
In reply to Adrian Bunk- AMD Elan is a different subarch, you can't configure a kernel that runs on both the AMD Elan and other i386 CPUs
- added optimizing CFLAGS for the AMD Elan
diffstat output:
arch/i386/Kconfig | 17 +++++++++++++++-- arch/i386/Makefile | 3 +++ arch/i386/boot/setup.S | 2 +- arch/i386/kernel/cpu/cpufreq/Kconfig | 2 +- include/asm-i386/timex.h | 2 +- 5 files changed, 21 insertions(+), 5 deletions(-)
arch/i386/boot/setup.S renamed from arch/i386/boot/setup.S.old +1 -1
@@ -755,7 +755,7 @@ # AMD Elan bug fix by Robert Schwebel. # -#if defined(CONFIG_MELAN) +#if defined(CONFIG_X86_ELAN) movb $0x02, %al # alternate A20 gate outb %al, $0x92 # this works on SC410/SC520 a20_elan_wait:
include/asm-i386/timex.h renamed from include/asm-i386/timex.h.old +1 -1
@@ -12,7 +12,7 @@#ifdef CONFIG_X86_PC9800 extern int CLOCK_TICK_RATE ;#else -#ifdef CONFIG_MELAN +#ifdef CONFIG_X86_ELAN # define CLOCK_TICK_RATE 1189200/* AMD Elan has different frequency! */ #else # define CLOCK_TICK_RATE 1193182/* Underlying HZ */
arch/i386/kernel/cpu/cpufreq/Kconfig renamed from arch/i386/kernel/cpu/cpufreq/Kconfig.old +1 -1
@@ -54,7 +54,7 @@ config ELAN_CPUFREQ tristate "AMD Elan" - depends on CPU_FREQ_TABLE && MELAN + depends on CPU_FREQ_TABLE && X86_ELAN ---help--- This adds the CPUFreq driver for AMD Elan SC400 and SC410 processors.
arch/i386/Kconfig renamed from arch/i386/Kconfig.old +15 -2
@@ -43,6 +43,15 @@ help Choose this option if your computer is a standard PC or compatible. +config X86_ELAN + bool "AMD Elan" + help + Select this for an AMD Elan processor. + + Do not use this option for K6/Athlon/Opteron processors! + + If unsure, choose "PC-compatible" instead. + config X86_VOYAGER bool "Voyager (NCR)" help
@@ -130,6 +139,8 @@ default y depends on SMP && X86_ES7000 && MPENTIUMIII +if !X86_ELAN + choice prompt "Processor family" default M686
@@ -319,6 +330,8 @@ when it has moderate overhead. This is intended for generic distributions kernels. +endif + # # Define implied options from the CPU selection here #
@@ -335,7 +348,7 @@ config X86_L1_CACHE_SHIFT int default "7" if MPENTIUM4 || X86_GENERIC - default "4" if MELAN || M486 || M386 + default "4" if X86_ELAN || M486 || M386 default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MCYRIXIII || MK6 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 default "6" if MK7 || MK8
@@ -381,7 +394,7 @@ config X86_ALIGNMENT_16 bool - depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 + depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || X86_ELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 default y config X86_GOOD_APIC
arch/i386/Makefile renamed from arch/i386/Makefile.old +3 -0
@@ -48,6 +48,9 @@ cflags-$(CONFIG_MCYRIXIII) += $(call check_gcc,-march=c3,-march=i486) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 cflags-$(CONFIG_MVIAC3_2) += $(call check_gcc,-march=c3-2,-march=i686) +# AMD Elan support +cflags-$(CONFIG_X86_ELAN) += -march=i486 + CFLAGS += $(cflags-y) # Default subarch .c files