[PATCH 4/4] i386: remove sub-arch selection from menuconfig

Yann E. MORIN yann.morin.1998 at anciens.enib.fr
Mon Jan 25 20:49:29 UTC 2010


The optimisation flags used for i386 might have been a little bit tricky.
Those flags have been documented in docs/README-arch-optimisations.txt
in case the user really wants to meddle with compiler flags.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at anciens.enib.fr>
---
 Rules.mak                          |   48 -------------------
 docs/README-arch-optimisations.txt |   24 ++++++++++
 extra/Configs/Config.i386          |   88 ------------------------------------
 3 files changed, 24 insertions(+), 136 deletions(-)
 create mode 100644 docs/README-arch-optimisations.txt

diff --git a/Rules.mak b/Rules.mak
index bf9ba01..19104c1 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -237,38 +237,6 @@ PIEFLAG_NAME:=-fPIE
 ifeq ($(TARGET_ARCH),i386)
 	OPTIMIZATION+=$(call check_gcc,-fomit-frame-pointer,)
 
-ifeq ($(CONFIG_386)$(CONFIG_486)$(CONFIG_586)$(CONFIG_586MMX),y)
-	# Non-SSE capable processor.
-	# NB: this may make SSE insns segfault!
-	# -O1 -march=pentium3, -Os -msse etc are known to be affected.
-	# See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13685
-	# -m32 is needed if host is 64-bit
-	OPTIMIZATION+=$(call check_gcc,-m32 -mpreferred-stack-boundary=2,)
-else
-	OPTIMIZATION+=$(call check_gcc,-mpreferred-stack-boundary=4,)
-endif
-
-	# Choice of alignment (please document why!)
-	#  -falign-labels: in-line labels
-	#  (reachable by normal code flow, aligning will insert nops
-	#  which will be executed - may even make things slower)
-	#  -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
 	# allows for kbytes of less text if users link against static uclibc
 	# using ld --gc-sections.
@@ -294,22 +262,6 @@ endif
 
 	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)
diff --git a/docs/README-arch-optimisations.txt b/docs/README-arch-optimisations.txt
new file mode 100644
index 0000000..a04c1ed
--- /dev/null
+++ b/docs/README-arch-optimisations.txt
@@ -0,0 +1,24 @@
+This file documents some optimnisations that *might* be required for some
+variants (sub-arch) of any given architecture.
+
+Variants, or sub-arch, are specific versions or implementations of an
+architecture. For example, the i386 architecture can be the original i386,
+an i486, a pentium with MMX, and so on, while an ARM can be armv4, armv4t,
+armv5, cortex-A8, etc...
+
+Note: if your compiler has been correctly set up, you should *not* require
+any of those. If, and only if, it is correctly set up, and you still need
+the following, please submit a full bug report.
+
+
+Architecture    Variants                  | UCLIBC_EXTRA_CFLAGS
+------------------------------------------+-----------------------------------
+i386            i386 i486 i586 i586mmx    | -mpreferred-stack-boundary=2
+(not            (all others)              | -mpreferred-stack-boundary=4
+x86_64)         --------------------------+-----------------------------------
+                K7                        | -falign-functions=4
+                                          | -falign-labels=1
+                --------------------------+-----------------------------------
+                Crusoe CyrixIII Via-C3    | -falign-functions=0
+                                          | -falign-labels=1
+------------------------------------------+-----------------------------------
diff --git a/extra/Configs/Config.i386 b/extra/Configs/Config.i386
index 850ab8e..4997f71 100644
--- a/extra/Configs/Config.i386
+++ b/extra/Configs/Config.i386
@@ -12,91 +12,3 @@ config FORCE_OPTIONS_FOR_ARCH
 	default y
 	select ARCH_LITTLE_ENDIAN
 	select ARCH_HAS_MMU
-
-choice
-	prompt "Target x86 Processor Family"
-	default CONFIG_GENERIC_386
-	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"
-
-config CONFIG_386
-	bool "386"
-
-config CONFIG_486
-	bool "486"
-
-config CONFIG_586
-	bool "Pentium/586/K5/5x86/6x86/6x86MX"
-
-config CONFIG_586MMX
-	bool "Pentium-MMX"
-
-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)"
-
-endchoice
-- 
1.6.5





More information about the uClibc mailing list