summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Rules.mak20
-rw-r--r--extra/Configs/Config.arm55
2 files changed, 59 insertions, 16 deletions
diff --git a/Rules.mak b/Rules.mak
index 3b162addf..fdc2e3050 100644
--- a/Rules.mak
+++ b/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)
diff --git a/extra/Configs/Config.arm b/extra/Configs/Config.arm
index e310fec41..1fae6422f 100644
--- a/extra/Configs/Config.arm
+++ b/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