Patchwork [1/2,v2] xtensa: add support for the Xtensa architecture

login
register
mail settings
Submitter Chris Zankel
Date Nov. 9, 2012, 6:33 a.m.
Message ID <509ca3b9.e9c5440a.24b8.24a1@mx.google.com>
Download mbox | patch
Permalink /patch/197946/
State Superseded
Headers show

Comments

Chris Zankel - Nov. 9, 2012, 6:33 a.m.
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 <chris@zankel.net>
Thomas Petazzoni - Nov. 9, 2012, 9:19 a.m.
Dear Chris Zankel,

On Thu, 08 Nov 2012 22:33:28 -0800, Chris Zankel wrote:
> 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 <chris@zankel.net>

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
Thomas Petazzoni - Nov. 9, 2012, 9:34 a.m.
Hello,

On Fri, 9 Nov 2012 10:19:59 +0100, Thomas Petazzoni wrote:

> 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.os
libc/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.os
libc/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
Arnout Vandecappelle - Nov. 9, 2012, 4:56 p.m.
On 11/09/12 10:19, Thomas Petazzoni wrote:
> 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:

  I get these same error with the default bfin config, and it also breaks
with BR2_PTHREADS_NONE=y


  Regards,
  Arnout
Chris Zankel - Nov. 9, 2012, 6:34 p.m.
Hi 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





On 11/09/2012 01:19 AM, Thomas Petazzoni wrote:
> Dear Chris Zankel,
>
> On Thu, 08 Nov 2012 22:33:28 -0800, Chris Zankel wrote:
>> 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 <chris@zankel.net>
> 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
Thomas Petazzoni - Nov. 10, 2012, 9:55 a.m.
On Fri, 09 Nov 2012 17:56:51 +0100, Arnout Vandecappelle wrote:

>   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

Patch

diff --git a/arch/Config.in b/arch/Config.in
index 4d1f81f..ad4a9e0 100644
--- a/arch/Config.in
+++ b/arch/Config.in
@@ -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"
diff --git a/arch/Config.in.common b/arch/Config.in.common
index 1ed9929..d2bfd59 100644
--- a/arch/Config.in.common
+++ b/arch/Config.in.common
@@ -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
diff --git a/linux/Config.in b/linux/Config.in
index 277ef0e..29a2110 100644
--- a/linux/Config.in
+++ b/linux/Config.in
@@ -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"
diff --git a/package/autoconf/Config.in b/package/autoconf/Config.in
index c304572..3622f3d 100644
--- a/package/autoconf/Config.in
+++ b/package/autoconf/Config.in
@@ -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
diff --git a/package/automake/Config.in b/package/automake/Config.in
index f8d74ef..6e48517 100644
--- a/package/automake/Config.in
+++ b/package/automake/Config.in
@@ -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
diff --git a/package/ltrace/Config.in b/package/ltrace/Config.in
index a65ca48..4cce767 100644
--- a/package/ltrace/Config.in
+++ b/package/ltrace/Config.in
@@ -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.
diff --git a/package/perl/Config.in b/package/perl/Config.in
index 0642deb..2906714 100644
--- a/package/perl/Config.in
+++ b/package/perl/Config.in
@@ -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
diff --git a/toolchain/Config.in b/toolchain/Config.in
index 29ed2f0..7edf82b 100644
--- a/toolchain/Config.in
+++ b/toolchain/Config.in
@@ -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
diff --git a/toolchain/toolchain-common.in b/toolchain/toolchain-common.in
index 4c2a28b..9f11a39 100644
--- a/toolchain/toolchain-common.in
+++ b/toolchain/toolchain-common.in
@@ -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
diff --git a/toolchain/uClibc/uclibc.mk b/toolchain/uClibc/uclibc.mk
index 8cf59bc..055267c 100644
--- a/toolchain/uClibc/uclibc.mk
+++ b/toolchain/uClibc/uclibc.mk
@@ -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))