Browse Source

i386: punt all config options that just control -march

You can set these yourself in your CFLAGS, and our list is incomplete
and pointless (we agreed some time ago to stop doing this).

We keep around CONFIG_[3456]86 because it is used to select between
different optimized subdirs of handcoded assembly.

Also take this opportunity to up the default to i686.  If you're using
an older cpu, then you can handle changing this yourself.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Mike Frysinger 11 years ago
parent
commit
54a97c4dc4
3 changed files with 12 additions and 103 deletions
  1. 3 29
      Rules.mak
  2. 6 71
      extra/Configs/Config.i386
  3. 3 3
      extra/Configs/Config.in

+ 3 - 29
Rules.mak

@@ -331,7 +331,9 @@ ifeq ($(TARGET_ARCH),i386)
 $(eval $(call check-gcc-var,-fomit-frame-pointer))
 	OPTIMIZATION += $(CFLAG_-fomit-frame-pointer)
 
-ifeq ($(CONFIG_386)$(CONFIG_486)$(CONFIG_586)$(CONFIG_586MMX),y)
+ifeq ($(CONFIG_386)$(CONFIG_486)$(CONFIG_586),y)
+	# TODO: Change this to a gcc version check.  This bug
+	# should be fixed with at least gcc-4.3.
 	# Non-SSE capable processor.
 	# NB: this may make SSE insns segfault!
 	# -O1 -march=pentium3, -Os -msse etc are known to be affected.
@@ -350,18 +352,6 @@ endif
 	#  -falign-jumps: reachable only by a jump
 	# Generic: no alignment at all (smallest code)
 	GCC_FALIGN=$(call check_gcc,-falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1,-malign-jumps=1 -malign-loops=1)
-ifeq ($(CONFIG_K7),y)
-	# Align functions to four bytes, use default for jumps and loops (why?)
-	GCC_FALIGN=$(call check_gcc,-falign-functions=4 -falign-labels=1,-malign-functions=4)
-endif
-ifeq ($(CONFIG_CRUSOE),y)
-	# Use compiler's default for functions, jumps and loops (why?)
-	GCC_FALIGN=$(call check_gcc,-falign-functions=0 -falign-labels=1,-malign-functions=0)
-endif
-ifeq ($(CONFIG_CYRIXIII),y)
-	# Use compiler's default for functions, jumps and loops (why?)
-	GCC_FALIGN=$(call check_gcc,-falign-functions=0 -falign-labels=1,-malign-functions=0)
-endif
 	OPTIMIZATION+=$(GCC_FALIGN)
 
 	# Putting each function and data object into its own section
@@ -386,22 +376,6 @@ $(eval $(call check-ld-var,--sort-section=alignment))
 
 	CPU_LDFLAGS-y+=-m32
 	CPU_CFLAGS-y+=-m32
-	CPU_CFLAGS-$(CONFIG_386)+=-march=i386
-	CPU_CFLAGS-$(CONFIG_486)+=-march=i486
-	CPU_CFLAGS-$(CONFIG_ELAN)+=-march=i486
-	CPU_CFLAGS-$(CONFIG_586)+=-march=i586
-	CPU_CFLAGS-$(CONFIG_586MMX)+=$(call check_gcc,-march=pentium-mmx,-march=i586)
-	CPU_CFLAGS-$(CONFIG_686)+=-march=i686
-	CPU_CFLAGS-$(CONFIG_PENTIUMII)+=$(call check_gcc,-march=pentium2,-march=i686)
-	CPU_CFLAGS-$(CONFIG_PENTIUMIII)+=$(call check_gcc,-march=pentium3,-march=i686)
-	CPU_CFLAGS-$(CONFIG_PENTIUM4)+=$(call check_gcc,-march=pentium4,-march=i686)
-	CPU_CFLAGS-$(CONFIG_K6)+=$(call check_gcc,-march=k6,-march=i586)
-	CPU_CFLAGS-$(CONFIG_K7)+=$(call check_gcc,-march=athlon,-march=i686)
-	CPU_CFLAGS-$(CONFIG_CRUSOE)+=-march=i686
-	CPU_CFLAGS-$(CONFIG_WINCHIPC6)+=$(call check_gcc,-march=winchip-c6,-march=i586)
-	CPU_CFLAGS-$(CONFIG_WINCHIP2)+=$(call check_gcc,-march=winchip2,-march=i586)
-	CPU_CFLAGS-$(CONFIG_CYRIXIII)+=$(call check_gcc,-march=c3,-march=i486)
-	CPU_CFLAGS-$(CONFIG_NEHEMIAH)+=$(call check_gcc,-march=c3-2,-march=i686)
 endif
 
 ifeq ($(TARGET_ARCH),sparc)

+ 6 - 71
extra/Configs/Config.i386

@@ -17,41 +17,12 @@ config FORCE_OPTIONS_FOR_ARCH
 
 choice
 	prompt "Target x86 Processor Family"
-	default CONFIG_486
+	default CONFIG_686
 	help
 	  This is the processor type of your CPU. This information is used for
-	  optimizing purposes.  To build a library that will run on all x86 CPU
-	  types (albeit not optimally fast), you can specify "386" here.  If
-	  you pick anything other than "386", there is no guarantee that uClibc
-	  will even run on anything other than the selected processor type.
-
-	  Here are the settings recommended for greatest speed:
-	  - "Generic 386" select this if your compiler is already setup to 
-	     optimize things properly.
-	  - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI
-	     486DLC/DLC2, UMC 486SX-S and NexGen Nx586.  Only "386" kernels
-	     will run on a 386 class machine.
-	  - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or
-	     SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
-	  - "586" for Intel Pentium and other generic Pentium CPUs
-	  - "Pentium-MMX" for the Intel Pentium MMX.
-	  - "Pentium-Pro" for the Intel Pentium Pro/Celeron/Pentium II.
-	  - "Pentium-III" for the Intel Pentium III
-	     and Celerons based on the Coppermine core.
-	  - "Pentium-4" for the Intel Pentium 4.
-	  - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
-	  - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird).
-	  - "Elan" for the AMD Elan.
-	  - "Crusoe" for the Transmeta Crusoe series.
-	  - "Winchip-C6" for original IDT Winchip.
-	  - "Winchip-2/Winchip-2A/Winchip-3" for IDT Winchip CPUs
-	  - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
-	  - "VIA C3-2 Nehemiah" model 9 and above.
-
-	  If you don't know what to do, choose "386".
-
-config CONFIG_GENERIC_386
-	bool "Generic 386"
+	  selecting different handcoded optimization functions.  Nowadays, most
+	  people have an i686 CPU.  If you don't, you most likely know what this
+	  means and can pick the right one for your processor.
 
 config CONFIG_386
 	bool "386"
@@ -60,45 +31,9 @@ config CONFIG_486
 	bool "486"
 
 config CONFIG_586
-	bool "Pentium/586/K5/5x86/6x86/6x86MX"
-
-config CONFIG_586MMX
-	bool "Pentium-MMX"
+	bool "586"
 
 config CONFIG_686
-	bool "Pentium-Pro"
-
-config CONFIG_PENTIUMII
-	bool "Celeron/Pentium-II"
-
-config CONFIG_PENTIUMIII
-	bool "Pentium-III/Celeron(Coppermine)/Pentium-III Xeon"
-
-config CONFIG_PENTIUM4
-	bool "Pentium-4/Celeron(P4-based)/Xeon"
-
-config CONFIG_K6
-	bool "K6/K6-II/K6-III"
-
-config CONFIG_K7
-	bool "Athlon/Duron/K7"
-
-config CONFIG_ELAN
-	bool "Elan"
-
-config CONFIG_CRUSOE
-	bool "Crusoe"
-
-config CONFIG_WINCHIPC6
-	bool "Winchip-C6"
-
-config CONFIG_WINCHIP2
-	bool "Winchip-2/Winchip-2A/Winchip-3"
-
-config CONFIG_CYRIXIII
-	bool "CyrixIII/VIA-C3"
-
-config CONFIG_NEHEMIAH
-	bool "VIA C3-2 (Nehemiah)"
+	bool "686"
 
 endchoice

+ 3 - 3
extra/Configs/Config.in

@@ -239,10 +239,10 @@ config TARGET_SUBARCH
 	default "e500" if CONFIG_E500
 	default "classic" if CONFIG_CLASSIC
 	default "sh4" if CONFIG_SH4
-	default "" if CONFIG_GENERIC_386 || CONFIG_386
+	default "" if CONFIG_386
 	default "i486" if CONFIG_486
-	default "i586" if CONFIG_586 || CONFIG_586MMX
-	default "i686" if TARGET_ARCH = "i386"
+	default "i586" if CONFIG_586
+	default "i686" if CONFIG_686
 	default ""
 
 source "extra/Configs/Config.in.arch"