Commit d8792a04 authored by Chris Zankel's avatar Chris Zankel Committed by Peter Korsgaard
Browse files

xtensa: support configurable processor configurations



Xtensa is a configurable processor architecture, which allows to define
additional instructions and registers. The required variant specific
information for the toolchain is delivered in an 'overlay' file, which
needs to be 'untarred' to the corresponding directories after the
source is installed and patched.
This patch provides support for binutils, gcc, and gdb with a very
limited changes to the build scripts. These additions are only executed
for the Xtensa architecture and have no effect on other architectures.

[Thomas: rebased on top of the 'arch: improve definition of gcc mtune,
mcpu, etc.' patch, and changed 'Target ABI' to 'Target Architecture
Variant'].

Signed-off-by: default avatarChris Zankel <chris@zankel.net>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent 75720db3
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
choice
	prompt "Target Architecture Variant"
	depends on BR2_xtensa
	default BR2_xtensa_fsf
config BR2_xtensa_custom
	bool "Custom Xtensa processor configuration"
config BR2_xtensa_fsf
	bool "fsf - Default configuration"
endchoice

config BR2_xtensa_custom_name
	string "Custom Xtensa processor configuration anme"
	depends on BR2_xtensa_custom
	default ""
	help
	  Name given to a custom Xtensa processor configuration.

config BR2_xtensa_core_name
	string
	default BR2_xtensa_custom_name	if BR2_xtensa_custom
	default ""			if BR2_xtensa_fsf

config BR2_xtensa_overlay_dir
	string "Overlay directory for custom configuration"
	depends on BR2_xtensa_custom
	default ""
	help
	  Provide a directory path that contains the overlay files
	  for the custom configuration. The path is based on the
	  buildroot top directory.

config BR2_ARCH
	default "xtensa"	if BR2_xtensa
+9 −0
Original line number Diff line number Diff line
@@ -68,5 +68,14 @@ define BINUTILS_INSTALL_TARGET_CMDS
endef
endif

XTENSA_CORE_NAME = $(call qstrip, $(BR2_xtensa_core_name))
ifneq ($(XTENSA_CORE_NAME),)
define BINUTILS_XTENSA_PRE_PATCH
	tar xf $(BR2_xtensa_overlay_dir)/xtensa_$(XTENSA_CORE_NAME).tar \
		-C $(@D) bfd include ld
endef
HOST_BINUTILS_PRE_PATCH_HOOKS += BINUTILS_XTENSA_PRE_PATCH
endif

$(eval $(autotools-package))
$(eval $(host-autotools-package))
+4 −0
Original line number Diff line number Diff line
@@ -251,6 +251,10 @@ $(GCC_DIR)/.unpacked: $(DL_DIR)/$(GCC_SOURCE)
	rm -rf $(GCC_DIR)
	$(GCC_CAT) $(DL_DIR)/$(GCC_SOURCE) | tar -C $(TOOLCHAIN_DIR) $(TAR_OPTIONS) -
	$(call CONFIG_UPDATE,$(@D))
ifneq ($(call qstrip, $(BR2_xtensa_core_name)),)
	tar xf $(BR2_xtensa_overlay_dir)/xtensa_$(call qstrip,\
		$(BR2_xtensa_core_name)).tar -C $(@D) include
endif
	touch $@

gcc-patched: $(GCC_DIR)/.patched
+4 −0
Original line number Diff line number Diff line
@@ -25,6 +25,10 @@ gdb-unpacked: $(GDB_DIR)/.unpacked
$(GDB_DIR)/.unpacked: $(DL_DIR)/$(GDB_SOURCE)
	mkdir -p $(GDB_DIR)
	$(GDB_CAT) $(DL_DIR)/$(GDB_SOURCE) | tar -C $(GDB_DIR) $(TAR_STRIP_COMPONENTS)=1 $(TAR_OPTIONS) -
ifneq ($(call qstrip, $(BR2_xtensa_core_name)),)
	tar xf $(BR2_xtensa_overlay_dir)/xtensa_$(call qstrip, \
		$(BR2_xtensa_core_name)).tar -C $(@D) bfd include gdb
endif
ifneq ($(wildcard $(GDB_PATCH_DIR)),)
	support/scripts/apply-patches.sh $(GDB_DIR) $(GDB_PATCH_DIR) \*.patch
endif