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

login
register
mail settings
Submitter Chris Zankel
Date Nov. 8, 2012, 3:38 a.m.
Message ID <509b2947.a6e6440a.547c.7082@mx.google.com>
Download mbox | patch
Permalink /patch/197749/
State Superseded
Headers show

Comments

Chris Zankel - Nov. 8, 2012, 3:38 a.m.
The original support for the Xtensa architecture in buildroot required a lot
of special handling and additional files, so it became hard to maintain.
This implementation is much more aligned to other architectures with only
minimal overhead.

Signed-off-by: Chris Zankel <chris@zankel.net>
Arnout Vandecappelle - Nov. 8, 2012, 9:01 p.m.
On 11/08/12 04:38, Chris Zankel wrote:
>   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

  So the Xtensa, a configurable processor, always has a MMU?

  Regards,
  Arnout
Chris Zankel - Nov. 10, 2012, 12:28 a.m.
Hi Arnout,

On 11/08/2012 01:01 PM, Arnout Vandecappelle wrote:
> On 11/08/12 04:38, Chris Zankel wrote:
>>   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
>   So the Xtensa, a configurable processor, always has a MMU?
Good point. Actually, you can configure Xtensa with and without an MMU,
so I think the above logic is correct. It allows to configure MMU if the
processor is Xtensa, am I wrong?

Thanks,
-Chris
Arnout Vandecappelle - Nov. 10, 2012, 12:33 a.m.
On 11/10/12 01:28, Chris Zankel wrote:
> On 11/08/2012 01:01 PM, Arnout Vandecappelle wrote:
>> >  On 11/08/12 04:38, Chris Zankel wrote:
>>> >>     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
>> >     So the Xtensa, a configurable processor, always has a MMU?
> Good point. Actually, you can configure Xtensa with and without an MMU,
> so I think the above logic is correct. It allows to configure MMU if the
> processor is Xtensa, am I wrong?

  Err, yes, I was misreading the patch... Sorry about that.

  Regards,
  Arnout

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/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))