diff -r 58ca31386bfb -r 40864183a101 config/arch/xtensa.in
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config/arch/xtensa.in	Wed Jul 24 15:10:47 2013 -0700
@@ -0,0 +1,20 @@
+# xtensa specific configuration file
+
+## select ARCH_SUPPORTS_32
+## select ARCH_SUPPORTS_BOTH_MMU
+## select ARCH_DEFAULT_HAS_MMU
+##
+## help The xtensa architecture
+## help
+## help    Xtensa is a configurable and extensible processor architecture.
+## help    Supporting a specific configuration typically requires minor 
+## help    modifications to a small set of configuration files in various
+## help    development tools. This process is automated and only requires
+## help    a configuration specific 'overlay' file.
+## help
+## help    For a custom configuration, select the XTENSA_CUSTOM option and
+## help    provide the name of the overlay file through the
+## help    CT_ARCH_XTENSA_CUSTOM_OVERLAY_FILE option.
+## help
+## help    The default option (ARCH_xtensa_fsf) uses a built-in configuration,
+## help    which may or may not work for a particular Xtensa processor.
diff -r 58ca31386bfb -r 40864183a101 config/arch/xtensa.in.2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config/arch/xtensa.in.2	Wed Jul 24 15:10:47 2013 -0700
@@ -0,0 +1,30 @@
+choice
+	prompt "Target Architecture Variant"
+	default ARCH_xtensa_fsf
+config XTENSA_CUSTOM
+	bool "Custom Xtensa processor configuration"
+
+config ARCH_xtensa_fsf
+	bool "fsf - Default configuration"
+
+endchoice
+
+config ARCH_XTENSA_CUSTOM_OVERLAY_FILE
+	string "Custom Xtensa process configuration file name"
+	depends on XTENSA_CUSTOM
+	default ""
+	help
+	  Enter the name of the custom processor configuration
+	  overlay file or leave blank to use the default 'xtensa-overlay.tar'.
+	  For more information about this option, please also consult
+	  the 'help' section of the 'Target Architecture Variant'
+	  option above.
+	  
+config ARCH_XTENSA_CUSTOM_OVERLAY_LOCATION
+	string "Full path to custom Xtensa processor configurations"
+	depends on XTENSA_CUSTOM
+	default ""
+	help
+	  Enter the path to the directory for the custom processor
+	  configuration file or leave blank to use the default location:
+	  CT_CUSTOM_LOCATION_ROOT_DIR
diff -r 58ca31386bfb -r 40864183a101 scripts/build/arch/xtensa.sh
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/build/arch/xtensa.sh	Wed Jul 24 15:10:47 2013 -0700
@@ -0,0 +1,75 @@
+# Compute Xtensa-specific values
+
+CT_DoArchTupleValues() {
+    # The architecture part of the tuple:
+    CT_TARGET_ARCH="${CT_ARCH}${CT_ARCH_SUFFIX}"
+    # The system part of the tuple:
+    case "${CT_LIBC}" in
+        *glibc)   CT_TARGET_SYS=gnu;;
+        uClibc)   CT_TARGET_SYS=uclibc;;
+    esac
+}
+
+# This function updates the specified component (binutils, gcc, gdb, etc.)
+# with the processor specific configuration.
+CT_ConfigureXtensa() {
+    local component="${1}"
+    local version="${2}"
+    local custom_overlay="${CT_ARCH_XTENSA_CUSTOM_OVERLAY_FILE}"
+    local custom_location="${CT_ARCH_XTENSA_CUSTOM_OVERLAY_LOCATION}"
+
+    if [ -z "${CT_ARCH_XTENSA_CUSTOM_OVERLAY_FILE}" ]; then
+        custom_overlay="xtensa-overlay.tar"
+    fi
+
+    local full_file="${CT_TARBALLS_DIR}/${custom_overlay}"
+    local basename="${component}-${version}"
+    local ext
+
+    CT_TestAndAbort "${custom_overlay}: CT_CUSTOM_LOCATION_ROOT_DIR or CT_ARCH_XTENSA_CUSTOM_OVERLAY_LOCATION must be set." \
+        -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${custom_location}"
+
+    if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" \
+         -a -z "${custom_location}" ]; then
+             custom_location="${CT_CUSTOM_LOCATION_ROOT_DIR}"
+    fi
+
+    if ! ext="$(CT_GetFileExtension "${basename}")"; then
+        CT_DoLog WARN "'${basename}' not found in '${CT_TARBALLS_DIR}'"
+        return 1
+    fi
+
+    if [ -e "${CT_SRC_DIR}/.${basename}.configuring" ]; then
+        CT_DoLog ERROR "The '${basename}' source were partially configured."
+        CT_DoLog ERROR "Please remove first:"
+        CT_DoLog ERROR " - the source dir for '${basename}', in '${CT_SRC_DIR}'"
+        CT_DoLog ERROR " - the file '${CT_SRC_DIR}/.${basename}.extracted'"
+        CT_DoLog ERROR " - the file '${CT_SRC_DIR}/.${basename}.patch'"
+        CT_DoLog ERROR " - the file '${CT_SRC_DIR}/.${basename}.configuring'"
+        CT_Abort
+    fi
+
+    CT_DoLog EXTRA "Using '${custom_config}' from ${custom_location}"
+    CT_DoExecLog DEBUG ln -sf "${custom_location}/${custom_config}" \
+                              "${CT_TARBALLS_DIR}/${custom_config}"
+
+    CT_DoExecLog DEBUG touch "${CT_SRC_DIR}/.${basename}.configuring"
+
+    CT_Pushd "${CT_SRC_DIR}/${basename}"
+
+    tar_opts=( "--strip-components=1" )
+    tar_opts+=( "-xv" )
+
+    case "${ext}" in
+        .tar)           CT_DoExecLog FILE tar "${tar_opts[@]}" -f "${full_file}" "${component}";;
+        .tar.gz|.tgz)   gzip -dc "${full_file}" | CT_DoExecLog FILE tar "${tar_opts[@]}" -f - "${component}";
+        *)              CT_DoLog WARN "Don't know how to handle '${basename}${ext}': unknown extension"
+                        return 1
+                        ;;
+    esac
+
+    CT_DoExecLog DEBUG touch "${CT_SRC_DIR}/.${basename}.configured"
+    CT_DoExecLog DEBUG rm -f "${CT_SRC_DIR}/.${basename}.configuring"
+
+    CT_Popd
+}
diff -r 58ca31386bfb -r 40864183a101 scripts/build/binutils/binutils.sh
--- a/scripts/build/binutils/binutils.sh	Wed Jul 10 12:40:21 2013 +0100
+++ b/scripts/build/binutils/binutils.sh	Wed Jul 24 15:10:47 2013 -0700
@@ -37,6 +37,10 @@
         CT_Extract "elf2flt-${CT_ELF2FLT_VERSION}"
         CT_Patch "elf2flt" "${CT_ELF2FLT_VERSION}"
     fi
+
+    if [ -n "${CT_ARCH_XTENSA_CUSTOM_NAME}" ]; then
+	CT_ConfigureXtensa "binutils" "${CT_BINUTILS_VERSION}"
+    fi
 }
 
 # Build binutils for build -> target
diff -r 58ca31386bfb -r 40864183a101 scripts/build/cc/gcc.sh
--- a/scripts/build/cc/gcc.sh	Wed Jul 10 12:40:21 2013 +0100
+++ b/scripts/build/cc/gcc.sh	Wed Jul 24 15:10:47 2013 -0700
@@ -58,6 +58,10 @@
        ]; then
         CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar"
     fi
+
+	if [ -n "${CT_ARCH_XTENSA_CUSTOM_NAME}" ]; then
+		CT_ConfigureXtensa "gcc" "${CT_CC_VERSION}"
+	fi
 }
 
 #------------------------------------------------------------------------------
diff -r 58ca31386bfb -r 40864183a101 scripts/build/debug/300-gdb.sh
--- a/scripts/build/debug/300-gdb.sh	Wed Jul 10 12:40:21 2013 +0100
+++ b/scripts/build/debug/300-gdb.sh	Wed Jul 24 15:10:47 2013 -0700
@@ -93,6 +93,10 @@
         CT_Extract "expat-${CT_DEBUG_GDB_EXPAT_VERSION}"
         CT_Patch "expat" "${CT_DEBUG_GDB_EXPAT_VERSION}"
     fi
+
+    if [ -n "${CT_ARCH_XTENSA_CUSTOM_OVERLAY_FILE}" ]; then
+        CT_ConfigureXtensa "gdb" "${CT_GDB_VERSION}"
+    fi
 }
 
 do_debug_gdb_build() {
