Browse Source

Cleanup arm architecture optimizations and add big endian arm as well.

Eric Andersen 21 years ago
parent
commit
12d405f57b
2 changed files with 59 additions and 16 deletions
  1. 16 4
      Rules.mak
  2. 43 12
      extra/Configs/Config.arm

+ 16 - 4
Rules.mak

@@ -130,10 +130,21 @@ endif
 
 ifeq ($(strip $(TARGET_ARCH)),arm)
 	OPTIMIZATION+=-fstrict-aliasing
+	CPU_LDFLAGS-$(ARCH_LITTLE_ENDIAN):="-EL"
+	CPU_LDFLAGS-$(ARCH_BIG_ENDIAN):="-EB"
+	CPU_CFLAGS-$(ARCH_LITTLE_ENDIAN):="-mlittle-endian"
+	CPU_CFLAGS-$(ARCH_BIG_ENDIAN):="-mbig-endian"
 	CPU_CFLAGS-$(CONFIG_GENERIC_ARM):=
-	CPU_CFLAGS-$(CONFIG_ARM7TDMI):="-march=arm7tdmi"
-	CPU_CFLAGS-$(CONFIG_STRONGARM):="-march=strongarm"
-	CPU_CFLAGS-$(CONFIG_XSCALE):="-march=xscale"
+	CPU_CFLAGS-$(CONFIG_ARM610):=-mtune=arm610 -march=armv3
+	CPU_CFLAGS-$(CONFIG_ARM710):=-mtune=arm710 -march=armv3
+	CPU_CFLAGS-$(CONFIG_ARM720T):=-mtune=arm7tdmi -march=armv4 
+	CPU_CFLAGS-$(CONFIG_ARM920T):=-mtune=arm9tdmi -march=armv4
+	CPU_CFLAGS-$(CONFIG_ARM922T):=-mtune=arm9tdmi -march=armv4
+	CPU_CFLAGS-$(CONFIG_ARM926T):=-mtune=arm9tdmi -march=armv4
+	CPU_CFLAGS-$(CONFIG_ARM_SA110):=-mtune=strongarm110 -march=armv4
+	CPU_CFLAGS-$(CONFIG_ARM_SA1100):=-mtune=strongarm1100 -march=armv4
+	CPU_CFLAGS-$(CONFIG_ARM_XSCALE):=$(call check_gcc,-mtune=xscale,-mtune=strongarm110) \
+				$(call check_gcc,-march=armv5te,-march=armv4 -Wa$(comma)-mxscale)
 endif
 
 ifeq ($(strip $(TARGET_ARCH)),sh)
@@ -212,7 +223,8 @@ ifeq ($(HAVE_SHARED),y)
    endif
 endif
 ifeq ($(UCLIBC_HAS_SOFT_FLOAT),y)
-    CFLAGS += $(call check_gcc,-msoft-float,)
+    CFLAGS += -msoft-float
+    LDFLAGS+= -Wa,-mno-fpu
 endif
 
 CFLAGS_NOPIC:=$(CFLAGS)

+ 43 - 12
extra/Configs/Config.arm

@@ -37,26 +37,57 @@ choice
 
 	  Here are the settings recommended for greatest speed:
 	  - "Generic Arm" select this if your compiler is already setup to
-	    optimize things properly.
-	  - "arm7tdmi" an MMU-less ARM core such as those distributed
-	    by Atmel, Samsung, and others.
-	  - "StrongARM" for Intel's StrongARM cores, such as the
-	     StrongARM 110/1100/1110.
-	  - "XScale" for Intel's XScale processors 
+	    optimize things properly, or if you want to run on pretty much
+	    everything, or you just don't much care.
+	  - For anything else, pick the ARM core type that best matches the
+	    cpu you will be using on your device.
 
 	  If you don't know what to do, choose "Generic Arm".
 
 config CONFIG_GENERIC_ARM
 	bool "Generic Arm"
 
-config CONFIG_ARM7TDMI
-	bool "arm7tdmi"
+config CONFIG_ARM610
+	bool "Arm 610"
 
-config CONFIG_STRONGARM
-	bool "StrongARM"
+config CONFIG_ARM710
+	bool "Arm 710"
 
-config CONFIG_XSCALE
-	bool "XScale"
+config CONFIG_ARM720T
+	bool "Arm 720T"
+
+config CONFIG_ARM920T
+	bool "Arm 920T"
+
+config CONFIG_ARM922T
+	bool "Arm 922T"
+
+config CONFIG_ARM926T
+	bool "Arm 926T"
+
+config CONFIG_ARM_SA110
+	bool "Intel StrongArm SA-110"
+
+config CONFIG_ARM_SA1100
+	bool "Intel StrongArm SA-1100"
+
+config CONFIG_ARM_XSCALE
+	bool "Intel Xscale"
+
+endchoice
+
+choice
+	prompt "Target Processor Endianness"
+	default ARCH_LITTLE_ENDIAN
+	help
+	  This is the endianness you wish to build use.  Choose either Big
+	  Endian, or Little Endian.
+
+config ARCH_LITTLE_ENDIAN
+	bool "Little Endian"
+
+config ARCH_BIG_ENDIAN
+	bool "Big Endian"
 
 endchoice