xtensa: add support for the Xtensa architecture
PATCH v2 1/2 xtensa: add support for the Xtensa architecture
The Xtensa architecture had been removed because it required special handling and depended on additional directories and files that became obsolete over time. This change is more aligned to other architectures.
arch/Config.in +8 -0
@@ -145,6 +145,13 @@ config BR2_x86_64 architecture compatible microprocessor). http://en.wikipedia.org/wiki/X86_64 +config BR2_xtensa + bool "Xtensa" + help + Xtensa is a Tensilica processor IP architecture. + http://en.wikipedia.org/wiki/Xtensa + http://www.tensilica.com/ + endchoice config BR2_microblaze
@@ -158,4 +165,5 @@ source "arch/Config.in.powerpc" source "arch/Config.in.sh" source "arch/Config.in.sparc" source "arch/Config.in.x86" +source "arch/Config.in.xtensa" source "arch/Config.in.common"
arch/Config.in.common +1 -0
@@ -49,6 +49,7 @@ config BR2_ARCH default "sh4aeb" if BR2_sh4aeb default "sh64" if BR2_sh64 default "sparc" if BR2_sparc + default "xtensa" if BR2_xtensa config BR2_ENDIAN
linux/Config.in +2 -1
@@ -152,7 +152,8 @@ config BR2_LINUX_KERNEL_BZIMAGE config BR2_LINUX_KERNEL_ZIMAGE bool "zImage" - depends on BR2_arm || BR2_armeb || BR2_powerpc || BR2_sparc || BR2_sh || BR2_sh64 + depends on BR2_arm || BR2_armeb || BR2_powerpc || BR2_sparc || \ + BR2_sh || BR2_sh64 || BR2_xtensa config BR2_LINUX_KERNEL_APPENDED_ZIMAGE bool "zImage with appended DT"
package/autoconf/Config.in +4 -2
@@ -1,6 +1,7 @@ config BR2_PACKAGE_AUTOCONF bool "autoconf" - depends on !(BR2_avr32 || BR2_bfin || BR2_sh2 || BR2_sh2a || BR2_sh3 || BR2_sh3eb || BR2_sh64) + depends on !(BR2_avr32 || BR2_bfin || BR2_sh2 || BR2_sh2a || BR2_sh3) + depends on !(BR2_sh3eb || BR2_sh64 || BR2_xtensa) select BR2_PACKAGE_PERL help Extensible program for developing configure scripts. These
@@ -9,4 +10,5 @@ config BR2_PACKAGE_AUTOCONF http://www.gnu.org/software/autoconf/ comment "autoconf requires an architecture supported by qemu" - depends on BR2_avr32 || BR2_bfin || BR2_sh2 || BR2_sh2a || BR2_sh3 || BR2_sh3eb || BR2_sh64 + depends on BR2_avr32 || BR2_bfin || BR2_sh2 || BR2_sh2a || BR2_sh3 || \ + BR2_sh3eb || BR2_sh64 || BR2_xtensa
package/automake/Config.in +4 -2
@@ -1,6 +1,7 @@ config BR2_PACKAGE_AUTOMAKE bool "automake" - depends on !(BR2_avr32 || BR2_bfin || BR2_sh2 || BR2_sh2a || BR2_sh3 || BR2_sh3eb || BR2_sh64) + depends on !(BR2_avr32 || BR2_bfin || BR2_sh2 || BR2_sh2a || BR2_sh3) + depends on !(BR2_sh3eb || BR2_sh64 || BR2_xtensa) select BR2_PACKAGE_AUTOCONF select BR2_PACKAGE_PERL help
@@ -10,4 +11,5 @@ config BR2_PACKAGE_AUTOMAKE http://www.gnu.org/software/automake/ comment "automake requires an architecture supported by qemu" - depends on BR2_avr32 || BR2_bfin || BR2_sh2 || BR2_sh2a || BR2_sh3 || BR2_sh3eb || BR2_sh64 + depends on BR2_avr32 || BR2_bfin || BR2_sh2 || BR2_sh2a || BR2_sh3 || \ + BR2_sh3eb || BR2_sh64 || BR2_xtensa
package/ltrace/Config.in +1 -0
@@ -1,6 +1,7 @@ config BR2_PACKAGE_LTRACE bool "ltrace" depends on !(BR2_avr32 || BR2_mips || BR2_mipsel || BR2_sh || BR2_sh64) + depends on !BR2_xtensa select BR2_PACKAGE_LIBELF help Debugging program which runs a specified command until it exits.
package/perl/Config.in +3 -1
@@ -7,6 +7,7 @@ config BR2_PACKAGE_PERL depends on !BR2_sh3 depends on !BR2_sh3eb depends on !BR2_sh64 + depends on !BR2_xtensa help Larry Wall's Practical Extraction and Report Language An interpreted scripting language, known among some as "Unix's Swiss
@@ -47,4 +48,5 @@ config BR2_PACKAGE_PERL_GDBM_FILE endif comment "perl requires an architecture supported by qemu" - depends on BR2_avr32 || BR2_bfin || BR2_sh2 || BR2_sh2a || BR2_sh3 || BR2_sh3eb || BR2_sh64 + depends on BR2_avr32 || BR2_bfin || BR2_sh2 || BR2_sh2a || BR2_sh3 || \ + BR2_sh3eb || BR2_sh64 || BR2_xtensa
toolchain/Config.in +1 -1
@@ -23,7 +23,7 @@ config BR2_TOOLCHAIN_EXTERNAL config BR2_TOOLCHAIN_CTNG bool "Crosstool-NG toolchain" - depends on !BR2_microblaze && !BR2_aarch64 + depends on !BR2_microblaze && !BR2_aarch64 && !BR2_xtensa select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS select BR2_TOOLCHAIN_HAS_THREADS_DEBUG_IF_NEEDED help
toolchain/toolchain-common.in +1 -1
@@ -93,7 +93,7 @@ config BR2_NEEDS_GETTEXT_IF_LOCALE default y if (BR2_NEEDS_GETTEXT && BR2_ENABLE_LOCALE) config BR2_USE_MMU - bool "Enable MMU support" if BR2_arm || BR2_armeb || BR2_mips || BR2_mipsel || BR2_sh + bool "Enable MMU support" if BR2_arm || BR2_armeb || BR2_mips || BR2_mipsel || BR2_sh || BR2_xtensa default y if !BR2_bfin help If your target has a MMU, you should say Y here. If you
toolchain/uClibc/uclibc.mk +1 -0
@@ -38,6 +38,7 @@ UCLIBC_TARGET_ARCH:=$(shell $(SHELL) -c "echo $(ARCH) | sed \ -e 's/sh[234].*/sh/' \ -e 's/mips.*/mips/' \ -e 's/cris.*/cris/' \ + -e 's/xtensa.*/xtensa/' \ ") UCLIBC_TARGET_ENDIAN:=$(call qstrip,$(BR2_ENDIAN))
PATCH v2 1/2 xtensa: add support for the Xtensa architecture
Dear Chris Zankel,
Quoted 5 lines · Chris Zankel
The Xtensa architecture had been removed because it required special handling and depended on additional directories and files that became obsolete over time. This change is more aligned to other architectures.
Signed-off-by Chris Zankel <[email protected]>
Unfortunately, the default toolchain configuration for Xtensa doesn't. I.e, I tried to build the minimal configuration:
BR2_xtensa=y
BR2_PACKAGE_LUA=y
BR2_PACKAGE_LUA_INTERPRETER=y
BR2_PACKAGE_AVAHI=y
And the build of gcc intermediate fails horribly with pthread errors:
xtensa-buildroot-linux-uclibc/bin/ -B/home/test/outputs/xtensa/host/usr/xtensa-buildroot-linux-uclibc/lib/ -isystem /home/test/outputs/xtensa/host/usr/xtensa-buildroot-linux-u
clibc/include -isystem /home/test/outputs/xtensa/host/usr/xtensa-buildroot-linux-uclibc/sys-include -g -Os -O2 -g -Os -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wwrit
e-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -
fno-stack-protector -I. -I. -I../.././gcc -I/home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc -I/home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/. -I/home/test/output
s/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc -I/home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../include -DHAVE_CC_TLS -o _negdi2.o -MT _negdi2.o -MD -MP -MF _negdi2.dep
-DL_negdi2 -c /home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc/libgcc2.c \
-fvisibility=hidden -DHIDE_EXPORTS
In file included from /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/stdio.h:72:0,
from /home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc/tsystem.h:87,
from /home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc/libgcc2.c:29:
/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/bits/uClibc_stdio.h:274:2: error: unknown type name 'pthread_mutex_t'
In file included from /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/bits/uClibc_mutex.h:15:0,
from /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/bits/uClibc_stdio.h:107,
from /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/stdio.h:72,
from /home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc/tsystem.h:87,
from /home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc/libgcc2.c:29:/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:227:28: error: unknown type name 'pthread_t' /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:228:7: error: unknown type name 'pthread_attr_t' /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:244:26: error: unknown type name 'pthread_t' /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:249:32: error: unknown type name 'pthread_t' /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:257:34: error: unknown type name 'pthread_t' /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:265:28: error: unknown type name 'pthread_t' /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:269:1: error: unknown type name 'pthread_t' /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:272:27: error: unknown type name 'pthread_t' /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:272:48: error: unknown type name 'pthread_t' /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:280:31: error: unknown type name 'pthread_attr_t' /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:283:34: error: unknown type name 'pthread_attr_t' /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:287:1: error: unknown type name 'pthread_attr_t' /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:292:41: error: unknown type name 'pthread_attr_t' /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:298:1: error: unknown type name 'pthread_attr_t' [... many more ...]
In file included from /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/stdio.h:72:0,
from /home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc/tsystem.h:87,
from /home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc/libgcc2.c:29:/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/bits/uClibc_stdio.h:274:2: error: unknown type name 'pthread_mutex_t' make[3]: *** [_muldi3.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: *** [_negdi2.o] Error 1
make[2]: *** [all-target-libgcc] Error 2
make[1]: *** [/home/test/outputs/xtensa/toolchain/gcc-4.6.3-intermediate/.compiled] Error 2
make: *** [all] Error 2
Is it that the pthread support for Xtensa is not available in uClibc?
Best regards,
Thomas
Signature · 4 lines
Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com
PATCH v2 1/2 xtensa: add support for the Xtensa architecture
Hello,
Quoted 1 line · Thomas Petazzoni
Is it that the pthread support for Xtensa is not available in uClibc?
And if I disable threads support, it fails later during the uClibc build:
CC libc/misc/dirent/alphasort.os
CC libc/misc/dirent/closedir.oslibc/misc/dirent/closedir.c: In function 'closedir':libc/misc/dirent/closedir.c:35:2: warning: implicit declaration of function 'INLINE_SYSCALL' [-Wimplicit-function-declaration]
CC libc/misc/dirent/dirfd.os
CC libc/misc/dirent/opendir.oslibc/misc/dirent/opendir.c: In function 'opendir':libc/misc/dirent/opendir.c:85:2: warning: implicit declaration of function 'INLINE_SYSCALL' [-Wimplicit-function-declaration] libc/misc/dirent/opendir.c:97:3: warning: implicit declaration of function 'INTERNAL_SYSCALL_DECL' [-Wimplicit-function-declaration] libc/misc/dirent/opendir.c:97:3: error: 'err' undeclared (first use in this function) libc/misc/dirent/opendir.c:97:3: note: each undeclared identifier is reported only once for each function it appears in libc/misc/dirent/opendir.c:97:3: warning: implicit declaration of function 'INTERNAL_SYSCALL' [-Wimplicit-function-declaration] make[2]: *** [libc/misc/dirent/opendir.os] Error 1
make[1]: *** [/home/test/outputs/xtensa/toolchain/uClibc-0.9.33.2/lib/libc.a] Error 2
make: *** [all] Error 2
My defconfig is:
BR2_xtensa=y
BR2_PTHREADS_NONE=y
BR2_PACKAGE_LUA=y
BR2_PACKAGE_LUA_INTERPRETER=y
BR2_PACKAGE_AVAHI=y
Best regards,
Thomas
Signature · 4 lines
Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com
PATCH v2 1/2 xtensa: add support for the Xtensa architecture
In reply to Thomas PetazzoniQuoted 9 lines · Thomas Petazzoni
Unfortunately, the default toolchain configuration for Xtensa doesn't. I.e, I tried to build the minimal configuration:
BR2_xtensa=y
BR2_PACKAGE_LUA=y
BR2_PACKAGE_LUA_INTERPRETER=y
BR2_PACKAGE_AVAHI=yAnd the build of gcc intermediate fails horribly with pthread errors:
I get these same error with the default bfin config, and it also breaks
with BR2_PTHREADS_NONE=y
Regards,
Arnout
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286540 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
PATCH v2 1/2 xtensa: add support for the Xtensa architecture
Quoted 2 lines · Arnout Vandecappelle
I get these same error with the default bfin config, and it also breaks
with BR2_PTHREADS_NONE=y
Right, I should fix the Blackfin architecture so it uses the external toolchain instead. I don't think gcc/uclibc/binutils have upstream the needed code to build a Blackfin toolchain. We could certainly point Buildroot to the Blackfin specific gcc/uclibc/binutils repositories, if someone has a usage for the internal backend on Blackfin.
Thomas
Signature · 4 lines
Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com
PATCH v2 1/2 xtensa: add support for the Xtensa architecture
In reply to Thomas PetazzoniHi Thomas,
Sorry that you had to spend so much time on it. There are currently the following restrictions:
Only linuxthreads/old and no-threads is supported for Xtensa. There actually is a port for NPTL, and I'm trying to get it, but might take some time. I will update the patch to disable NTPL on linuxthreads for Xtensa for now.
uClibc 0.9.33 doesn't have the required Xtensa patches, so you would have to select snapshot. I'm not sure what the best approach is here. Provide a 'back-port' patch with these patches for 0.9.33 or only enable 'snapshot' for Xtensa. I'll update the two patches to only allow to select snapshot for now.
Note that uClibc has added a new config and the current patch that is in buildroot (uClibc.snapshot.linuxthreads-errno-fix.patch) doesn't apply anymore. I noticed that a similar patch was dropped for 0.9.33.2, so I was just also removing this patch for snapshot. I believe you created that patch, so do you know if it can be removed? I can provide a patch for buildroot to fix uClibc snapshot.
Thanks,
-Chris
Quoted 65 lines · Thomas Petazzoni
Dear Chris Zankel,
Quoted 5 lines · Chris Zankel
The Xtensa architecture had been removed because it required special handling and depended on additional directories and files that became obsolete over time. This change is more aligned to other architectures.
Signed-off-by Chris Zankel <[email protected]>Unfortunately, the default toolchain configuration for Xtensa doesn't. I.e, I tried to build the minimal configuration:
BR2_xtensa=y
BR2_PACKAGE_LUA=y
BR2_PACKAGE_LUA_INTERPRETER=y
BR2_PACKAGE_AVAHI=yAnd the build of gcc intermediate fails horribly with pthread errors:
xtensa-buildroot-linux-uclibc/bin/ -B/home/test/outputs/xtensa/host/usr/xtensa-buildroot-linux-uclibc/lib/ -isystem
/home/test/outputs/xtensa/host/usr/xtensa-buildroot-linux-u
clibc/include -isystem/home/test/outputs/xtensa/host/usr/xtensa-buildroot-linux-uclibc/sys-include-g -Os -O2 -g -Os -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wwrit
e-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -
fno-stack-protector -I. -I. -I../.././gcc -I/home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc -I/home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/. -I/home/test/output
s/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc -I/home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../include -DHAVE_CC_TLS -o _negdi2.o -MT _negdi2.o -MD -MP -MF _negdi2.dep
-DL_negdi2 -c/home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc/libgcc2.c\
-fvisibility=hidden -DHIDE_EXPORTS
In file included from/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/stdio.h:72:0,from /home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc/tsystem.h:87, from /home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc/libgcc2.c:29: /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/bits/uClibc_stdio.h:274:2: error: unknown type name 'pthread_mutex_t' In file included from /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/bits/uClibc_mutex.h:15:0, from /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/bits/uClibc_stdio.h:107, from /home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/stdio.h:72, from /home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc/tsystem.h:87, from /home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc/libgcc2.c:29:
/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:227:28: error: unknown type name 'pthread_t'/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:228:7: error: unknown type name 'pthread_attr_t'/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:244:26: error: unknown type name 'pthread_t'/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:249:32: error: unknown type name 'pthread_t'/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:257:34: error: unknown type name 'pthread_t'/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:265:28: error: unknown type name 'pthread_t'/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:269:1: error: unknown type name 'pthread_t'/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:272:27: error: unknown type name 'pthread_t'/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:272:48: error: unknown type name 'pthread_t'/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:280:31: error: unknown type name 'pthread_attr_t'/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:283:34: error: unknown type name 'pthread_attr_t'/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:287:1: error: unknown type name 'pthread_attr_t'/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:292:41: error: unknown type name 'pthread_attr_t'/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/pthread.h:298:1: error: unknown type name 'pthread_attr_t' [... many more ...]
In file included from/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/stdio.h:72:0,from /home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc/tsystem.h:87, from /home/test/outputs/xtensa/toolchain/gcc-4.6.3/libgcc/../gcc/libgcc2.c:29:
/home/test/outputs/xtensa/toolchain/uClibc_dev//usr/include/bits/uClibc_stdio.h:274:2: error: unknown type name 'pthread_mutex_t' make[3]: *** [_muldi3.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: *** [_negdi2.o] Error 1
make[2]: *** [all-target-libgcc] Error 2
make[1]: *** [/home/test/outputs/xtensa/toolchain/gcc-4.6.3-intermediate/.compiled] Error 2
make: *** [all] Error 2Is it that the pthread support for Xtensa is not available in uClibc?
Best regards,
Thomas