summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2016-10-24 21:48:57 (GMT)
committerMax Filippov <jcmvbkbc@gmail.com>2016-11-22 18:48:34 (GMT)
commit6c6829a0610e6282be922183c9601cb2365df9a4 (patch)
tree1801f8bc2ec990477737067bffd8fb122b378fd8
parent0946ce59a09609b743b7dba40f7212778011f286 (diff)
xtensa: fix endianness support
To build uClibc correctly we need correct endianness selected in the crosstool-NG. Xtensa cores may be little- or big-endian, but this property is static. The toolchain knows the core endianness and doesn't need options to select it. Enable ARCH_SUPPORTS_BOTH_ENDIAN and select LE by default. Specify empty CT_ARCH_ENDIAN_CFLAG so that -m{big,little}-endian don't get added to the TARGET_CFLAGS, as it's not supported by gcc. Specify empty CT_ARCH_ENDIAN_LDFLAG so that -EB/-EL don't get added to the TARGET_LDFLAGS as they are ignored. Select big-endian in the example xtensa-unknown-linux-uclibc configuration. This fixes uClibc toolchain build for little-endian cores. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
-rw-r--r--config/arch/xtensa.in2
-rw-r--r--samples/xtensa-unknown-linux-uclibc/crosstool.config1
-rw-r--r--scripts/build/arch/xtensa.sh2
3 files changed, 5 insertions, 0 deletions
diff --git a/config/arch/xtensa.in b/config/arch/xtensa.in
index e08b842..3ffa4e8 100644
--- a/config/arch/xtensa.in
+++ b/config/arch/xtensa.in
@@ -1,6 +1,8 @@
# xtensa specific configuration file
## select ARCH_SUPPORTS_32
+## select ARCH_SUPPORTS_BOTH_ENDIAN
+## select ARCH_DEFAULT_LE
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU
##
diff --git a/samples/xtensa-unknown-linux-uclibc/crosstool.config b/samples/xtensa-unknown-linux-uclibc/crosstool.config
index e7ab10e..d383fbd 100644
--- a/samples/xtensa-unknown-linux-uclibc/crosstool.config
+++ b/samples/xtensa-unknown-linux-uclibc/crosstool.config
@@ -1,6 +1,7 @@
CT_LOCAL_TARBALLS_DIR="${HOME}/src"
CT_SAVE_TARBALLS=y
CT_LOG_EXTRA=y
+CT_ARCH_BE=y
CT_ARCH_xtensa=y
CT_KERNEL_linux=y
CT_LIBC_uClibc=y
diff --git a/scripts/build/arch/xtensa.sh b/scripts/build/arch/xtensa.sh
index a3010c6..bf94ddf 100644
--- a/scripts/build/arch/xtensa.sh
+++ b/scripts/build/arch/xtensa.sh
@@ -3,6 +3,8 @@
CT_DoArchTupleValues() {
# The architecture part of the tuple:
CT_TARGET_ARCH="${CT_ARCH}${CT_ARCH_SUFFIX}"
+ CT_ARCH_ENDIAN_CFLAG=""
+ CT_ARCH_ENDIAN_LDFLAG=""
# The system part of the tuple:
case "${CT_LIBC}" in
*glibc) CT_TARGET_SYS=gnu;;