autodetect ARM variant/ABI setup based on the compiler settings
SVN-Revision: 25328
This commit is contained in:
parent
fa5259d442
commit
247e919223
12 changed files with 612 additions and 117 deletions
|
@ -1,25 +1,7 @@
|
|||
ARCH_ANY_ENDIAN=y
|
||||
ARCH_LITTLE_ENDIAN=y
|
||||
ARCH_WANTS_LITTLE_ENDIAN=y
|
||||
# CONFIG_ARM10T is not set
|
||||
# CONFIG_ARM1136JF_S is not set
|
||||
# CONFIG_ARM1176JZF_S is not set
|
||||
# CONFIG_ARM1176JZ_S is not set
|
||||
# CONFIG_ARM610 is not set
|
||||
# CONFIG_ARM710 is not set
|
||||
# CONFIG_ARM720T is not set
|
||||
# CONFIG_ARM7TDMI is not set
|
||||
# CONFIG_ARM920T is not set
|
||||
# CONFIG_ARM922T is not set
|
||||
# CONFIG_ARM926T is not set
|
||||
# CONFIG_ARM_CORTEX_M1 is not set
|
||||
# CONFIG_ARM_CORTEX_M3 is not set
|
||||
# CONFIG_ARM_EABI is not set
|
||||
# CONFIG_ARM_IWMMXT is not set
|
||||
CONFIG_ARM_OABI=y
|
||||
# CONFIG_ARM_SA110 is not set
|
||||
# CONFIG_ARM_SA1100 is not set
|
||||
CONFIG_ARM_XSCALE=y
|
||||
# CONFIG_GENERIC_ARM is not set
|
||||
# COMPILE_IN_THUMB_MODE is not set
|
||||
TARGET_ARCH="arm"
|
||||
TARGET_arm=y
|
||||
# USE_BX is not set
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
ARCH_ANY_ENDIAN=y
|
||||
ARCH_LITTLE_ENDIAN=y
|
||||
ARCH_WANTS_LITTLE_ENDIAN=y
|
||||
# CONFIG_ARM10T is not set
|
||||
# CONFIG_ARM1136JF_S is not set
|
||||
# CONFIG_ARM1176JZF_S is not set
|
||||
# CONFIG_ARM1176JZ_S is not set
|
||||
# CONFIG_ARM610 is not set
|
||||
# CONFIG_ARM710 is not set
|
||||
# CONFIG_ARM720T is not set
|
||||
# CONFIG_ARM7TDMI is not set
|
||||
CONFIG_ARM920T=y
|
||||
# CONFIG_ARM922T is not set
|
||||
# CONFIG_ARM926T is not set
|
||||
# CONFIG_ARM_CORTEX_M1 is not set
|
||||
# CONFIG_ARM_CORTEX_M3 is not set
|
||||
# CONFIG_ARM_EABI is not set
|
||||
# CONFIG_ARM_IWMMXT is not set
|
||||
CONFIG_ARM_OABI=y
|
||||
# CONFIG_ARM_SA110 is not set
|
||||
# CONFIG_ARM_SA1100 is not set
|
||||
# CONFIG_ARM_XSCALE is not set
|
||||
# CONFIG_GENERIC_ARM is not set
|
||||
TARGET_ARCH="arm"
|
||||
TARGET_arm=y
|
||||
# USE_BX is not set
|
|
@ -1,25 +0,0 @@
|
|||
ARCH_ANY_ENDIAN=y
|
||||
ARCH_LITTLE_ENDIAN=y
|
||||
ARCH_WANTS_LITTLE_ENDIAN=y
|
||||
# CONFIG_ARM10T is not set
|
||||
# CONFIG_ARM1136JF_S is not set
|
||||
CONFIG_ARM1176JZF_S=y
|
||||
# CONFIG_ARM1176JZ_S is not set
|
||||
# CONFIG_ARM610 is not set
|
||||
# CONFIG_ARM710 is not set
|
||||
# CONFIG_ARM720T is not set
|
||||
# CONFIG_ARM7TDMI is not set
|
||||
# CONFIG_ARM920T is not set
|
||||
# CONFIG_ARM922T is not set
|
||||
# CONFIG_ARM926T is not set
|
||||
# CONFIG_ARM_CORTEX_M1 is not set
|
||||
# CONFIG_ARM_CORTEX_M3 is not set
|
||||
# CONFIG_ARM_EABI is not set
|
||||
# CONFIG_ARM_IWMMXT is not set
|
||||
CONFIG_ARM_OABI=y
|
||||
# CONFIG_ARM_SA110 is not set
|
||||
# CONFIG_ARM_SA1100 is not set
|
||||
# CONFIG_ARM_XSCALE is not set
|
||||
# CONFIG_GENERIC_ARM is not set
|
||||
TARGET_ARCH="arm"
|
||||
TARGET_arm=y
|
|
@ -1,26 +0,0 @@
|
|||
ARCH_ANY_ENDIAN=y
|
||||
ARCH_LITTLE_ENDIAN=y
|
||||
ARCH_WANTS_LITTLE_ENDIAN=y
|
||||
# CONFIG_ARM10T is not set
|
||||
# CONFIG_ARM1136JF_S is not set
|
||||
# CONFIG_ARM1176JZF_S is not set
|
||||
# CONFIG_ARM1176JZ_S is not set
|
||||
# CONFIG_ARM610 is not set
|
||||
# CONFIG_ARM710 is not set
|
||||
# CONFIG_ARM720T is not set
|
||||
# CONFIG_ARM7TDMI is not set
|
||||
CONFIG_ARM920T=y
|
||||
# CONFIG_ARM922T is not set
|
||||
# CONFIG_ARM926T is not set
|
||||
# CONFIG_ARM_CORTEX_M1 is not set
|
||||
# CONFIG_ARM_CORTEX_M3 is not set
|
||||
# CONFIG_ARM_EABI is not set
|
||||
# CONFIG_ARM_IWMMXT is not set
|
||||
CONFIG_ARM_OABI=y
|
||||
# CONFIG_ARM_SA110 is not set
|
||||
# CONFIG_ARM_SA1100 is not set
|
||||
# CONFIG_ARM_XSCALE is not set
|
||||
# CONFIG_GENERIC_ARM is not set
|
||||
TARGET_ARCH="arm"
|
||||
TARGET_arm=y
|
||||
# USE_BX is not set
|
|
@ -1,25 +1,7 @@
|
|||
ARCH_ANY_ENDIAN=y
|
||||
ARCH_BIG_ENDIAN=y
|
||||
ARCH_WANTS_BIG_ENDIAN=y
|
||||
# CONFIG_ARM10T is not set
|
||||
# CONFIG_ARM1136JF_S is not set
|
||||
# CONFIG_ARM1176JZF_S is not set
|
||||
# CONFIG_ARM1176JZ_S is not set
|
||||
# CONFIG_ARM610 is not set
|
||||
# CONFIG_ARM710 is not set
|
||||
# CONFIG_ARM720T is not set
|
||||
# CONFIG_ARM7TDMI is not set
|
||||
# CONFIG_ARM920T is not set
|
||||
# CONFIG_ARM922T is not set
|
||||
# CONFIG_ARM926T is not set
|
||||
# CONFIG_ARM_CORTEX_M1 is not set
|
||||
# CONFIG_ARM_CORTEX_M3 is not set
|
||||
# CONFIG_ARM_EABI is not set
|
||||
# CONFIG_ARM_IWMMXT is not set
|
||||
CONFIG_ARM_OABI=y
|
||||
# CONFIG_ARM_SA110 is not set
|
||||
# CONFIG_ARM_SA1100 is not set
|
||||
CONFIG_ARM_XSCALE=y
|
||||
# CONFIG_GENERIC_ARM is not set
|
||||
# COMPILE_IN_THUMB_MODE is not set
|
||||
TARGET_ARCH="arm"
|
||||
TARGET_arm=y
|
||||
# USE_BX is not set
|
||||
|
|
46
toolchain/uClibc/patches-0.9.32/900-reorder_use_bx.patch
Normal file
46
toolchain/uClibc/patches-0.9.32/900-reorder_use_bx.patch
Normal file
|
@ -0,0 +1,46 @@
|
|||
"Use BX" is not available on all CPUs, so the option depends on
|
||||
a correct CPU to be chosen . It is weird that e BX" then appears
|
||||
_above_ the CPU selection, not below.
|
||||
|
||||
Move the "Use BX" after the CPU selection.
|
||||
|
||||
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
|
||||
Cc: Khem Raj <raj.khem@gmail.com>
|
||||
Cc: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
|
||||
Cc: Carmelo AMOROSO <carmelo.amoroso@st.com>
|
||||
---
|
||||
extra/Configs/Config.arm | 14 +++++++-------
|
||||
1 files changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/extra/Configs/Config.arm b/extra/Configs/Config.arm
|
||||
index b060ace..3b90e67 100644
|
||||
--- a/extra/Configs/Config.arm
|
||||
+++ b/extra/Configs/Config.arm
|
||||
@@ -30,13 +30,6 @@ config CONFIG_ARM_EABI
|
||||
|
||||
endchoice
|
||||
|
||||
-config USE_BX
|
||||
- bool "Use BX in function return"
|
||||
- default y
|
||||
- depends on !CONFIG_GENERIC_ARM && !CONFIG_ARM610 && !CONFIG_ARM710
|
||||
- help
|
||||
- Use BX instruction for THUMB aware architectures.
|
||||
-
|
||||
choice
|
||||
prompt "Target Processor Type"
|
||||
default CONFIG_GENERIC_ARM
|
||||
@@ -131,3 +124,10 @@ config CONFIG_ARM_IWMMXT
|
||||
select ARCH_HAS_MMU
|
||||
|
||||
endchoice
|
||||
+
|
||||
+config USE_BX
|
||||
+ bool "Use BX in function return"
|
||||
+ default y
|
||||
+ depends on !CONFIG_GENERIC_ARM && !CONFIG_ARM610 && !CONFIG_ARM710
|
||||
+ help
|
||||
+ Use BX instruction for THUMB aware architectures.
|
||||
--
|
||||
1.7.1
|
||||
|
146
toolchain/uClibc/patches-0.9.32/910-thumb_blind_options.patch
Normal file
146
toolchain/uClibc/patches-0.9.32/910-thumb_blind_options.patch
Normal file
|
@ -0,0 +1,146 @@
|
|||
Add three new blind options to set use of Thumb mode:
|
||||
- COMPILE_IN_THUMB_MODE
|
||||
- if set, CFLAGS will contain -mthumb
|
||||
- if unset, the compiler's default is used
|
||||
- HAS_THUMB
|
||||
- CPUS with Thumb instruction set can select this
|
||||
- use of BX depends on this
|
||||
- FORCE_THUMB
|
||||
- CPUs that are Thumb-only must select this
|
||||
- this selects: HAS_THUMB, COMPILE_IN_THUMB_MODE and USE_BX
|
||||
|
||||
Also, remove leading space in Rules.mak.
|
||||
|
||||
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
|
||||
Cc: Khem Raj <raj.khem@gmail.com>
|
||||
Cc: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
|
||||
Cc: Carmelo AMOROSO <carmelo.amoroso@st.com>
|
||||
---
|
||||
Rules.mak | 7 ++++---
|
||||
extra/Configs/Config.arm | 31 ++++++++++++++++++++++++++++---
|
||||
2 files changed, 32 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/Rules.mak b/Rules.mak
|
||||
index eecdc64..2a16908 100644
|
||||
--- a/Rules.mak
|
||||
+++ b/Rules.mak
|
||||
@@ -348,9 +348,10 @@ ifeq ($(TARGET_ARCH),arm)
|
||||
CPU_CFLAGS-$(CONFIG_ARM_SA1100)+=-mtune=strongarm1100 -march=armv4
|
||||
CPU_CFLAGS-$(CONFIG_ARM_XSCALE)+=$(call check_gcc,-mtune=xscale,-mtune=strongarm110)
|
||||
CPU_CFLAGS-$(CONFIG_ARM_XSCALE)+=-march=armv5te -Wa,-mcpu=xscale
|
||||
- CPU_CFLAGS-$(CONFIG_ARM_IWMMXT)+=-march=iwmmxt -Wa,-mcpu=iwmmxt -mabi=iwmmxt
|
||||
- CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M3)+=-mcpu=cortex-m3 -mthumb
|
||||
- CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M1)+=-mcpu=cortex-m1 -mthumb
|
||||
+ CPU_CFLAGS-$(CONFIG_ARM_IWMMXT)+=-march=iwmmxt -Wa,-mcpu=iwmmxt -mabi=iwmmxt
|
||||
+ CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M3)+=-mcpu=cortex-m3
|
||||
+ CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M1)+=-mcpu=cortex-m1
|
||||
+ CPU_CFLAGS-$(COMPILE_IN_THUMB_MODE)+=-mthumb
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET_ARCH),mips)
|
||||
diff --git a/extra/Configs/Config.arm b/extra/Configs/Config.arm
|
||||
index 3b90e67..c9c40d4 100644
|
||||
--- a/extra/Configs/Config.arm
|
||||
+++ b/extra/Configs/Config.arm
|
||||
@@ -64,70 +64,95 @@ config CONFIG_ARM710
|
||||
config CONFIG_ARM7TDMI
|
||||
bool "Arm 7TDMI"
|
||||
select ARCH_HAS_NO_MMU
|
||||
+ select HAS_THUMB
|
||||
|
||||
config CONFIG_ARM720T
|
||||
bool "Arm 720T"
|
||||
select ARCH_HAS_MMU
|
||||
+ select HAS_THUMB
|
||||
|
||||
config CONFIG_ARM920T
|
||||
bool "Arm 920T"
|
||||
select ARCH_HAS_MMU
|
||||
+ select HAS_THUMB
|
||||
|
||||
config CONFIG_ARM922T
|
||||
bool "Arm 922T"
|
||||
select ARCH_HAS_MMU
|
||||
+ select HAS_THUMB
|
||||
|
||||
config CONFIG_ARM926T
|
||||
bool "Arm 926T"
|
||||
select ARCH_HAS_MMU
|
||||
+ select HAS_THUMB
|
||||
|
||||
config CONFIG_ARM10T
|
||||
bool "Arm 10T"
|
||||
select ARCH_HAS_MMU
|
||||
+ select HAS_THUMB
|
||||
|
||||
config CONFIG_ARM1136JF_S
|
||||
bool "Arm 1136JF-S"
|
||||
select ARCH_HAS_MMU
|
||||
+ select HAS_THUMB
|
||||
|
||||
config CONFIG_ARM1176JZ_S
|
||||
bool "Arm 1176JZ-S"
|
||||
select ARCH_HAS_MMU
|
||||
+ select HAS_THUMB
|
||||
|
||||
config CONFIG_ARM1176JZF_S
|
||||
bool "Arm 1176JZF-S"
|
||||
select ARCH_HAS_MMU
|
||||
+ select HAS_THUMB
|
||||
|
||||
config CONFIG_ARM_CORTEX_M3
|
||||
bool "Arm Cortex-M3"
|
||||
select ARCH_HAS_NO_MMU
|
||||
- select USE_BX
|
||||
+ select FORCE_THUMB
|
||||
|
||||
config CONFIG_ARM_CORTEX_M1
|
||||
bool "Arm Cortex-M1"
|
||||
select ARCH_HAS_NO_MMU
|
||||
- select USE_BX
|
||||
+ select FORCE_THUMB
|
||||
|
||||
config CONFIG_ARM_SA110
|
||||
bool "Intel StrongArm SA-110"
|
||||
select ARCH_HAS_MMU
|
||||
+ select HAS_THUMB
|
||||
|
||||
config CONFIG_ARM_SA1100
|
||||
bool "Intel StrongArm SA-1100"
|
||||
select ARCH_HAS_MMU
|
||||
+ select HAS_THUMB
|
||||
|
||||
config CONFIG_ARM_XSCALE
|
||||
bool "Intel Xscale"
|
||||
select ARCH_HAS_MMU
|
||||
+ select HAS_THUMB
|
||||
|
||||
config CONFIG_ARM_IWMMXT
|
||||
bool "Intel Xscale With WMMX PXA27x"
|
||||
select ARCH_HAS_MMU
|
||||
+ select HAS_THUMB
|
||||
|
||||
endchoice
|
||||
|
||||
+config HAS_THUMB
|
||||
+ bool
|
||||
+
|
||||
+config FORCE_THUMB
|
||||
+ bool
|
||||
+ select HAS_THUMB
|
||||
+ select COMPILE_IN_THUMB_MODE
|
||||
+ select USE_BX
|
||||
+
|
||||
+config COMPILE_IN_THUMB_MODE
|
||||
+ bool
|
||||
+
|
||||
config USE_BX
|
||||
bool "Use BX in function return"
|
||||
default y
|
||||
- depends on !CONFIG_GENERIC_ARM && !CONFIG_ARM610 && !CONFIG_ARM710
|
||||
+ depends on HAS_THUMB
|
||||
help
|
||||
Use BX instruction for THUMB aware architectures.
|
||||
--
|
||||
1.7.1
|
||||
|
|
@ -0,0 +1,189 @@
|
|||
Rely on the compiler to be correctly set up to generate
|
||||
appropriate code for the target variant.
|
||||
|
||||
This exposes the Thumb option, as it is no longer auto-selected.
|
||||
The "Use BX" no longer depends on supported CPU to be selected,
|
||||
so it now defaults to 'n' as it shall work by default on CPUs
|
||||
that do not have BX.
|
||||
|
||||
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
|
||||
Cc: Khem Raj <raj.khem@gmail.com>
|
||||
Cc: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
|
||||
Cc: Carmelo AMOROSO <carmelo.amoroso@st.com>
|
||||
---
|
||||
Rules.mak | 19 -------
|
||||
extra/Configs/Config.arm | 125 ++--------------------------------------------
|
||||
2 files changed, 5 insertions(+), 139 deletions(-)
|
||||
|
||||
diff --git a/Rules.mak b/Rules.mak
|
||||
index 2a16908..09741a6 100644
|
||||
--- a/Rules.mak
|
||||
+++ b/Rules.mak
|
||||
@@ -332,25 +332,6 @@ ifeq ($(TARGET_ARCH),arm)
|
||||
OPTIMIZATION+=-fstrict-aliasing
|
||||
CPU_CFLAGS-$(ARCH_LITTLE_ENDIAN)+=-mlittle-endian
|
||||
CPU_CFLAGS-$(ARCH_BIG_ENDIAN)+=-mbig-endian
|
||||
- CPU_CFLAGS-$(CONFIG_GENERIC_ARM)+=
|
||||
- CPU_CFLAGS-$(CONFIG_ARM610)+=-mtune=arm610 -march=armv3
|
||||
- CPU_CFLAGS-$(CONFIG_ARM710)+=-mtune=arm710 -march=armv3
|
||||
- CPU_CFLAGS-$(CONFIG_ARM7TDMI)+=-mtune=arm7tdmi -march=armv4t
|
||||
- CPU_CFLAGS-$(CONFIG_ARM720T)+=-mtune=arm7tdmi -march=armv4t
|
||||
- CPU_CFLAGS-$(CONFIG_ARM920T)+=-mtune=arm9tdmi -march=armv4t
|
||||
- CPU_CFLAGS-$(CONFIG_ARM922T)+=-mtune=arm9tdmi -march=armv4t
|
||||
- CPU_CFLAGS-$(CONFIG_ARM926T)+=-mtune=arm9e -march=armv5te
|
||||
- CPU_CFLAGS-$(CONFIG_ARM10T)+=-mtune=arm10tdmi -march=armv5t
|
||||
- CPU_CFLAGS-$(CONFIG_ARM1136JF_S)+=-mtune=arm1136jf-s -march=armv6
|
||||
- CPU_CFLAGS-$(CONFIG_ARM1176JZ_S)+=-mtune=arm1176jz-s -march=armv6
|
||||
- CPU_CFLAGS-$(CONFIG_ARM1176JZF_S)+=-mtune=arm1176jzf-s -march=armv6
|
||||
- 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)
|
||||
- CPU_CFLAGS-$(CONFIG_ARM_XSCALE)+=-march=armv5te -Wa,-mcpu=xscale
|
||||
- CPU_CFLAGS-$(CONFIG_ARM_IWMMXT)+=-march=iwmmxt -Wa,-mcpu=iwmmxt -mabi=iwmmxt
|
||||
- CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M3)+=-mcpu=cortex-m3
|
||||
- CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M1)+=-mcpu=cortex-m1
|
||||
CPU_CFLAGS-$(COMPILE_IN_THUMB_MODE)+=-mthumb
|
||||
endif
|
||||
|
||||
diff --git a/extra/Configs/Config.arm b/extra/Configs/Config.arm
|
||||
index c9c40d4..6c75a00 100644
|
||||
--- a/extra/Configs/Config.arm
|
||||
+++ b/extra/Configs/Config.arm
|
||||
@@ -30,129 +30,14 @@ config CONFIG_ARM_EABI
|
||||
|
||||
endchoice
|
||||
|
||||
-choice
|
||||
- prompt "Target Processor Type"
|
||||
- default CONFIG_GENERIC_ARM
|
||||
- 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 ARMCPU
|
||||
- types (albeit not optimally fast), you can specify "Generic Arm" here.
|
||||
- If you pick anything other than "Generic Arm", 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 Arm" select this if your compiler is already setup to
|
||||
- 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_ARM610
|
||||
- bool "Arm 610"
|
||||
- select ARCH_HAS_MMU
|
||||
-
|
||||
-config CONFIG_ARM710
|
||||
- bool "Arm 710"
|
||||
- select ARCH_HAS_MMU
|
||||
-
|
||||
-config CONFIG_ARM7TDMI
|
||||
- bool "Arm 7TDMI"
|
||||
- select ARCH_HAS_NO_MMU
|
||||
- select HAS_THUMB
|
||||
-
|
||||
-config CONFIG_ARM720T
|
||||
- bool "Arm 720T"
|
||||
- select ARCH_HAS_MMU
|
||||
- select HAS_THUMB
|
||||
-
|
||||
-config CONFIG_ARM920T
|
||||
- bool "Arm 920T"
|
||||
- select ARCH_HAS_MMU
|
||||
- select HAS_THUMB
|
||||
-
|
||||
-config CONFIG_ARM922T
|
||||
- bool "Arm 922T"
|
||||
- select ARCH_HAS_MMU
|
||||
- select HAS_THUMB
|
||||
-
|
||||
-config CONFIG_ARM926T
|
||||
- bool "Arm 926T"
|
||||
- select ARCH_HAS_MMU
|
||||
- select HAS_THUMB
|
||||
-
|
||||
-config CONFIG_ARM10T
|
||||
- bool "Arm 10T"
|
||||
- select ARCH_HAS_MMU
|
||||
- select HAS_THUMB
|
||||
-
|
||||
-config CONFIG_ARM1136JF_S
|
||||
- bool "Arm 1136JF-S"
|
||||
- select ARCH_HAS_MMU
|
||||
- select HAS_THUMB
|
||||
-
|
||||
-config CONFIG_ARM1176JZ_S
|
||||
- bool "Arm 1176JZ-S"
|
||||
- select ARCH_HAS_MMU
|
||||
- select HAS_THUMB
|
||||
-
|
||||
-config CONFIG_ARM1176JZF_S
|
||||
- bool "Arm 1176JZF-S"
|
||||
- select ARCH_HAS_MMU
|
||||
- select HAS_THUMB
|
||||
-
|
||||
-config CONFIG_ARM_CORTEX_M3
|
||||
- bool "Arm Cortex-M3"
|
||||
- select ARCH_HAS_NO_MMU
|
||||
- select FORCE_THUMB
|
||||
-
|
||||
-config CONFIG_ARM_CORTEX_M1
|
||||
- bool "Arm Cortex-M1"
|
||||
- select ARCH_HAS_NO_MMU
|
||||
- select FORCE_THUMB
|
||||
-
|
||||
-config CONFIG_ARM_SA110
|
||||
- bool "Intel StrongArm SA-110"
|
||||
- select ARCH_HAS_MMU
|
||||
- select HAS_THUMB
|
||||
-
|
||||
-config CONFIG_ARM_SA1100
|
||||
- bool "Intel StrongArm SA-1100"
|
||||
- select ARCH_HAS_MMU
|
||||
- select HAS_THUMB
|
||||
-
|
||||
-config CONFIG_ARM_XSCALE
|
||||
- bool "Intel Xscale"
|
||||
- select ARCH_HAS_MMU
|
||||
- select HAS_THUMB
|
||||
-
|
||||
-config CONFIG_ARM_IWMMXT
|
||||
- bool "Intel Xscale With WMMX PXA27x"
|
||||
- select ARCH_HAS_MMU
|
||||
- select HAS_THUMB
|
||||
-
|
||||
-endchoice
|
||||
-
|
||||
-config HAS_THUMB
|
||||
- bool
|
||||
-
|
||||
-config FORCE_THUMB
|
||||
- bool
|
||||
- select HAS_THUMB
|
||||
- select COMPILE_IN_THUMB_MODE
|
||||
- select USE_BX
|
||||
-
|
||||
config COMPILE_IN_THUMB_MODE
|
||||
- bool
|
||||
+ bool "Build using Thumb mode"
|
||||
+ select USE_BX
|
||||
+ help
|
||||
+ Say 'y' here to force building uClibc in thumb mode.
|
||||
+ Say 'n' to use your compiler's default mode.
|
||||
|
||||
config USE_BX
|
||||
bool "Use BX in function return"
|
||||
- default y
|
||||
- depends on HAS_THUMB
|
||||
help
|
||||
Use BX instruction for THUMB aware architectures.
|
||||
--
|
||||
1.7.1
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
The CONFIG_ARM_OABI option is never used.
|
||||
|
||||
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
|
||||
Cc: Khem Raj <raj.khem@gmail.com>
|
||||
Cc: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
|
||||
Cc: Carmelo AMOROSO <carmelo.amoroso@st.com>
|
||||
---
|
||||
extra/Configs/Config.arm | 23 ++++++++---------------
|
||||
1 files changed, 8 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/extra/Configs/Config.arm b/extra/Configs/Config.arm
|
||||
index 6c75a00..227b90c 100644
|
||||
--- a/extra/Configs/Config.arm
|
||||
+++ b/extra/Configs/Config.arm
|
||||
@@ -12,23 +12,16 @@ config FORCE_OPTIONS_FOR_ARCH
|
||||
default y
|
||||
select ARCH_ANY_ENDIAN
|
||||
|
||||
-choice
|
||||
- prompt "Target ABI"
|
||||
- default CONFIG_ARM_OABI
|
||||
+config CONFIG_ARM_EABI
|
||||
+ bool "Build for EABI"
|
||||
help
|
||||
- If you choose "EABI" here, functions and constants required by the
|
||||
- ARM EABI will be built into the library. You should choose "EABI"
|
||||
+ If you say 'y' here, functions and constants required by the
|
||||
+ ARM EABI will be built into the library. You should say 'y'
|
||||
if your compiler uses the ARM EABI, in which case you will also
|
||||
- need a kernel supporting the EABI system call interface, or "OABI"
|
||||
- for a compiler using the old Linux ABI.
|
||||
-
|
||||
-config CONFIG_ARM_OABI
|
||||
- bool "OABI"
|
||||
-
|
||||
-config CONFIG_ARM_EABI
|
||||
- bool "EABI"
|
||||
-
|
||||
-endchoice
|
||||
+ need a kernel supporting the EABI system call interface.
|
||||
+
|
||||
+ If you say 'n' here, then the library will be built for the
|
||||
+ old Linux ABI.
|
||||
|
||||
config COMPILE_IN_THUMB_MODE
|
||||
bool "Build using Thumb mode"
|
||||
--
|
||||
1.7.1
|
||||
|
39
toolchain/uClibc/patches-0.9.32/940-include_arm-asm.h.patch
Normal file
39
toolchain/uClibc/patches-0.9.32/940-include_arm-asm.h.patch
Normal file
|
@ -0,0 +1,39 @@
|
|||
The check for __USE_BX__ will be available in bits/arm_asm.h,
|
||||
so the latter must be included wherever the former is used.
|
||||
|
||||
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
|
||||
Cc: Khem Raj <raj.khem@gmail.com>
|
||||
Cc: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
|
||||
Cc: Carmelo AMOROSO <carmelo.amoroso@st.com>
|
||||
---
|
||||
ldso/ldso/arm/dl-startup.h | 1 +
|
||||
libc/sysdeps/linux/arm/sysdep.h | 1 +
|
||||
2 files changed, 2 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/ldso/ldso/arm/dl-startup.h b/ldso/ldso/arm/dl-startup.h
|
||||
index a95389d..2dfdaff 100644
|
||||
--- a/ldso/ldso/arm/dl-startup.h
|
||||
+++ b/ldso/ldso/arm/dl-startup.h
|
||||
@@ -7,6 +7,7 @@
|
||||
*/
|
||||
|
||||
#include <features.h>
|
||||
+#include <bits/arm_asm.h>
|
||||
|
||||
#if !defined(__thumb__)
|
||||
__asm__(
|
||||
diff --git a/libc/sysdeps/linux/arm/sysdep.h b/libc/sysdeps/linux/arm/sysdep.h
|
||||
index 013f88c..e498695 100644
|
||||
--- a/libc/sysdeps/linux/arm/sysdep.h
|
||||
+++ b/libc/sysdeps/linux/arm/sysdep.h
|
||||
@@ -21,6 +21,7 @@
|
||||
#define _LINUX_ARM_SYSDEP_H 1
|
||||
|
||||
#include <common/sysdep.h>
|
||||
+#include <bits/arm_asm.h>
|
||||
|
||||
#include <sys/syscall.h>
|
||||
/* For Linux we can use the system call table in the header file
|
||||
--
|
||||
1.7.1
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
The "use BX" option is now a suggestion that BX be used if available.
|
||||
Use a macro to detect if BX is available at build time. If so, and
|
||||
the user requested it be used, then use it. Otherwise, error out.
|
||||
|
||||
Macro courtesy Khem RAJ:
|
||||
http://lists.uclibc.org/pipermail/uclibc/2009-April/042301.html
|
||||
|
||||
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
|
||||
Cc: Khem Raj <raj.khem@gmail.com>
|
||||
Cc: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
|
||||
Cc: Carmelo AMOROSO <carmelo.amoroso@st.com>
|
||||
---
|
||||
extra/Configs/Config.arm | 4 +++-
|
||||
libc/sysdeps/linux/arm/bits/arm_asm.h | 9 ++++++++-
|
||||
2 files changed, 11 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/extra/Configs/Config.arm b/extra/Configs/Config.arm
|
||||
index 227b90c..9aa9e56 100644
|
||||
--- a/extra/Configs/Config.arm
|
||||
+++ b/extra/Configs/Config.arm
|
||||
@@ -33,4 +33,6 @@ config COMPILE_IN_THUMB_MODE
|
||||
config USE_BX
|
||||
bool "Use BX in function return"
|
||||
help
|
||||
- Use BX instruction for THUMB aware architectures.
|
||||
+ Say 'y' to use BX to return from functions on your thumb-aware
|
||||
+ processor. Say 'y' if you need to use interworking. Say 'n' if not.
|
||||
+ It is safe to say 'y' even if you're not doing interworking.
|
||||
diff --git a/libc/sysdeps/linux/arm/bits/arm_asm.h b/libc/sysdeps/linux/arm/bits/arm_asm.h
|
||||
index 1d87df6..921c9a3 100644
|
||||
--- a/libc/sysdeps/linux/arm/bits/arm_asm.h
|
||||
+++ b/libc/sysdeps/linux/arm/bits/arm_asm.h
|
||||
@@ -24,5 +24,12 @@
|
||||
#define THUMB1_ONLY 1
|
||||
#endif
|
||||
|
||||
-#endif /* _ARM_ASM_H */
|
||||
+#if defined(__USE_BX__)
|
||||
+# if ( defined (__ARM_ARCH_2__) || defined (__ARM_ARCH_3__) \
|
||||
+ || defined (__ARM_ARCH_3M__) || defined (__ARM_ARCH_4__) \
|
||||
+ )
|
||||
+# error Use of BX was requested, but is not available on the target processor.
|
||||
+# endif /* ARCH level */
|
||||
+#endif /* __USE_BX__ */
|
||||
|
||||
+#endif /* _ARM_ASM_H */
|
||||
--
|
||||
1.7.1
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
Rely on the compiler to be properly setup for the default ABI.
|
||||
|
||||
When installing-headers, there are two cases:
|
||||
- NPTL: no issue, a cross-compiler is already expected
|
||||
- LinuxThreads: no issue, EABI/OABI has no impact on installed headers.
|
||||
|
||||
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
|
||||
Cc: Khem Raj <raj.khem@gmail.com>
|
||||
Cc: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
|
||||
Cc: Carmelo AMOROSO <carmelo.amoroso@st.com>
|
||||
---
|
||||
extra/Configs/Config.arm | 11 -----------
|
||||
libc/sysdeps/linux/arm/Makefile.arch | 9 +++++++--
|
||||
libc/sysdeps/linux/arm/bits/huge_val.h | 4 ++--
|
||||
3 files changed, 9 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/extra/Configs/Config.arm b/extra/Configs/Config.arm
|
||||
index 9aa9e56..85f2515 100644
|
||||
--- a/extra/Configs/Config.arm
|
||||
+++ b/extra/Configs/Config.arm
|
||||
@@ -12,17 +12,6 @@ config FORCE_OPTIONS_FOR_ARCH
|
||||
default y
|
||||
select ARCH_ANY_ENDIAN
|
||||
|
||||
-config CONFIG_ARM_EABI
|
||||
- bool "Build for EABI"
|
||||
- help
|
||||
- If you say 'y' here, functions and constants required by the
|
||||
- ARM EABI will be built into the library. You should say 'y'
|
||||
- if your compiler uses the ARM EABI, in which case you will also
|
||||
- need a kernel supporting the EABI system call interface.
|
||||
-
|
||||
- If you say 'n' here, then the library will be built for the
|
||||
- old Linux ABI.
|
||||
-
|
||||
config COMPILE_IN_THUMB_MODE
|
||||
bool "Build using Thumb mode"
|
||||
select USE_BX
|
||||
diff --git a/libc/sysdeps/linux/arm/Makefile.arch b/libc/sysdeps/linux/arm/Makefile.arch
|
||||
index b53c539..14279e0 100644
|
||||
--- a/libc/sysdeps/linux/arm/Makefile.arch
|
||||
+++ b/libc/sysdeps/linux/arm/Makefile.arch
|
||||
@@ -24,7 +24,12 @@ ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
|
||||
CSRC += posix_fadvise.c posix_fadvise64.c
|
||||
endif
|
||||
|
||||
-ifeq ($(CONFIG_ARM_EABI),y)
|
||||
+# Is our compiler set up for EABI ?
|
||||
+IS_EABI:=$(shell $(CC) $(CFLAGS) -x c - -E -dM </dev/null 2>/dev/null \
|
||||
+ |sed -r -e '/^\#[[:space:]]*define[[:space:]]+__ARM_EABI__([[:space:]]+1)?$$/!d; s/.+/y/;' \
|
||||
+ )
|
||||
+
|
||||
+ifeq ($(IS_EABI),y)
|
||||
CSRC += aeabi_assert.c aeabi_atexit.c aeabi_errno_addr.c \
|
||||
aeabi_localeconv.c aeabi_memclr.c aeabi_memcpy.c \
|
||||
aeabi_memmove.c aeabi_memset.c find_exidx.c
|
||||
@@ -37,7 +42,7 @@ else
|
||||
CSRC += syscall.c
|
||||
endif
|
||||
|
||||
-ifeq ($(CONFIG_ARM_EABI),y)
|
||||
+ifeq ($(IS_EABI),y)
|
||||
libc-static-y += $(ARCH_OUT)/aeabi_lcsts.o $(ARCH_OUT)/aeabi_math.o \
|
||||
$(ARCH_OUT)/aeabi_sighandlers.o
|
||||
libc-nonshared-y += $(ARCH_OUT)/aeabi_lcsts.os $(ARCH_OUT)/aeabi_math.os \
|
||||
diff --git a/libc/sysdeps/linux/arm/bits/huge_val.h b/libc/sysdeps/linux/arm/bits/huge_val.h
|
||||
index a215f3c..745e0bb 100644
|
||||
--- a/libc/sysdeps/linux/arm/bits/huge_val.h
|
||||
+++ b/libc/sysdeps/linux/arm/bits/huge_val.h
|
||||
@@ -32,7 +32,7 @@
|
||||
# define HUGE_VAL (__extension__ 0x1.0p2047)
|
||||
#elif defined __GNUC__
|
||||
|
||||
-#ifndef __CONFIG_ARM_EABI__
|
||||
+#ifndef __ARM_EABI__
|
||||
# define HUGE_VAL \
|
||||
(__extension__ \
|
||||
((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
typedef union { unsigned char __c[8]; double __d; } __huge_val_t;
|
||||
|
||||
-#ifndef __CONFIG_ARM_EABI__
|
||||
+#ifndef __ARM_EABI__
|
||||
# if __BYTE_ORDER == __BIG_ENDIAN
|
||||
# define __HUGE_VAL_bytes { 0, 0, 0, 0, 0x7f, 0xf0, 0, 0 }
|
||||
# endif
|
||||
--
|
||||
1.7.1
|
||||
|
Loading…
Reference in a new issue