<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.linux-xtensa.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chris</id>
	<title>Linux/Xtensa - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.linux-xtensa.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chris"/>
	<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Special:Contributions/Chris"/>
	<updated>2026-05-05T02:25:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Instructions_for_building_and_booting_Linux&amp;diff=722</id>
		<title>Instructions for building and booting Linux</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Instructions_for_building_and_booting_Linux&amp;diff=722"/>
		<updated>2014-07-29T18:19:13Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;&#039;&#039;Note that this page is mostly outdated and only kept for reference. Support for Xtensa is now integrated in the main Buildroot repository and instructions for building Buildroot can be found under [[Buildroot]]&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These instructions explain how to build a toolchain, root filesystem and kernel for Linux running on an Xtensa processor.  These instructions apply specifically to the XTAV60 (LX60) board. &lt;br /&gt;
&lt;br /&gt;
Some general notes on these instructions:&lt;br /&gt;
&lt;br /&gt;
*  They are a work in progress.  If you are using the latest development sources, the build process may change, so you should be sure to get the latest version of this document at [http://wiki.linux-xtensa.org/index.php/Buildroot_Build_Instructions http://wiki.linux-xtensa.org/index.php/Buildroot_Build_Instructions].  If you are using one of the development snapshot releases, you should use the version of the build instructions included with that snapshot.&lt;br /&gt;
&lt;br /&gt;
*  The following was tested on x86 machines running RedHat Enterprise Linux 4 (RHEL4) and Fedora Core 3 (FC3).  It is expected to work on newer Fedora releases (e.g., was tested on FC6) but to maintain host compatibility with Xtensa Tools, it is best to avoid Fedora releases beyond FC5.  Other host distributions likely work but have not been tested.&lt;br /&gt;
**  &#039;&#039;&#039;NOTE:&#039;&#039;&#039; this assumes the default selection of packages in buildroot.  Selecting extra packages may require a more recent host OS or more recent version of certain tools.  For example, the default version of &amp;lt;tt&amp;gt;find&amp;lt;/tt&amp;gt; on RHEL4 is too old to allow building all X11 packages in buildroot, so it is necessary to upgrade the host version of &amp;lt;tt&amp;gt;findutils&amp;lt;/tt&amp;gt; on RHEL4 to build these packages.&lt;br /&gt;
&lt;br /&gt;
*  Lines prefixed with &amp;quot;sudo&amp;quot; need to be executed as root.  The rest is best executed as a non-root user.  (It is possible to install &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; as a non-root user if root access is an issue.  How to do this isn&#039;t shown here.)&lt;br /&gt;
&lt;br /&gt;
*  Lines that set environment variables assume a Bourne compatible shell (e.g., /bin/sh or bash), but are easily adapted to other shells.&lt;br /&gt;
&lt;br /&gt;
*  Instructions are assumed executed all in order (e.g., commands assume current directory and environment variables set earlier).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup your host system ==&lt;br /&gt;
&lt;br /&gt;
If you are using one of the snapshot releases, you can skip this step.&lt;br /&gt;
&lt;br /&gt;
If you want to work with the latest development sources, you will need&lt;br /&gt;
[[Installing GIT|&amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; installed on your system]].&lt;br /&gt;
&lt;br /&gt;
== Download buildroot and Linux kernel sources ==&lt;br /&gt;
&lt;br /&gt;
The following section describes how to download stable versions&lt;br /&gt;
of buildroot, and of the Linux kernel, for Xtensa cores.&lt;br /&gt;
&lt;br /&gt;
First, create an empty directory &amp;lt;tt&amp;gt;&amp;lt;workdir&amp;gt;&amp;lt;/tt&amp;gt; on a disk with&lt;br /&gt;
at least 4 GB available space.  After the download operations below,&lt;br /&gt;
you&#039;ll end up with the following file structure,&lt;br /&gt;
which is assumed by the rest of this document:&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;workdir&amp;gt;/&lt;br /&gt;
            /buildroot&lt;br /&gt;
            /linux&lt;br /&gt;
&lt;br /&gt;
First download the buildroot sources.&lt;br /&gt;
The current stable source repository and branch have strange names,&lt;br /&gt;
bear with me, they&#039;re the correct ones to use.&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  If you happen to have write access to the repository, use &amp;lt;tt&amp;gt;&#039;&#039;&#039;git+ssh:&#039;&#039;&#039;&amp;lt;/tt&amp;gt; instead of &#039;&#039;&#039;&amp;lt;tt&amp;gt;git:&amp;lt;/tt&amp;gt;&#039;&#039;&#039; in the clone command below,&lt;br /&gt;
so that you can later easily push changes back to the repository.&lt;br /&gt;
For more details, see the [http://wiki.linux-xtensa.org/index.php/Repository_Access repository access] page.&lt;br /&gt;
&lt;br /&gt;
Download buildroot as follows:&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;$ cd &amp;lt;workdir&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;$ git clone git://git.linux-xtensa.org/git/buildroot/buildroot-xtensa-HiFi2-Snapshot.git buildroot&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;$ cd buildroot&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;$ git checkout -b snapshot_2+SMP origin/snapshot_2+SMP&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
then the Linux kernel sources:&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;$ cd &amp;lt;workdir&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;$ git clone git://git.linux-xtensa.org/git/kernel/xtensa-2.6.29-smp.git linux&#039;&#039;&#039;&lt;br /&gt;
    &lt;br /&gt;
Note how in the first case (buildroot), we use a non default branch,&lt;br /&gt;
so the last two commands setup tracking for that remote branch and&lt;br /&gt;
does a check-out of that branch in the working tree.&lt;br /&gt;
In the second case (linux), we use the default branch (&amp;lt;i&amp;gt;master&amp;lt;/i&amp;gt; branch)&lt;br /&gt;
which gets checked out by default.&lt;br /&gt;
&lt;br /&gt;
Major development updates to buildroot for Xtensa are expected to happen&lt;br /&gt;
in the following repository, mostly in the master branch.&lt;br /&gt;
However, although it has some more recent packages, this repository is often&lt;br /&gt;
in a state of development and not quite as stable as the above.&lt;br /&gt;
So, &#039;&#039;&#039;DON&#039;T DO THIS STEP&#039;&#039;&#039; unless you know what you are doing, and want to&lt;br /&gt;
experiment with this version of buildroot instead of the above.&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;$ cd &amp;lt;workdir&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;$ git clone git://git.linux-xtensa.org/git/buildroot/buildroot-xtensa.git buildroot&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Install any required processor specific overlay ==&lt;br /&gt;
&lt;br /&gt;
This step is required if you are targeting a custom Xtensa processor.&lt;br /&gt;
If you use a Diamond 232L Standard Core, you can skip this step.&lt;br /&gt;
&lt;br /&gt;
To configure buildroot and the kernel to use a custom Xtensa processor&lt;br /&gt;
configuration, you need to overlay a set of files customized for your&lt;br /&gt;
processor configuration onto toolchain sources (gcc, binutils, gdb, etc)&lt;br /&gt;
and the Linux kernel.  This process has been automated using a script&lt;br /&gt;
located in the buildroot source tree.&lt;br /&gt;
For usage information, you can invoke it without arguments:&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;$ cd &amp;lt;workdir&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;$ ./buildroot/target/xtensa/xt-buildroot-overlay-install&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
which displays a help message similar to the following:&lt;br /&gt;
&lt;br /&gt;
 xt-buildroot-overlay-install version 1.3&lt;br /&gt;
 Usage:  xt-buildroot-overlay-install &amp;lt;parameters&amp;gt; [&amp;lt;options&amp;gt;]&lt;br /&gt;
 Where &amp;lt;parameters&amp;gt; are:&lt;br /&gt;
   -t file.tgz     Specify path to the Xtensa Linux overlay tarball, typically&lt;br /&gt;
                   &amp;lt;xtensa_root&amp;gt;/src/xtensa-config-overlay.tar.gz&lt;br /&gt;
   -b dir          Path to the base of the buildroot source tree, in which&lt;br /&gt;
                   package specific overlay tarballs get installed.&lt;br /&gt;
   -k dir          Path to the base of the Linux kernel source tree, in which&lt;br /&gt;
                   the Linux kernel specific overlay gets installed.&lt;br /&gt;
   -c config_name  Name for the Xtensa processor configuration as it will be&lt;br /&gt;
                   known to the open source community.  Must be a lowercase&lt;br /&gt;
                   identifier, starting with a letter, consisting of letters&lt;br /&gt;
                   and numbers and underscores, not ending with underscore&lt;br /&gt;
                   and not containing consecutive underscores.  For examples:&lt;br /&gt;
                      dc232b , dc232b_be , mmubasele , fsf , s5000 .&lt;br /&gt;
   -l long_name    Long name for the Xtensa processor configuration, human-&lt;br /&gt;
                   readable with spaces etc allowed (must be quoted).&lt;br /&gt;
                   For example:  &#039;Diamond 232L Standard Core Rev.B (LE)&#039;&lt;br /&gt;
                   Try to keep it within approximately 40 characters.&lt;br /&gt;
 And &amp;lt;options&amp;gt; are:&lt;br /&gt;
   -f              If package specific overlay tarballs already exist in&lt;br /&gt;
                   the destination source tree, overwrite them without asking.&lt;br /&gt;
   --help          Show this usage message.&lt;br /&gt;
&lt;br /&gt;
Note that the Xtensa Linux overlay tarball MUST be obtained from an Xtensa&lt;br /&gt;
core package built using release RB-2008.3 or later.&lt;br /&gt;
&lt;br /&gt;
Here is an example invocation of the overlay installation script:&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;$ ./buildroot/target/xtensa/xt-buildroot-overlay-install -t blinkcore-config-overlay.tar.gz&#039;&#039;&#039; \&lt;br /&gt;
         &#039;&#039;&#039;-b ./buildroot -k ./linux -c superzip -l &amp;quot;ChipCorp SuperZIP Blink Accelerator Core&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The script extracts some relevant information from the overlay tarball,&lt;br /&gt;
presents it along with relevant parameters to the user, and prompts&lt;br /&gt;
for confirmation before proceeding.&lt;br /&gt;
&lt;br /&gt;
The chosen processor name (-c option) must be unique among known Xtensa processors.&lt;br /&gt;
It is also probably wise to avoid names confusingly similar to other (non-Xtensa) processors.&lt;br /&gt;
If you expect at some point to contribute support for your custom processor to the&lt;br /&gt;
open-source community, this name will likely be long-lived.&lt;br /&gt;
(One way to contribute support for a custom processor might be to submit the overlay tarball&lt;br /&gt;
or files to the linux-xtensa.org maintainers.)&lt;br /&gt;
&lt;br /&gt;
In the steps below, buildroot and the Linux kernel must be configured&lt;br /&gt;
(in their respective &amp;lt;code&amp;gt;&#039;&#039;make menuconfig&#039;&#039;&amp;lt;/code&amp;gt; steps) to select&lt;br /&gt;
the &amp;lt;code&amp;gt;&#039;&#039;custom&#039;&#039;&amp;lt;/code&amp;gt; Xtensa processor option.&lt;br /&gt;
This presents an extra configuration menu entry where you must provide&lt;br /&gt;
the name of the Xtensa processor.  Set it to the same name&lt;br /&gt;
as was specified in the &amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt; option above.&lt;br /&gt;
&lt;br /&gt;
== Build a toolchain and root filesystem using buildroot ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  for more details on generic buildroot topics not covered in this simple how-to,&lt;br /&gt;
see [http://buildroot.uclibc.org/ buildroot.uclibc.org].&lt;br /&gt;
&lt;br /&gt;
=== Configure buildroot ===&lt;br /&gt;
&lt;br /&gt;
The first time you configure buildroot, start with defaults for your Xtensa processor:&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;$ cd &amp;lt;workdir&amp;gt;/buildroot&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;$ ./target/xtensa/setup-config &amp;lt;i&amp;gt;&amp;lt;corename&amp;gt;&amp;lt;/i&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;&amp;lt;corename&amp;gt;&#039;&#039; is the overlay name of your selected Xtensa or Diamond core&lt;br /&gt;
(e.g., &#039;&#039;&#039;dc233c&#039;&#039;&#039;).  If you omit &#039;&#039;&amp;lt;corename&amp;gt;&#039;&#039;, a help message and a list&lt;br /&gt;
of currently installed Tensilica core overlays is displayed.&lt;br /&gt;
&lt;br /&gt;
Optionally, you can then customize your buildroot configuration, such as&lt;br /&gt;
selecting additional packages, setting various parameters, and so on.&lt;br /&gt;
The following make targets provide a &#039;&#039;curses&#039;&#039; (text-based graphical) interface&lt;br /&gt;
for configuring buildroot, the uClibc C library, and busybox, respectively.&lt;br /&gt;
(&#039;&#039;&#039;Note:&#039;&#039;&#039;  You need the &amp;lt;tt&amp;gt;TERM&amp;lt;/tt&amp;gt; environment variable properly set for&lt;br /&gt;
these curses based tools to work.)&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;$ make menuconfig&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;$ make uclibc-menuconfig&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;$ make busybox-menuconfig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Build buildroot ===&lt;br /&gt;
&lt;br /&gt;
Just type:&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;$ make&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
THIS WILL TAKE A LONG TIME (from about 30 minutes with defaults on a 3 GHz Pentium 4,&lt;br /&gt;
to perhaps an hour or many depending on your system and on whether&lt;br /&gt;
you enabled extra packages in your buildroot configuration).&lt;br /&gt;
&lt;br /&gt;
Wait patiently for the build to complete.  This builds an entire toolchain&lt;br /&gt;
as well as some basic packages, and constructs a root filesystem.&lt;br /&gt;
It might build many more packages if you selected them earlier with menuconfig.&lt;br /&gt;
&lt;br /&gt;
==== If Something Goes Wrong ====&lt;br /&gt;
&lt;br /&gt;
Perhaps you missed some step above and the build fails.  Or you&#039;re just switching to a different processor configuration, or making some change with unknown dependencies.  Either way, you&#039;ll probably need to fix the error and/or make the change, and redo the whole build.  The above &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; command usually works fine if you&lt;br /&gt;
just added a package using menuconfig, but otherwise does not check many dependencies, so it will usually NOT rebuild things that depend on whatever you have fixed or changed.  Here&#039;s one way to retry the make from scratch without having to wipe out the &amp;lt;tt&amp;gt;buildroot&amp;lt;/tt&amp;gt; directory tree completely and start again from the git cloning.&lt;br /&gt;
&lt;br /&gt;
  $ &#039;&#039;&#039;rm -rf *build_xtensa* binaries&#039;&#039;&#039;&lt;br /&gt;
  $ &#039;&#039;&#039;make&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is not necessary to empty the &#039;dl&#039; subdirectory, which contains tarballs downloaded from the Internet, nor the .config file, which contains the buildroot configuration.  Customizations to the uClibc and &amp;lt;tt&amp;gt;busybox&amp;lt;/tt&amp;gt; configurations should have ended up getting saved in target/xtensa/uClibc.config and target/xtensa/busybox-config, respectively, so hopefully are preserved by the above sequence.&lt;br /&gt;
&lt;br /&gt;
== Build and Run a Linux Kernel on the XTAV60, AXAV110, or XTAV200 Boards ==&lt;br /&gt;
&lt;br /&gt;
References to the &#039;&#039;XTAV60 board&#039;&#039; refer to the combination of&lt;br /&gt;
the Avnet [http://www.em.avnet.com/tensilica1 LX60 (Xilinx) Development Board]&lt;br /&gt;
and a Tensilica-provided FPGA bitstream containing a configured Tensilica&lt;br /&gt;
processor and basic peripheral IP.  For more details, please refer to the&lt;br /&gt;
&#039;&#039;Tensilica Avnet LX60 (XT-AV60) Board User&#039;s Guide&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Similarly, references to the &#039;&#039;XTAV200 board&#039;&#039; refers the combination of&lt;br /&gt;
the Avnet [http://www.em.avnet.com/tensilica2 LX200 (Xilinx) Development Board]&lt;br /&gt;
and a Tensilica-provided FPGA bitstream containing a configured Tensilica&lt;br /&gt;
processor and basic peripheral IP.  For more details, please refer to the&lt;br /&gt;
&#039;&#039;Tensilica Avnet LX200 (XT-AV200) Board User&#039;s Guide&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure the kernel ===&lt;br /&gt;
&lt;br /&gt;
The kernel build is a two-step process:  configure the kernel, and build it.&lt;br /&gt;
First, before we can do anything with the kernel, set your PATH to&lt;br /&gt;
point to the toolchain built using buildroot.&lt;br /&gt;
&lt;br /&gt;
   $ &#039;&#039;&#039;export PATH=&amp;quot;&#039;&#039;&amp;lt;workdir&amp;gt;&#039;&#039;/buildroot/build_xtensa_&#039;&#039;&amp;lt;cname&amp;gt;&#039;&#039;/staging_dir/usr/bin:$PATH&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;&amp;lt;cname&amp;gt;&#039;&#039; is the name of the Xtensa processor configuration you selected&lt;br /&gt;
when building the toolchain (e.g., &amp;lt;code&amp;gt;dc232b&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Now setup a destination for kernel builds.&lt;br /&gt;
We usually like to have the build directory separate from&lt;br /&gt;
the source directory, so we use &#039;O=&amp;lt;/destination/path&amp;gt;&#039; in&lt;br /&gt;
kernel make commands.  If you&#039;ll be routinely building multiple&lt;br /&gt;
configurations of the Linux kernel, it&#039;s good to have some&lt;br /&gt;
naming conventions for the build directory.  For example,&lt;br /&gt;
to experiment with multiple target platforms but only one&lt;br /&gt;
processor configuration, we include just the platform name here:&lt;br /&gt;
&lt;br /&gt;
   $&#039;&#039;&#039;mkdir build-xtav60&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start with the default kernel configuration for the Avnet board&lt;br /&gt;
(which works on both XTAV60 (LX60), XTAV110 (LX110), and XTAV200 (LX200) boards)&lt;br /&gt;
as follows:&lt;br /&gt;
&lt;br /&gt;
   $ &#039;&#039;&#039;cd linux&#039;&#039;&#039;&lt;br /&gt;
   $ &#039;&#039;&#039;make O=../build-xtav60 ARCH=xtensa KBUILD_DEFCONFIG=lx60_defconfig defconfig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This configures the kernel using the default configuration found in&lt;br /&gt;
&#039;&#039;&#039;arch/xtensa/configs/lx60_defconfig&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039;  This kernel configuration has nothing to do with Xtensa&lt;br /&gt;
processor configuration.  That comes next.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s now customize this a little bit to select the correct Xtensa processor&lt;br /&gt;
configuration, and to bundle the root filesystem into the kernel:&lt;br /&gt;
&lt;br /&gt;
   $ &#039;&#039;&#039;make O=../build-xtav60 ARCH=xtensa menuconfig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;General setup&#039;&#039;&#039;,&lt;br /&gt;
make sure the &#039;&#039;&#039;Initial RAM filesystem and RAM disk (initramfs/initrd) support&#039;&#039;&#039;&lt;br /&gt;
entry is enabled.  Underneath that, edit &#039;&#039;&#039;Initramfs source file(s)&#039;&#039;&#039;,&lt;br /&gt;
and enter the path to the cpio formatted root filesystem&lt;br /&gt;
generated by buildroot:&lt;br /&gt;
&lt;br /&gt;
      &#039;&#039;&amp;lt;workdir&amp;gt;&#039;&#039;/buildroot/binaries/uclibc/rootfs.xtensa_&#039;&#039;&amp;lt;cname&amp;gt;&#039;&#039;.cpio.gz&lt;br /&gt;
&lt;br /&gt;
(Don&#039;t forget to replace &#039;&#039;&amp;lt;workdir&amp;gt;&#039;&#039; with the appropriate full path&lt;br /&gt;
and &#039;&#039;&amp;lt;cname&amp;gt;&#039;&#039; with your Xtensa processor configuration name.)&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Processor type and features&#039;&#039;&#039;,&lt;br /&gt;
make sure the &#039;&#039;&#039;Xtensa Processor Configuration&#039;&#039;&#039; is correct and matches&lt;br /&gt;
the processor configuration name you used to build the toolchain with buildroot&lt;br /&gt;
(for example, &#039;&#039;dc232b&#039;&#039; for Diamond 232L Rev.B).&lt;br /&gt;
The kernel build selects a toolchain and processor variant specific headers&lt;br /&gt;
based on this selection.&lt;br /&gt;
If the desired processor configuration does not appear explicitly in the list,&lt;br /&gt;
simply select &#039;&#039;&#039;Custom Xtensa processor configuration&#039;&#039;&#039; and enter the&lt;br /&gt;
processor configuration name (all lowercase) into the next menu parameter,&lt;br /&gt;
&#039;&#039;&#039;Xtensa Processor Custom Variant Name&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Back in the main menu, under &#039;&#039;&#039;Platform options&#039;&#039;&#039;, make sure the&lt;br /&gt;
&#039;&#039;&#039;CPU clock rate&#039;&#039;&#039; entry is set correctly according to the following table:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;text-align:center; margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Board !! Frequency selected in XPG &amp;lt;br/&amp;gt;(MHz) !! &#039;&#039;CPU clock rate&#039;&#039; setting &amp;lt;br/&amp;gt;(kHz)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| XTAV60  (LX60)&lt;br /&gt;
|  30  || 33333&lt;br /&gt;
|-&lt;br /&gt;
|  40  || 40000&lt;br /&gt;
|-&lt;br /&gt;
|  50  || 50000&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| XTAV110 (LX110)&lt;br /&gt;
|  30  || 33333&lt;br /&gt;
|-&lt;br /&gt;
|  40  || 40000&lt;br /&gt;
|-&lt;br /&gt;
|  50  || 50000&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;| XTAV200 (LX200)&lt;br /&gt;
|  30  || 31250&lt;br /&gt;
|-&lt;br /&gt;
|  40  || 41667&lt;br /&gt;
|-&lt;br /&gt;
|  50  || 50000&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Exit menuconfig, saving your configuration changes.&lt;br /&gt;
&lt;br /&gt;
Backup your configuration outside the build directory.  For example:&lt;br /&gt;
&lt;br /&gt;
   $ &#039;&#039;&#039;cp ../build-xtav60/.config config.xtav60.saved&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you do a clean rebuild of the kernel (e.g., &amp;quot;rm -rf ../build-xtav60&amp;quot;)&lt;br /&gt;
you can now configure it with simply:&lt;br /&gt;
   $ &#039;&#039;&#039;mkdir ../build-xtav60 ; cp config.xtav60.saved ../build-xtav60/.config&#039;&#039;&#039;&lt;br /&gt;
Of course if you update the kernel, you&#039;ll probably again have to do:&lt;br /&gt;
   $ &#039;&#039;&#039;make O=../build-xtav60 ARCH=xtensa  menuconfig&#039;&#039;&#039;&lt;br /&gt;
and save a new copy of your configuration.&lt;br /&gt;
&lt;br /&gt;
=== Build the kernel ===&lt;br /&gt;
&lt;br /&gt;
   $ &#039;&#039;&#039;make O=../build-xtav60 ARCH=xtensa&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The build will issue a few warnings which are normal.&lt;br /&gt;
Once complete, the bootable image is in:&lt;br /&gt;
      &amp;lt;workdir&amp;gt;/build-xtav60/arch/xtensa/boot/Image.elf&lt;br /&gt;
and the uncompressed ELF file containing kernel symbols is in:&lt;br /&gt;
      &amp;lt;workdir&amp;gt;/build-xtav60/vmlinux&lt;br /&gt;
There is also a RedBoot bootable image (if you use RedBoot) in:&lt;br /&gt;
      &amp;lt;workdir&amp;gt;/build-xtav60/arch/xtensa/boot/zImage.redboot&lt;br /&gt;
&lt;br /&gt;
=== Install Xtensa Tools for the selected core ===&lt;br /&gt;
&lt;br /&gt;
If you opt to download the kernel over OCD, you need &amp;lt;tt&amp;gt;xt-gdb&amp;lt;/tt&amp;gt;&lt;br /&gt;
which is part of Tensilica&#039;s Xtensa Tools package.  This must be obtained&lt;br /&gt;
from Tensilica, and is not the same toolchain as built by buildroot.&lt;br /&gt;
You also need to install the corresponding Tensilica core package,&lt;br /&gt;
so that the Xtensa Tools know about your particular configured&lt;br /&gt;
Tensilica core.&lt;br /&gt;
&lt;br /&gt;
The toolchain built using buildroot can be configured to&lt;br /&gt;
include GDB, but that version of GDB does not support&lt;br /&gt;
communicating with Tensilica&#039;s Xtensa OCD Daemon, and&lt;br /&gt;
thus cannot be used to download the kernel over OCD.&lt;br /&gt;
&lt;br /&gt;
In this example, it is assumed that the machine hosting the&lt;br /&gt;
Xtensa Tools has access to the &amp;lt;workdir&amp;gt; directory tree.&lt;br /&gt;
&lt;br /&gt;
=== Install and setup the Xtensa OCD Daemon ===&lt;br /&gt;
&lt;br /&gt;
Setup and connect your JTAG probe, etc.&lt;br /&gt;
&lt;br /&gt;
=== Connect a terminal server ===&lt;br /&gt;
&lt;br /&gt;
At 38400 bps 8N1 no flow control to the XTAV60 serial port.&lt;br /&gt;
&lt;br /&gt;
=== Optionally, setup networking ===&lt;br /&gt;
&lt;br /&gt;
This step is optional.&lt;br /&gt;
&lt;br /&gt;
Setup the board&#039;s MAC address using dipswitches&lt;br /&gt;
(see XTAV60 or XTAV200 board docs as appropriate)&lt;br /&gt;
and connect the board to a network that has a&lt;br /&gt;
DHCP server that will respond to that MAC address.&lt;br /&gt;
If you don&#039;t do this step, you&#039;ll simply not have network&lt;br /&gt;
access, and the boot process will take a minute or so longer&lt;br /&gt;
while the kernel times out waiting for a BOOTP response.&lt;br /&gt;
You can edit the kernel configuration and rebuild the kernel&lt;br /&gt;
to avoid using bootp (in particular, remove &amp;quot;ip=bootp&amp;quot; from&lt;br /&gt;
the kernel cmdline).&lt;br /&gt;
&lt;br /&gt;
=== Download and run the kernel ===&lt;br /&gt;
&lt;br /&gt;
Reset the board (see board documentation).&lt;br /&gt;
&lt;br /&gt;
Using Xtensa Tools, invoke:&lt;br /&gt;
&lt;br /&gt;
   $ &#039;&#039;&#039;xt-gdb &amp;lt;workdir&amp;gt;/build-xtav60/arch/xtensa/boot/Image.elf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;(xt-gdb) target remote &amp;lt;ocdhost&amp;gt;:20000 0&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;(xt-gdb) reset&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;(xt-gdb) load&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;(xt-gdb) set $pc = &amp;amp;_ResetVector&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;(xt-gdb) symbol-file &amp;lt;workdir&amp;gt;/build-xtav60/vmlinux&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;(xt-gdb) c&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;ocdhost&amp;gt; is the IP address or DNS name of the machine&lt;br /&gt;
running the Xtensa OCD daemon.  The Linux kernel should&lt;br /&gt;
start booting as soon as &#039;c&#039; (continue) is executed.&lt;br /&gt;
&lt;br /&gt;
You should eventually get a login prompt.&lt;br /&gt;
Just login as root (no password).&lt;br /&gt;
&lt;br /&gt;
Try various Linux commands.  Look at &amp;lt;tt&amp;gt;/bin&amp;lt;/tt&amp;gt;,&lt;br /&gt;
&amp;lt;tt&amp;gt;/sbin&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/usr/bin&amp;lt;/tt&amp;gt;, etc to see what&#039;s available.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  no need to setup an NFS or TFTP server.  The filesystem&lt;br /&gt;
is contained within the kernel image.  You may be able to mount&lt;br /&gt;
other filesystems over NFS though, if you wish, after booting.&lt;br /&gt;
&lt;br /&gt;
Recently the MMU was modified to come up uninitialized and it&#039;s&lt;br /&gt;
necessary for the Linux kernel to map the MMU prior to running.&lt;br /&gt;
This means you can&#039;t place breakpoints in the kernel until the&lt;br /&gt;
mapping has been completed. It&#039;s likely worth while looking&lt;br /&gt;
at the example .xt-gdbinit file in the Kernel Xtensa Documentation:&lt;br /&gt;
&lt;br /&gt;
    xtensa-2.6.29-smp-xcc-O3/Documentation/xtensa/gdbmacros/xt-gdbinit&lt;br /&gt;
&lt;br /&gt;
When running on Avnet boards it&#039;s necessary to use a HardWare Breakpoint&lt;br /&gt;
at the kernel symbol &#039;&#039;&#039;set_breakpoints&#039;&#039;&#039; which is near &#039;&#039;&#039; _startup&#039;&#039;&#039; &lt;br /&gt;
and set your early kernel breakpoints once you get to this hardware breakpoint.&lt;br /&gt;
&lt;br /&gt;
With ISS simulation normal breakpoints must be used.&lt;br /&gt;
&lt;br /&gt;
Below is an example snippet from the sample &#039;&#039;&#039;xt-gdbinit&#039;&#039;&#039; script:&lt;br /&gt;
&lt;br /&gt;
    if $debug_hw_breakpoints_supported&lt;br /&gt;
      hbreak set_breakpoints&lt;br /&gt;
    else&lt;br /&gt;
      break set_breakpoints&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    set var $_startup = $bpnum&lt;br /&gt;
    commands $_startup&lt;br /&gt;
        set_breakpoints&lt;br /&gt;
        delete $_startup&lt;br /&gt;
        info breakpoints&lt;br /&gt;
        set var $doing_commands = 0&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
=== Mounting the Root Filesystem Over NFS ===&lt;br /&gt;
&lt;br /&gt;
If you build more than the minimal set of packages using&lt;br /&gt;
buildroot, the root filesystem can easily grow too large to&lt;br /&gt;
fit comfortably (or at all) inside the kernel.  In this case,&lt;br /&gt;
rather than follow the instructions exactly as above,&lt;br /&gt;
you&#039;ll want to mount the root filesystem over NFS.&lt;br /&gt;
&lt;br /&gt;
You may also want to mount the root filesystem over NFS to&lt;br /&gt;
make changes to the filesystem persistent across runs and&lt;br /&gt;
accessible from your development host.&lt;br /&gt;
&lt;br /&gt;
First you need to install the root filesystem generated&lt;br /&gt;
using buildroot, to a machine that can serve it over NFS.&lt;br /&gt;
Assuming this machine runs Linux, one way to install it is&lt;br /&gt;
as follows:&lt;br /&gt;
&lt;br /&gt;
 $ &#039;&#039;&#039;mkdir &#039;&#039;&amp;lt;exportpath&amp;gt;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 $ &#039;&#039;&#039;cd &#039;&#039;&amp;lt;exportpath&amp;gt;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 $ &#039;&#039;&#039;sudo cpio -i -d -m -F &#039;&#039;&amp;lt;workdir&amp;gt;&#039;&#039;/buildroot/binaries/uclibc/rootfs.xtensa_&#039;&#039;&amp;lt;cname&amp;gt;&#039;&#039;.cpio --no-absolute-filenames &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You then need to enable the NFS server on your system&lt;br /&gt;
(if not already active), and export this filesystem.&lt;br /&gt;
How you do this depends on your host Linux distribution.&lt;br /&gt;
For example, on some Fedora releases, one might:&lt;br /&gt;
&lt;br /&gt;
* add the export path to &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt; using a line such as&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;exportpath&amp;gt;&#039;&#039;  *(rw,sync,no_root_squash,no_all_squash,no_wdelay)&lt;br /&gt;
&lt;br /&gt;
* turn on the NFS server if needed:&lt;br /&gt;
&lt;br /&gt;
 $ &#039;&#039;&#039;sudo /sbin/chkconfig nfs on&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* tell the NFS server about the new exported filesystem&lt;br /&gt;
&lt;br /&gt;
 $ &#039;&#039;&#039;sudo /usr/sbin/exportfs -a&#039;&#039;&#039;&lt;br /&gt;
 $ &#039;&#039;&#039;sudo /usr/sbin/exportfs -r&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Second, follow the instructions in the previous sections,&lt;br /&gt;
then configure the kernel again as follows.&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;General setup&#039;&#039;&#039;, make sure the&lt;br /&gt;
&#039;&#039;&#039;Initial RAM filesystem and RAM disk (initramfs/initrd) support&#039;&#039;&#039;&lt;br /&gt;
entry is disabled (rather than enabled as done in previous sections).&lt;br /&gt;
&lt;br /&gt;
Under &#039;&#039;&#039;Platform options&#039;&#039;&#039;, under the line &#039;&#039;&#039;Default bootloader kernel arguments&#039;&#039;&#039;,&lt;br /&gt;
select the boot parameters line and set it to something like this:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;console=ttyS0,38400 ip=dhcp root=/dev/nfs rw nfsroot=&#039;&#039;&amp;lt;server_ip&amp;gt;&#039;&#039;:&#039;&#039;&amp;lt;exportpath&amp;gt;&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;&amp;lt;server_ip&amp;gt;&#039;&#039; is the IP address of your NFS server, and &#039;&#039;&amp;lt;exportpath&amp;gt;&#039;&#039;&lt;br /&gt;
is the exported filesystem path.&lt;br /&gt;
&lt;br /&gt;
Another approach is to just specify the ip addresses directly in the CMDLINE&lt;br /&gt;
  &#039;&#039;&#039;CONFIG_CMDLINE=&amp;quot;console=ttyS0,38400 ip=192.168.11.95:192.168.11.220:192.168.11.1:255.255.255.0:HiFi-2 root=/dev/nfs rw nfsroot=192.168.11.55:/exports/LINUX_ROOT.DC_C_233L debug coredump_filter=0xff&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Where the IP addresses are in the form:&lt;br /&gt;
&lt;br /&gt;
    &#039;&#039;&#039;${ipaddr}:${nfsroot_server}:${gatewayip}:${netmask}:${hostname}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Save this configuration, rebuild the kernel, and follow the&lt;br /&gt;
instructions in previous sections to download and run the kernel.&lt;br /&gt;
If everything goes well and is setup correctly, your kernel should&lt;br /&gt;
now boot with a root filesystem mounted over NFS.&lt;br /&gt;
&lt;br /&gt;
== Build and Run a Linux Kernel on the Instruction Set Simulator (ISS) ==&lt;br /&gt;
&lt;br /&gt;
You can build and run a Linux kernel in the Xtensa Instruction Set&lt;br /&gt;
Simulator (ISS).  The following instructions have only been tried&lt;br /&gt;
with an ISS from the RB-2008.3 release of Xtensa Tools.  Bear in&lt;br /&gt;
mind that the XTAV60 port is likely much more stable than the ISS port&lt;br /&gt;
of Linux at this point in time.&lt;br /&gt;
&lt;br /&gt;
Note:  Depending on your host OS version, you may need to install&lt;br /&gt;
Xtensa Tools on a separate machine.&lt;br /&gt;
&lt;br /&gt;
=== Configure and Build the Kernel for ISS ===&lt;br /&gt;
&lt;br /&gt;
Repeat all the same instructions as above for building the kernel for an&lt;br /&gt;
Avnet board, except that when initially configuring the kernel,&lt;br /&gt;
start from a ISS platform template instead. For example for the &lt;br /&gt;
DC233C Variant:&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;$ mkdir build-iss&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;$ cd linux&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;$ make O=../build-iss ARCH=xtensa KBUILD_DEFCONFIG=iss_dc233c_defconfig defconfig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The above make example configures the kernel using the default configuration found in&lt;br /&gt;
&#039;&#039;&#039;arch/xtensa/configs/iss_dc233_defconfig&#039;&#039;&#039;. Most important to note is that the&lt;br /&gt;
root file system mounted when Linux boots comes via the targets device &#039;&#039;&#039;/dev/simdisk0&#039;&#039;&#039; &lt;br /&gt;
which is defined in the kernel &#039;&#039;&#039;.config&#039;&#039;&#039; file. For example:&lt;br /&gt;
&lt;br /&gt;
         &#039;&#039;&#039;CONFIG_SIMDISK0_FILENAME=&amp;quot;/export2/DC_C_233L/LINUX_ROOT.ext2&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The SIMDISK file name and VARIANT name are typically configured when running &#039;&#039;&#039;make menuconfig&#039;&#039;&#039;; Ex:&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;$ make O=../build-iss ARCH=xtensa menuconfig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
and selecting&lt;br /&gt;
&lt;br /&gt;
    &#039;&#039;&#039;Xtensa Platform options&#039;&#039;&#039; ---&amp;gt;  &#039;&#039;&#039;Host filename for a simulated device&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
and entering the pathname to the .ext2 file there. Ex: &#039;&#039;&#039;/export2/DC_C_233L/LINUX_ROOT.ext2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You often want to change the VARIANT to the one you desire, Ex: FSF. You do this via &lt;br /&gt;
the top level menu:&lt;br /&gt;
&lt;br /&gt;
    &#039;&#039;&#039;Xtensa Processor type and features ---&amp;gt;  Xtensa Processor Custom Core Variant Name&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With the new SIMDISK approach you copy the EXT2 Filesystem file generated by Buildroot&lt;br /&gt;
to a location to be accessed by Xtensa Linux. Ex:&lt;br /&gt;
&lt;br /&gt;
    &#039;&#039;&#039;$ cp /export2/DC_C_233L/src/buildroot-xtensa-HiFi2-Snapshot/binaries/dc233c/rootfs.xtensa_dc233c.ext2 /export2/DC_C_233L/LINUX_ROOT.ext2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; There is an old &#039;&#039;&#039;iss_defconfig&#039;&#039;&#039; that tries to use a &#039;&#039;&#039;tuntap&#039;&#039;&#039; Ethernet &lt;br /&gt;
interface that currently isn&#039;t supported.&lt;br /&gt;
Previously with this old iss_defconfig using the &#039;&#039;&#039;tuntap&#039;&#039;&#039; Ethernet interface&lt;br /&gt;
it was suggested to set up the initramfs filesystem, and do the following.&lt;br /&gt;
Under &#039;&#039;&#039;Bus Options&#039;&#039;&#039;, deselect &#039;&#039;&#039;PCI support&#039;&#039;&#039;.&lt;br /&gt;
Under &#039;&#039;&#039;Platform Options&#039;&#039;&#039;, deselect &#039;&#039;&#039;Default bootloader kernel arguments&#039;&#039;&#039;.&lt;br /&gt;
Hopefully we will someday be able to support the use of a network interface with&lt;br /&gt;
ISS simulation and then be able to mount NFS root partitions again. So I&#039;m leaving&lt;br /&gt;
this note for future exploration of this mechanism; Hope you don&#039;t mind the clutter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Continue configuring and building the kernel as usual.&lt;br /&gt;
&lt;br /&gt;
===  Run the Kernel on ISS ===&lt;br /&gt;
&lt;br /&gt;
Using Xtensa Tools, invoke:&lt;br /&gt;
&lt;br /&gt;
   &#039;&#039;&#039;$ xt-gdb &amp;lt;workdir&amp;gt;/build-iss/arch/xtensa/boot/Image.elf&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;(xt-gdb) target sim --turbo --memlimit=128&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;(xt-gdb) symbol-file &amp;lt;workdir&amp;gt;/build-iss/vmlinux&#039;&#039;&#039;&lt;br /&gt;
   &#039;&#039;&#039;(xt-gdb) run&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wait patiently while Linux boots ... (maybe a minute). The setting of the &#039;&#039;&#039;memlimit&#039;&#039;&#039;&lt;br /&gt;
needs to match the PLATFORM_DEFAULT_MEM_SIZE defined in /arch/xtensa/platforms/iss/include/platform/hardware.h.&lt;br /&gt;
Currently this limit us 128 MegaBytes:&lt;br /&gt;
&lt;br /&gt;
    #define PLATFORM_DEFAULT_MEM_SIZE       0x08000000      /* 13,4217,728 128M */&lt;br /&gt;
&lt;br /&gt;
and we will be extending this for the DC233L to take advantage of it&#039;s V3 MMU.   &lt;br /&gt;
&lt;br /&gt;
Login as root (no password).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  Input via ISS is cooked, so everything typed gets echoed.&lt;br /&gt;
Also, time as reported by the kernel does not progress&lt;br /&gt;
according to true wall-clock time:  it currently depends on&lt;br /&gt;
a simulated processor clock, which advances at various speeds&lt;br /&gt;
according to load.&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Toolchain_Overlay_File&amp;diff=720</id>
		<title>Toolchain Overlay File</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Toolchain_Overlay_File&amp;diff=720"/>
		<updated>2014-01-28T18:56:58Z</updated>

		<summary type="html">&lt;p&gt;Chris: /* Creating the overlay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;Overlay&#039;&#039; is a tar file that includes modified versions of processor configuration dependent files that are required by various toolchain tools, such as binutils, gcc, and gdb. The overlay described here has a specific layout and is intended for toolchain generators, such as buildroot or crosstool-NG. &lt;br /&gt;
&lt;br /&gt;
== Creating the overlay ==&lt;br /&gt;
&lt;br /&gt;
The overlay file shipped by Tensilica uses a flat directory structure, which is not suitable for buildroot or crosstool-NG at the moment. The file is part of the generated processor package, and can be found in the XtDevTools directory:&lt;br /&gt;
&lt;br /&gt;
 XtDevTools/install/build/$VERSION/$XTENSA_CORE/src/xtensa-config-overlay.tar.gz&lt;br /&gt;
&lt;br /&gt;
The following script converts this file and writes the modified version to xtensa-overlay.tar. Simply provide the path and name of the overlay provided by Tensilica when running the script:&lt;br /&gt;
&lt;br /&gt;
 ./script xtensa-config-overlay.tar.gz&lt;br /&gt;
&lt;br /&gt;
The file xtensa-overlay.tar created by the script can now be used to build buildroot or crosstool-NG. For more information how to configure those generators, please see [[Buildroot]] or [[crosstool-NG]].&lt;br /&gt;
&lt;br /&gt;
(Note that there is also a similar overlay file in the generated processor package provided by Tensilica, but it has a different directory layout and is not suitable for the script provided below. It can be found under .../$XTENSA_CORE/xtensa-elf/src/linux/misc/linux-overlay.tar.gz)&lt;br /&gt;
&lt;br /&gt;
== Conversion Script ==&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 if [ $# -ne 1 ]; then&lt;br /&gt;
  echo &amp;quot;Error: No overlay file specified&amp;quot;&lt;br /&gt;
  exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 if [ $1 == &amp;quot;xtensa-overlay.tar&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Error: Input file must be named other than &#039;xtensa-overlay.tar&#039;&amp;quot;&lt;br /&gt;
  exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 if [ ! -f $1 ]; then&lt;br /&gt;
  echo &amp;quot;Error: Overlay file $1 not found&amp;quot;&lt;br /&gt;
  exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 TMPDIR=`mktemp -d`&lt;br /&gt;
 tar xzf $1 -C $TMPDIR&lt;br /&gt;
 mkdir -p $TMPDIR/overlay/binutils/bfd $TMPDIR/overlay/binutils/ld \&lt;br /&gt;
          $TMPDIR/overlay/binutils/include $TMPDIR/overlay/gcc/include \&lt;br /&gt;
          $TMPDIR/overlay/gdb/bfd $TMPDIR/overlay/gdb/gdb/regformats \&lt;br /&gt;
          $TMPDIR/overlay/gdb/gdb/gdbserver $TMPDIR/overlay/gdb/include&lt;br /&gt;
 mv $TMPDIR/binutils/xtensa-config.h $TMPDIR/overlay/binutils/include&lt;br /&gt;
 mv $TMPDIR/binutils/xtensa-modules.c $TMPDIR/overlay/binutils/bfd&lt;br /&gt;
 mv $TMPDIR/gcc/xtensa-config.h $TMPDIR/overlay/gcc/include&lt;br /&gt;
 mv $TMPDIR/gdb/xtensa-config.c $TMPDIR/overlay/gdb/gdb&lt;br /&gt;
 mv $TMPDIR/gdb/xtensa-config.h $TMPDIR/overlay/gdb/include&lt;br /&gt;
 mv $TMPDIR/gdb/xtensa-modules.c $TMPDIR/overlay/gdb/bfd&lt;br /&gt;
 mv $TMPDIR/gdb/xtensa-xtregs.c $TMPDIR/overlay/gdb/gdb/gdbserver&lt;br /&gt;
 mv $TMPDIR/gdb/reg-xtensa.dat $TMPDIR/overlay/gdb/gdb/regformats&lt;br /&gt;
 tar cf xtensa-overlay.tar -C $TMPDIR/overlay/ binutils gcc gdb&lt;br /&gt;
 rm -fr $TMPDIR&lt;br /&gt;
&lt;br /&gt;
== Example Files ==&lt;br /&gt;
&lt;br /&gt;
The following files are the original and generated overlay file for the DC_D_233L processor.&lt;br /&gt;
&lt;br /&gt;
* http://www.linux-xtensa.org/pub/xtensa-config-overlay.tar.gz - Original overlay file provided by Tensilica&lt;br /&gt;
* http://www.linux-xtensa.org/pub/xtensa-overlay.tgz - : Generated overlay file, applicable to buildroot and crosstool-NG&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Toolchain_Overlay_File&amp;diff=719</id>
		<title>Toolchain Overlay File</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Toolchain_Overlay_File&amp;diff=719"/>
		<updated>2014-01-28T18:49:54Z</updated>

		<summary type="html">&lt;p&gt;Chris: /* Conversion Script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;Overlay&#039;&#039; is a tar file that includes modified versions of processor configuration dependent files that are required by various toolchain tools, such as binutils, gcc, and gdb. The overlay described here has a specific layout and is intended for toolchain generators, such as buildroot or crosstool-NG. &lt;br /&gt;
&lt;br /&gt;
== Creating the overlay ==&lt;br /&gt;
&lt;br /&gt;
The overlay file shipped by Tensilica uses a flat directory structure, which is not suitable for buildroot or crosstool-NG at the moment. It is part of the generated processor package, and can be found in the XtDevTools directory:&lt;br /&gt;
&lt;br /&gt;
 XtDevTools/install/build/$VERSION/$XTENSA_CORE/src/xtensa-config-overlay.tar.gz&lt;br /&gt;
&lt;br /&gt;
The following script converts the directory structure of that file by creating a new overlay file, called xtensa-overlay.tgz, and extracting the necessary files from the Tensilica overlay. Simply provide the path and name of the overlay provided by Tensilica when running the script:&lt;br /&gt;
&lt;br /&gt;
 ./script xtensa-config-overlay.tar.gz&lt;br /&gt;
&lt;br /&gt;
This will create the file xtensa-overlay.tgz required by buildroot or crosstool-NG. For more information how to configure those generators, please see [[Buildroot]] or [[crosstool-NG]].&lt;br /&gt;
&lt;br /&gt;
(Note that there is also a similar file under .../$XTENSA_CORE/xtensa-elf/src/linux/misc/linux-overlay.tar.gz. This file has a different layout structure and doesn&#039;t work with the script below)&lt;br /&gt;
&lt;br /&gt;
== Conversion Script ==&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 if [ $# -ne 1 ]; then&lt;br /&gt;
  echo &amp;quot;Error: No overlay file specified&amp;quot;&lt;br /&gt;
  exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 if [ $1 == &amp;quot;xtensa-overlay.tar&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;Error: Input file must be named other than &#039;xtensa-overlay.tar&#039;&amp;quot;&lt;br /&gt;
  exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 if [ ! -f $1 ]; then&lt;br /&gt;
  echo &amp;quot;Error: Overlay file $1 not found&amp;quot;&lt;br /&gt;
  exit 1&lt;br /&gt;
 fi&lt;br /&gt;
 TMPDIR=`mktemp -d`&lt;br /&gt;
 tar xzf $1 -C $TMPDIR&lt;br /&gt;
 mkdir -p $TMPDIR/overlay/binutils/bfd $TMPDIR/overlay/binutils/ld \&lt;br /&gt;
          $TMPDIR/overlay/binutils/include $TMPDIR/overlay/gcc/include \&lt;br /&gt;
          $TMPDIR/overlay/gdb/bfd $TMPDIR/overlay/gdb/gdb/regformats \&lt;br /&gt;
          $TMPDIR/overlay/gdb/gdb/gdbserver $TMPDIR/overlay/gdb/include&lt;br /&gt;
 mv $TMPDIR/binutils/xtensa-config.h $TMPDIR/overlay/binutils/include&lt;br /&gt;
 mv $TMPDIR/binutils/xtensa-modules.c $TMPDIR/overlay/binutils/bfd&lt;br /&gt;
 mv $TMPDIR/gcc/xtensa-config.h $TMPDIR/overlay/gcc/include&lt;br /&gt;
 mv $TMPDIR/gdb/xtensa-config.c $TMPDIR/overlay/gdb/gdb&lt;br /&gt;
 mv $TMPDIR/gdb/xtensa-config.h $TMPDIR/overlay/gdb/include&lt;br /&gt;
 mv $TMPDIR/gdb/xtensa-modules.c $TMPDIR/overlay/gdb/bfd&lt;br /&gt;
 mv $TMPDIR/gdb/xtensa-xtregs.c $TMPDIR/overlay/gdb/gdb/gdbserver&lt;br /&gt;
 mv $TMPDIR/gdb/reg-xtensa.dat $TMPDIR/overlay/gdb/gdb/regformats&lt;br /&gt;
 tar cf xtensa-overlay.tar -C $TMPDIR/overlay/ binutils gcc gdb&lt;br /&gt;
 rm -fr $TMPDIR&lt;br /&gt;
&lt;br /&gt;
== Example Files ==&lt;br /&gt;
&lt;br /&gt;
The following files are the original and generated overlay file for the DC_D_233L processor.&lt;br /&gt;
&lt;br /&gt;
* http://www.linux-xtensa.org/pub/xtensa-config-overlay.tar.gz - Original overlay file provided by Tensilica&lt;br /&gt;
* http://www.linux-xtensa.org/pub/xtensa-overlay.tgz - : Generated overlay file, applicable to buildroot and crosstool-NG&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Boot_Loader&amp;diff=718</id>
		<title>Boot Loader</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Boot_Loader&amp;diff=718"/>
		<updated>2013-12-03T22:30:08Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Boot Loaders ==&lt;br /&gt;
&lt;br /&gt;
The [http://en.wikipedia.org/wiki/Bootloader bootstrap loader or boot loader] is a small program running on a computer or device after power-on to load the operating system. Most boot loaders today provide additional features that allow to upgrade the firmware and access the system for troubleshooting.&lt;br /&gt;
&lt;br /&gt;
== U-Boot &amp;lt;small&amp;gt;([[U-Boot|build instructions for Xtensa]])&amp;lt;/small&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
U-Boot is one of the most popular boot loaders for Linux. It has a very complete [http://www.denx.de/wiki/U-Boot Project Page] as well as an nice introduction available [http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Introduction-to-Das-UBoot-the-universal-open-source-bootloader/ here]. A very complete U-Boot manual is also available [http://www.denx.de/wiki/DULG/Manual here].&lt;br /&gt;
&lt;br /&gt;
A development tree for supporting Xtensa in the latest version of U-Boot has been set up [https://github.com/foss-xtensa/u-boot here]&lt;br /&gt;
&lt;br /&gt;
== RedBoot ==&lt;br /&gt;
&lt;br /&gt;
Tensilica has also ported [http://sourceware.org/redboot/ RedBoot] for the Xtensa architecture. A RedBoot binary targeting the XTAV60 (LX60) or XTAV200 (LX200) emulation board is usually provided after generating an FPGA bitstream for one of these boards.  See the relevant board documentation from Tensilica for more details such as usage and supported features.  For more information and to request sources, please contact [http://www.tensilica.com/ Tensilica] directly.  For an example of how to boot the Linux kernel using RedBoot on the LX60 or LX200 boards, see [[RedBoot Example]].&lt;br /&gt;
&lt;br /&gt;
A source tarball for RedBoot with support for the Xtensa architecture is available [http://linux-xtensa.org/pub/redboot/redboot1.3.1-RB2007.2.tgz here].  For more details, see the tarball&#039;s [http://linux-xtensa.org/pub/redboot/redboot1.3.1-RB2007.2/README.txt README.txt] file.&lt;br /&gt;
&lt;br /&gt;
== Host-Side Loading via OCD ==&lt;br /&gt;
&lt;br /&gt;
An alternative to boot loaders is an external (e.g. &#039;&#039;&amp;quot;host-side&amp;quot;&#039;&#039;) loading mechanism.&lt;br /&gt;
&lt;br /&gt;
One common way to load a Linux kernel is to use debugging interfaces such as On-Chip Debug (OCD).  For example, Tensilica Tools GDB (xt-gdb) can connect to a target Xtensa processor using OCD via the Xtensa OCD Daemon.  It can then load and execute a Linux RAM image (Image.elf or vmlinux) onto the target using standard GDB commands.  See [[Buildroot_Build_Instructions#Download_and_run_the_kernel|Download and Run the Kernel]] for an example.&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Self-Boot Image ==&lt;br /&gt;
&lt;br /&gt;
It is possible to adapt the kernel build scripts for the Xtensa architecture to create a self-booting image. That is, a Linux kernel image that includes a Reset handler and can be either burned in ROM or Flash or downloaded to the target using another mechanism such as OCD.  &#039;&#039;&#039;&#039;&#039;Note:  This has not yet been implemented.&#039;&#039;&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Main_Page&amp;diff=717</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Main_Page&amp;diff=717"/>
		<updated>2013-11-20T17:49:39Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
= &amp;lt;big&amp;gt;Welcome to the Linux/Xtensa Wiki&amp;lt;/big&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
This Wiki project provides information for running and porting [http://en.wikipedia.org/wiki/Linux Linux] and other Open Source Software to the [http://www.tensilica.com Xtensa processor architecture].&lt;br /&gt;
&lt;br /&gt;
The Xtensa processor architecture is a configurable, extensible, and synthesizable 32-bit RISC processor core. All Xtensa processors share a common base instruction set architecture, thereby ensuring compatibility of third party application software and development tools. Many architecture specific projects, such as the Linux kernel, GNU toolchain, and other development tools and applications already support the Xtensa architecture. Modifications to support a specific processor configuration are limited to a small set of configuration files, and the process is mostly automated. The pages listed under &#039;&#039;Developing on the Xtensa Platform&#039;&#039; provide information to support a specific configuration.&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:45%;height=100%; background:#ffffff;&amp;quot; valign=top|&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Getting Started&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Supported Processors]]&lt;br /&gt;
* [[Evaluation Platforms|Evaluation Platforms]]&lt;br /&gt;
* [[Instructions for building and booting Linux]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Support&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Mailing Lists]]&lt;br /&gt;
* [[Status of the Xtensa Port]]&lt;br /&gt;
* [[Supported Processor Configurations]]&lt;br /&gt;
|style=&amp;quot;width:10%;height:100%;background:#ffffff;&amp;quot; |&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;width:45%;height:100%; background:#ffffff;&amp;quot; valign=top|&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Developing on the Xtensa Platform&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Toolchain and Embedded Distributions]]&lt;br /&gt;
* [[Linux Kernel]]&lt;br /&gt;
* [[Boot Loader|Boot Loader]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Developers&#039; Resources&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Platform Porting|Porting the Kernel to a new Platform (Board)]]&lt;br /&gt;
* [[ABI Interface]]&lt;br /&gt;
* [[Xtensa on QEMU]]&lt;br /&gt;
* [[Testing and Verification]]&lt;br /&gt;
&lt;br /&gt;
| colspan=3 |&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;small&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039;  Due to spam, creation of new wiki accounts has been disabled until further notice.&lt;br /&gt;
If you want to get an account, and be able to edit or contribute anything,&lt;br /&gt;
please try sending an email to the&lt;br /&gt;
[http://lists.linux-xtensa.org/mailman/listinfo/linux-xtensa linux-xtensa mailing list]&lt;br /&gt;
identifying yourself and what you want to contribute.&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;/i&amp;gt;&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Supported_Processors&amp;diff=716</id>
		<title>Supported Processors</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Supported_Processors&amp;diff=716"/>
		<updated>2013-11-11T20:50:25Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Xtensa Processor Architecture ==&lt;br /&gt;
&lt;br /&gt;
[[image:chip.jpg|right]]&lt;br /&gt;
The Xtensa processor architecture is a configurable and extensible synthesizable 32-bit RISC processor core. SoC and processor designers can select from a variety of options, such as instruction-set extensions (for example, narrow instructions, floating point instructions, etc.), memory, cache, and interrupt configurations. Moreover, Xtensa processors also support custom-defined instructions and registers. Nevertheless, all Xtensa processors share a common base instruction set architecture, thereby ensuring compatibility of third party application software and development tools.&lt;br /&gt;
&lt;br /&gt;
Tensilica’s Diamond Standard Series processor family consists of a number of ready-to-use synthesizable cores and is based on the Xtensa processor architecture. The Diamond Standard 233L processor, for example, contains an MMU and fully supports running Linux. &lt;br /&gt;
&lt;br /&gt;
== Automatic Support for Custom Xtensa Cores ==&lt;br /&gt;
&lt;br /&gt;
Despite the endless possibilities provided by the configurability and extensibility of the Xtensa architecture, generating an open source toolchain and kernel that fully support a specific configured Xtensa processor is straightforward. It only requires to update a small set of files inside the toolchain and kernel sources before the actual build process. All necessary files are typically provided by the processor vendor or directly from Tensilica in the form of a single &#039;&#039;overlay&#039;&#039; file. This mostly automated process (scripted) avoids having to &#039;&#039;manually&#039;&#039; port the kernel to a new processor variant, which would be typical for a fixed processor architecture. &lt;br /&gt;
&lt;br /&gt;
Note that a &#039;&#039;processor configuration&#039;&#039; is also often referred to as a &#039;&#039;core variant&#039;&#039; in Linux.  The following list shows processor configurations already included in the kernel:&lt;br /&gt;
&lt;br /&gt;
* Diamond 232L&lt;br /&gt;
* Diamond 233L&lt;br /&gt;
* Stretch S6000 (without MMU)&lt;br /&gt;
* &#039;FSF&#039; default configuration (only for tool verification)&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Crosstool-NG&amp;diff=715</id>
		<title>Crosstool-NG</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Crosstool-NG&amp;diff=715"/>
		<updated>2013-11-11T19:36:06Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Crosstool-NG provides a system to build a complete toolchain. It supports various C-libraries (newlib, uClibc, glibc, and eglibc), but can also be used to build a toolchain without a C-library. The following paragraphs describe the steps to build a toolchain tailored for an Xtensa configuration. &lt;br /&gt;
&lt;br /&gt;
== Configure and build Crosstool-NG ==&lt;br /&gt;
&lt;br /&gt;
The mainline repository for crosstool-NG does not yet include support for Xtensa, so you need to clone the repository from linux-xtensa.org:&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/foss-xtensa/crosstool-NG.git&lt;br /&gt;
&lt;br /&gt;
=== Build ct-ng ===&lt;br /&gt;
&lt;br /&gt;
ct-ng is similar to the command &#039;make&#039; for other projects, and is used to configure and build the toolchain. Since we cloned it from the repository, it is not yet preconfigured with &#039;autoconf&#039;, so run autoconf first:&lt;br /&gt;
&lt;br /&gt;
 autoconf&lt;br /&gt;
&lt;br /&gt;
The next step is to configure ct-ng for your system. The default installation path is /usr/local/ but can be overwritten with the --prefix option. In this example, we install it in the current directory. Note that the prefix option requires an absolute path, so we use $PWD in this example:&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=$PWD/usr&lt;br /&gt;
&lt;br /&gt;
Finally, run &#039;make install&#039; to build ct-ng and install it:&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
== Building a &#039;bare&#039; toolchain without a C-library ==&lt;br /&gt;
&lt;br /&gt;
=== Configure the toolchain ===&lt;br /&gt;
&lt;br /&gt;
The first step is to configure the toolchain:&lt;br /&gt;
&lt;br /&gt;
 ./ct-ng menuconfig&lt;br /&gt;
&lt;br /&gt;
Make the following changes (---&amp;gt; means to enter the sub-menu). We are assuming that the overlay tar image (OVERLAY_TARFILE) has been copied to ABSOLUTE_PATH_TO_OVERLAY. More information about the overlay file can be found [[Create Overlay|here]]. Note that the processor configuration name is currently not used.&lt;br /&gt;
 &lt;br /&gt;
 Target options  ---&amp;gt;                                         &lt;br /&gt;
 Target Architecture (xtensa) &lt;br /&gt;
 Target Architecture Variant (Custom Xtensa processor configuration)&lt;br /&gt;
 (PROCESSOR_NAME) Custom Xtensa process configuration name&lt;br /&gt;
 (OVERLAY_TARFILE) Custom Xtensa overlay file name&lt;br /&gt;
 (ABSOLUTE_PATH_TO_OVERLAY) Full path to custom Xtensa processor configurations  &lt;br /&gt;
 &lt;br /&gt;
 C-library  ---&amp;gt;                                              &lt;br /&gt;
 C library (none)&lt;br /&gt;
&lt;br /&gt;
The default directory for the created toolchain is $HOME/x-tools, but can be configured under &#039;Paths and misc options&#039;:&lt;br /&gt;
&lt;br /&gt;
 Paths and misc options  ---&amp;gt;&lt;br /&gt;
 (${HOME}/x-tools/${CT_TARGET}) Prefix directory&lt;br /&gt;
&lt;br /&gt;
=== Build and install the toolchain ===&lt;br /&gt;
&lt;br /&gt;
Finally, build and install the toolchain. &lt;br /&gt;
&lt;br /&gt;
 ./ct-ng build&lt;br /&gt;
&lt;br /&gt;
=== Test it ===&lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$HOME/x-tools/xtensa-unknown-linux-gnu/bin&lt;br /&gt;
 xtensa-unknown-linux-gnu-gcc t.c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building a &#039;glibc&#039; based toolchain &#039;&#039;(experimental)&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NOTE THAT THE REPOSITORY IS CURRENTLY NOT AVAILABLE.&lt;br /&gt;
&lt;br /&gt;
The glibc port is experimental at the moment and also not part of the main repository yet. A version for Xtensa can be found on linux-xtensa.org, so you can clone it from there:&lt;br /&gt;
&lt;br /&gt;
 git clone git://.../git/glibc&lt;br /&gt;
&lt;br /&gt;
=== Configure the toolchain ===&lt;br /&gt;
&lt;br /&gt;
Similar to the &#039;bare&#039; version above, the first step is to configure crosstool-NG. Simply run&lt;br /&gt;
&lt;br /&gt;
 ./ct-ng menuconfig&lt;br /&gt;
&lt;br /&gt;
and make the following changes (---&amp;gt; means to enter the sub-menu). We are assuming that the overlay file ([[Create Overlay]]) has been copied to ABSOLUTE_PATH_TO_OVERLAY/CPUNAME.tar.gz.&lt;br /&gt;
&lt;br /&gt;
 Paths and misc options ---&amp;gt;&lt;br /&gt;
 [*] Try features marked as EXPERIMENTAL&lt;br /&gt;
&lt;br /&gt;
 Target options  ---&amp;gt;                                         &lt;br /&gt;
 Target Architecture (xtensa) &lt;br /&gt;
 Target Architecture Variant (Custom Xtensa processor configuration)&lt;br /&gt;
 (PROCESSOR_NAME) Custom Xtensa process configuration name&lt;br /&gt;
 (OVERLAY_TARFILE) Custom Xtensa overlay file name&lt;br /&gt;
 (ABSOLUTE_PATH_TO_OVERLAY) Full path to custom Xtensa processor configurations  &lt;br /&gt;
 &lt;br /&gt;
 C-library  ---&amp;gt;                                              &lt;br /&gt;
 C library (glibc)&lt;br /&gt;
 glibc version (Custom glibc)&lt;br /&gt;
 (ABSOLUTE_PATH_TO_glibc-2.17) Full path to custom glibc source&lt;br /&gt;
 (ports) Extra addons&lt;br /&gt;
&lt;br /&gt;
=== Build and install the toolchain ===&lt;br /&gt;
&lt;br /&gt;
Finally, build and install the toolchain.&lt;br /&gt;
&lt;br /&gt;
 ./ct-ng build&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Supported_Processor_Configurations&amp;diff=714</id>
		<title>Supported Processor Configurations</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Supported_Processor_Configurations&amp;diff=714"/>
		<updated>2013-11-11T19:07:53Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Software Recommendations =&lt;br /&gt;
&lt;br /&gt;
== 128 MB RAM Limit ==&lt;br /&gt;
&lt;br /&gt;
Kernel highmem support has not yet been implemented in the main kernel tree, thus restricting generally usable RAM to the first 128 MB (starting from physical address zero).  Implementing kernel highmem support should release this limitation, but it isn&#039;t yet clear whether an implementation is practical in the presence of cache aliasing (caches larger than 4 x N kB, for an N-way set-associative cache) on RB-200x release or earlier Tensilica processors.&lt;br /&gt;
&lt;br /&gt;
= Hardware Recommendations =&lt;br /&gt;
&lt;br /&gt;
This section contains recommendations, notes, limitations and requirements for the development of hardware systems using Linux-Xtensa. They are oriented more towards hardware designer when they create a new Xtensa processor configuration or design an SOC with Xtensa processors. &lt;br /&gt;
&lt;br /&gt;
== MMU ==&lt;br /&gt;
&lt;br /&gt;
Processor configurations that run Linux should always include the MMU feature. Although Linux also supports MMU-less processors, it is not very well tested and has a lot of pitfalls. If the overhead of an MMU is too big, an alternative open or closed source operating system should be considered.&lt;br /&gt;
&lt;br /&gt;
== Atomic Memory Access Support ==&lt;br /&gt;
&lt;br /&gt;
For future compatibility with Linux kernel releases for the Xtensa architecture, please include support for the atomic load-conditional-store S32C1I instruction when designing your memory system. The memory system must provide for the atomic update of a memory location by holding off the load until all other transactions are complete, and holding off any other transactions once the atomic operation has started until it has finished.&lt;br /&gt;
&lt;br /&gt;
Tensilica&#039;s PIF Bridges all support this, but if you are using other bridges, this implementation should be verified.&lt;br /&gt;
&lt;br /&gt;
== Large RAM with Large Caches ==&lt;br /&gt;
&lt;br /&gt;
Tensilica asks to please contact Tensilica support if you are planning to use or build a linux based system that may require more than 128 MB of main RAM for an Xtensa processor configured with large caches (cache size &amp;gt; 4*N kB, for an N-way set associative cache). There are some system limitations that should be evaluated before proceeding.&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Main_Page&amp;diff=713</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Main_Page&amp;diff=713"/>
		<updated>2013-11-11T19:07:00Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
= &amp;lt;big&amp;gt;Welcome to the Linux/Xtensa Wiki&amp;lt;/big&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
This Wiki project provides information for running and porting [http://en.wikipedia.org/wiki/Linux Linux] and other Open Source Software to the [http://www.tensilica.com Xtensa processor architecture].&lt;br /&gt;
&lt;br /&gt;
The Xtensa processor architecture is a configurable, extensible, and synthesizable 32-bit RISC processor core. All Xtensa processors share a common base instruction set architecture, thereby ensuring compatibility of third party application software and development tools. Many architecture specific projects, such as the Linux kernel, GNU toolchain, and other development tools and applications already support the Xtensa architecture. Modifications to support a specific processor configuration are limited to a small set of configuration files, and the process is mostly automated. The pages listed under &#039;&#039;Supporting a processor configuration&#039;&#039; provide information to support a specific configuration.&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:45%;height=100%; background:#ffffff;&amp;quot; valign=top|&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Getting Started&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Supported Processors]]&lt;br /&gt;
* [[Evaluation Platforms|Evaluation Platforms]]&lt;br /&gt;
* [[Instructions for building and booting Linux]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Support&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Mailing Lists]]&lt;br /&gt;
* [[Status of the Xtensa Port]]&lt;br /&gt;
* [[Supported Processor Configurations]]&lt;br /&gt;
|style=&amp;quot;width:10%;height:100%;background:#ffffff;&amp;quot; |&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;width:45%;height:100%; background:#ffffff;&amp;quot; valign=top|&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Developing for the Xtensa Platform&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Toolchain and Embedded Distributions]]&lt;br /&gt;
* [[Linux Kernel]]&lt;br /&gt;
* [[Boot Loader|Boot Loader]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Supporting a new Platform&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Platform Porting|Porting the Kernel to a new Platform (Board)]]&lt;br /&gt;
* [[ABI Interface]]&lt;br /&gt;
* [[Xtensa on QEMU]]&lt;br /&gt;
* [[Testing and Verification]]&lt;br /&gt;
&lt;br /&gt;
| colspan=3 |&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;small&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039;  Due to spam, creation of new wiki accounts has been disabled until further notice.&lt;br /&gt;
If you want to get an account, and be able to edit or contribute anything,&lt;br /&gt;
please try sending an email to the&lt;br /&gt;
[http://lists.linux-xtensa.org/mailman/listinfo/linux-xtensa linux-xtensa mailing list]&lt;br /&gt;
identifying yourself and what you want to contribute.&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;/i&amp;gt;&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=KnownIssues&amp;diff=712</id>
		<title>KnownIssues</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=KnownIssues&amp;diff=712"/>
		<updated>2013-11-11T18:59:28Z</updated>

		<summary type="html">&lt;p&gt;Chris: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Linux_Kernel&amp;diff=711</id>
		<title>Linux Kernel</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Linux_Kernel&amp;diff=711"/>
		<updated>2013-11-11T18:59:12Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building a Kernel =&lt;br /&gt;
&lt;br /&gt;
The current mechanism to support a specific Xtensa processor configuration is not yet fully automated, but is a very simple and straight forward process. Note that the Xtensa port of Linux uses the terminology &#039;&#039;variant&#039;&#039; to describe a processor configuration. For this example, we will use &#039;&#039;MyCore&#039;&#039; as the new processor name, but any name can be used. The steps involved adding a processor configuration are:&lt;br /&gt;
&lt;br /&gt;
# Create a new directory for the processor &#039;&#039;variant&#039;&#039; (MyCore) and copy a set of configuration files that describes the processor to that directory&lt;br /&gt;
# Add the name of the processor configuration to a Linux configuration file.&lt;br /&gt;
# Add the path of the &#039;&#039;variant&#039;&#039; directory to a Makefile&lt;br /&gt;
&lt;br /&gt;
== Create a directory for the variant and copy configuration files ==&lt;br /&gt;
&lt;br /&gt;
All processor configuration specific sources and header files are located in arch/xtensa/variants/&#039;&#039;variant-name&#039;&#039; for source files, and arch/xtensa/variants/&#039;&#039;variant-name&#039;&#039;/include/variant for header files. The include directory typically contains at least the following three files that describe the processor configuration:&lt;br /&gt;
&lt;br /&gt;
* tie.h - describing custom defined TIE registers&lt;br /&gt;
* tie-asm.h - macros to access additional TIE registers&lt;br /&gt;
* core.h - describing various processor configurations, such as cache sizes, register options, etc.&lt;br /&gt;
&lt;br /&gt;
All processor configurations provide a set of these files as part of the &#039;&#039;overlay&#039;&#039; provided by Tensilica.&lt;br /&gt;
&lt;br /&gt;
If we want to add another processor, we have to create the following directory and copy the three configurations file to that directory:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p arch/xtensa/variants/MyCore/include/variant&lt;br /&gt;
 cp tie.h tie-asm.h core.h arch/xtensa/variants/MyCore/include/variant&lt;br /&gt;
&lt;br /&gt;
== Add the processor name to a Linux configuration file ==&lt;br /&gt;
&lt;br /&gt;
The file arch/xtensa/Kconfig contains a list of processor configurations. Simply add a new entry under the menu &amp;quot;Processor type and features&amp;quot; in the &amp;quot;Xtensa Processor Configuration&amp;quot; list. In most cases, the configuration will have an MMU, so add also the line &#039;&#039;select MMU&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 choice&lt;br /&gt;
         prompt &amp;quot;Xtensa Processor Configuration&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
 config XTENSA_VARAINT_DC233C&lt;br /&gt;
         bool &amp;quot;dc233c - Diamond 233L Standard Core Rev.C (LE)&amp;quot;&lt;br /&gt;
         select MMU&lt;br /&gt;
         help&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;config XTENSA_VARIANT_MYCORE&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;bool &amp;quot;MyCore - My extreeem core&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;select MMU&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;help&#039;&#039;&#039;&lt;br /&gt;
           &#039;&#039;&#039;MyCore with various optimizations.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add the processor to the makefile ==&lt;br /&gt;
&lt;br /&gt;
Simply add a line for your core at the top of the file. The part of the configuration name CONFIG_XTENSA_VARIANT_MYCORE after CONFIG_ must match the name that was added to Kconfig, and the right hand side must match the name of the directory created in step 1.&lt;br /&gt;
&lt;br /&gt;
 variant-$(CONFIG_XTENSA_VARIANT_S6000)          := s6000&lt;br /&gt;
 &#039;&#039;&#039;variant-$(CONFIG_XTENSA_VARIANT_MYCORE)         := MyCore&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Kernel loadable modules using FLIX with L32R =&lt;br /&gt;
&lt;br /&gt;
The kernel module loader (for the Xtensa architecture) supports only the limited set of relocations needed for module loading.  This includes, for example, relocation of literals referenced by L32R instructions.  This loader is not given specific information about any custom TIE configured in the processor, and thus is currently not able to relocate L32R instructions encoded in a FLIX bundle.&lt;br /&gt;
&lt;br /&gt;
To ensure kernel modules load properly, they need to avoid L32R instructions within FLIX instruction bundles.&lt;br /&gt;
   &lt;br /&gt;
Existing kernel code does not generate such instructions, so it is not susceptible.&lt;br /&gt;
However, it is possible to generate FLIX instructions using assembly code, or using the Tensilica XCC compiler.  In the case of assembly code, simply avoid using L32R or MOVI instructions within a FLIX instruction bundle, unless a MOVI is known to fit without expanding (&amp;quot;relaxing&amp;quot;) into an L32R instruction.  In the case of XCC, pass the -mno-flix to the compiler (xt-xcc) to avoid generating FLIX bundles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;:  The use of Tensilica software tools (including XCC) for Linux development is described in the &#039;&#039;Tensilica OSKit Guide&#039;&#039;, available from Tensilica.&lt;br /&gt;
&lt;br /&gt;
== Debugging Kernel Loadable Modules ==&lt;br /&gt;
&lt;br /&gt;
Debugging loadable modules isn&#039;t easy, a few pointers mentioned here might save you some time.  There is a mechanism that Amit Kalie mentioned on his KGDB webpage on loading the module symbols into gdb while loading a module [http://kgdb.linsyssoft.com/initmodule.htm Debuging init_module].&lt;br /&gt;
&lt;br /&gt;
The [http://linux.about.com/od/commands/l/blcmdl8_insmod.htm &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt; command] has a &amp;lt;tt&amp;gt;&#039;&#039;--map&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
option that dumps the module component offsets needed by Amit&#039;s approach.&lt;br /&gt;
Unfortunately the initial Xtensa buildroot snapshots have a version of &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt; that doesn&#039;t provide this option. Also, while debugging the kernel it&#039;s not convenient to run &amp;lt;tt&amp;gt;insmod&amp;lt;/tt&amp;gt; on the console of the target. &lt;br /&gt;
&lt;br /&gt;
A workaround to this problem is to hack the kernel &amp;lt;tt&amp;gt;module.c&amp;lt;/tt&amp;gt; file and enable debugging. &lt;br /&gt;
&lt;br /&gt;
    #if 1&lt;br /&gt;
    #define DEBUGP printk&lt;br /&gt;
    #else&lt;br /&gt;
    #define DEBUGP(fmt , a...)&lt;br /&gt;
    #endif&lt;br /&gt;
&lt;br /&gt;
This will enable &amp;lt;tt&amp;gt;module.c&amp;lt;/tt&amp;gt; to print the module section addresses. You then just list them in the gdb &amp;lt;tt&amp;gt;add-symbol-file&amp;lt;/tt&amp;gt; command using that command&#039;s section (&amp;lt;tt&amp;gt;&#039;&#039;-s&#039;&#039;&amp;lt;/tt&amp;gt;) options. &lt;br /&gt;
Note that the &amp;lt;tt&amp;gt;.text&amp;lt;/tt&amp;gt; section is specified without using the &amp;lt;tt&amp;gt;&#039;&#039;-s&#039;&#039;&amp;lt;/tt&amp;gt; option:  its address is given alone before any &amp;lt;tt&amp;gt;&#039;&#039;-s&#039;&#039;&amp;lt;/tt&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
    final section addresses:                  [Kernel Console Log/Output]&lt;br /&gt;
        0xc02a9098 .note.gnu.build-id&lt;br /&gt;
        0xc02b1000 .init.literal&lt;br /&gt;
        0xc02a7000 .text&lt;br /&gt;
        0xc02b11d8 .init.text&lt;br /&gt;
        0xc02a90bc .rodata&lt;br /&gt;
        0xc02a92c4 .rodata.str1.4&lt;br /&gt;
        0xc02ac27c .data&lt;br /&gt;
        0xc02ac640 __param&lt;br /&gt;
        0xc02ac668 .gnu.linkonce.this_module&lt;br /&gt;
        0xc02ac76c .bss&lt;br /&gt;
        0xc02aaf0c .symtab&lt;br /&gt;
        0xc02ab8fc .strtab&lt;br /&gt;
&lt;br /&gt;
    add-symbol-file /export/src/Transwitch/a2000_src/a2000_src/Linux_atlanta/ctlm-cpe/drivers/ctlmeth/ctlmeth.ko   \&lt;br /&gt;
        0xc02a7000                           \&lt;br /&gt;
        -s .data 0xc02ac27c                  \&lt;br /&gt;
        -s .init.text 0xc02b11d8             \&lt;br /&gt;
        -s .bss 0xc02ac76c                   \&lt;br /&gt;
        -s .init.literal 0xc02b1000          \&lt;br /&gt;
        -s  .rodata 0xc02a90bc&lt;br /&gt;
&lt;br /&gt;
You likely want to compile your modules unoptimized and unstripped to facilitate debugging and provide the path to the module source to gdb with the &amp;lt;tt&amp;gt;dir&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
For example:&lt;br /&gt;
    dir /home/pdelaney/src/Transwitch/a2000_src/a2000_src/Linux_atlanta/ctlm-cpe/drivers/ctlmeth/&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Supported_Processors&amp;diff=710</id>
		<title>Supported Processors</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Supported_Processors&amp;diff=710"/>
		<updated>2013-11-11T18:49:16Z</updated>

		<summary type="html">&lt;p&gt;Chris: /* Automatic Support for Custom Xtensa Cores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Xtensa Processor Architecture ==&lt;br /&gt;
&lt;br /&gt;
[[image:chip.jpg|right]]&lt;br /&gt;
The Xtensa processor architecture is a configurable, extensible, and synthesizable 32-bit RISC processor core. SoC and processor designers can select from a variety of options, such as instruction-set extensions, memory, cache, and interrupt configurations. Moreover, Xtensa processors can be extended with custom-defined instructions and registers, as well as custom port and queue interfaces. All Xtensa processors share a common base instruction set architecture, thereby ensuring compatibility of third party application software and development tools.&lt;br /&gt;
&lt;br /&gt;
Tensilica’s Diamond Standard Series processor family consists of a number of ready-to-use synthesizable cores and is based on the Xtensa processor architecture. The Diamond Standard 233L processor, for example, contains an MMU and fully supports running Linux. &lt;br /&gt;
&lt;br /&gt;
== Automatic Support for Custom Xtensa Cores ==&lt;br /&gt;
&lt;br /&gt;
Despite the endless possibilities provided by the configurability and extensibility of the Xtensa architecture, obtaining an open source toolchain and kernel that fully support a specific configured Xtensa core is a straightforward matter.  The process is mostly automated (scripted), avoiding any need to manually port the kernel to a new processor variant as is typical for a fixed processor architecture.  Modifications to toolchain and kernel sources are limited to a small set of configuration files, typically provided by Tensilica in the form of an &#039;&#039;overlay&#039;&#039; to be copied into the sources.  The development tools and kernel are subsequently configured and built as usual.  (Of course, you still have to port Linux to your particular board or platform.)&lt;br /&gt;
&lt;br /&gt;
== Kernel and Processor Configuration ==&lt;br /&gt;
&lt;br /&gt;
Because the kernel is much closer to the hardware and provides an abstraction for many architectural options, it needs to be configured and compiled for a particular platform and processor configuration. It also requires development tools configured for the particular processor.  Note that a &#039;&#039;processor configuration&#039;&#039; is also often referred to as a &#039;&#039;core variant&#039;&#039; in Linux.  The following list shows processor configurations already included in the kernel, but adding a new configuration is a very simple and straight forward process.&lt;br /&gt;
&lt;br /&gt;
* Diamond 232L&lt;br /&gt;
* Diamond 233L&lt;br /&gt;
* Stretch S6000 (without MMU)&lt;br /&gt;
* &#039;FSF&#039; default configuration (only for tool verification)&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Crosstool-NG&amp;diff=709</id>
		<title>Crosstool-NG</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Crosstool-NG&amp;diff=709"/>
		<updated>2013-11-11T06:33:42Z</updated>

		<summary type="html">&lt;p&gt;Chris: /* Building a &amp;#039;glibc&amp;#039; based toolchain (experimental) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Crosstool-NG provides a system to build a complete toolchain. It supports various C-libraries (newlib, uClibc, glibc, and eglibc), but can also be used to build a toolchain without a C-library. The following paragraphs describe the steps to build a toolchain tailored for an Xtensa configuration. &lt;br /&gt;
&lt;br /&gt;
== Configure and build Crosstool-NG ==&lt;br /&gt;
&lt;br /&gt;
The mainline repository for crosstool-NG does not yet include support for Xtensa, so you need to clone the repository from linux-xtensa.org:&lt;br /&gt;
&lt;br /&gt;
 git clone git@github.com:foss-xtensa/crosstool-NG.git&lt;br /&gt;
&lt;br /&gt;
=== Build ct-ng ===&lt;br /&gt;
&lt;br /&gt;
ct-ng is similar to the command &#039;make&#039; for other projects, and is used to configure and build the toolchain. Since we cloned it from the repository, it is not yet preconfigured with &#039;autoconf&#039;, so run autoconf first:&lt;br /&gt;
&lt;br /&gt;
 autoconf&lt;br /&gt;
&lt;br /&gt;
The next step is to configure ct-ng for your system. The default installation path is /usr/local/ but can be overwritten with the --prefix option. In this example, we install it in the current directory. Note that the prefix option requires an absolute path, so we use $PWD in this example:&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=$PWD/usr&lt;br /&gt;
&lt;br /&gt;
Finally, run &#039;make install&#039; to build ct-ng and install it:&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
== Building a &#039;bare&#039; toolchain without a C-library ==&lt;br /&gt;
&lt;br /&gt;
=== Configure the toolchain ===&lt;br /&gt;
&lt;br /&gt;
The first step is to configure the toolchain:&lt;br /&gt;
&lt;br /&gt;
 ./ct-ng menuconfig&lt;br /&gt;
&lt;br /&gt;
Make the following changes (---&amp;gt; means to enter the sub-menu). We are assuming that the overlay tar image (OVERLAY_TARFILE) has been copied to ABSOLUTE_PATH_TO_OVERLAY. More information about the overlay file can be found [[Create Overlay|here]]. Note that the processor configuration name is currently not used.&lt;br /&gt;
 &lt;br /&gt;
 Target options  ---&amp;gt;                                         &lt;br /&gt;
 Target Architecture (xtensa) &lt;br /&gt;
 Target Architecture Variant (Custom Xtensa processor configuration)&lt;br /&gt;
 (PROCESSOR_NAME) Custom Xtensa process configuration name&lt;br /&gt;
 (OVERLAY_TARFILE) Custom Xtensa overlay file name&lt;br /&gt;
 (ABSOLUTE_PATH_TO_OVERLAY) Full path to custom Xtensa processor configurations  &lt;br /&gt;
 &lt;br /&gt;
 C-library  ---&amp;gt;                                              &lt;br /&gt;
 C library (none)&lt;br /&gt;
&lt;br /&gt;
The default directory for the created toolchain is $HOME/x-tools, but can be configured under &#039;Paths and misc options&#039;:&lt;br /&gt;
&lt;br /&gt;
 Paths and misc options  ---&amp;gt;&lt;br /&gt;
 (${HOME}/x-tools/${CT_TARGET}) Prefix directory&lt;br /&gt;
&lt;br /&gt;
=== Build and install the toolchain ===&lt;br /&gt;
&lt;br /&gt;
Finally, build and install the toolchain. &lt;br /&gt;
&lt;br /&gt;
 ./ct-ng build&lt;br /&gt;
&lt;br /&gt;
=== Test it ===&lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$HOME/x-tools/xtensa-unknown-linux-gnu/bin&lt;br /&gt;
 xtensa-unknown-linux-gnu-gcc t.c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building a &#039;glibc&#039; based toolchain &#039;&#039;(experimental)&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
NOTE THAT THE REPOSITORY IS CURRENTLY NOT AVAILABLE.&lt;br /&gt;
&lt;br /&gt;
The glibc port is experimental at the moment and also not part of the main repository yet. A version for Xtensa can be found on linux-xtensa.org, so you can clone it from there:&lt;br /&gt;
&lt;br /&gt;
 git clone git://.../git/glibc&lt;br /&gt;
&lt;br /&gt;
=== Configure the toolchain ===&lt;br /&gt;
&lt;br /&gt;
Similar to the &#039;bare&#039; version above, the first step is to configure crosstool-NG. Simply run&lt;br /&gt;
&lt;br /&gt;
 ./ct-ng menuconfig&lt;br /&gt;
&lt;br /&gt;
and make the following changes (---&amp;gt; means to enter the sub-menu). We are assuming that the overlay file ([[Create Overlay]]) has been copied to ABSOLUTE_PATH_TO_OVERLAY/CPUNAME.tar.gz.&lt;br /&gt;
&lt;br /&gt;
 Paths and misc options ---&amp;gt;&lt;br /&gt;
 [*] Try features marked as EXPERIMENTAL&lt;br /&gt;
&lt;br /&gt;
 Target options  ---&amp;gt;                                         &lt;br /&gt;
 Target Architecture (xtensa) &lt;br /&gt;
 Target Architecture Variant (Custom Xtensa processor configuration)&lt;br /&gt;
 (PROCESSOR_NAME) Custom Xtensa process configuration name&lt;br /&gt;
 (OVERLAY_TARFILE) Custom Xtensa overlay file name&lt;br /&gt;
 (ABSOLUTE_PATH_TO_OVERLAY) Full path to custom Xtensa processor configurations  &lt;br /&gt;
 &lt;br /&gt;
 C-library  ---&amp;gt;                                              &lt;br /&gt;
 C library (glibc)&lt;br /&gt;
 glibc version (Custom glibc)&lt;br /&gt;
 (ABSOLUTE_PATH_TO_glibc-2.17) Full path to custom glibc source&lt;br /&gt;
 (ports) Extra addons&lt;br /&gt;
&lt;br /&gt;
=== Build and install the toolchain ===&lt;br /&gt;
&lt;br /&gt;
Finally, build and install the toolchain.&lt;br /&gt;
&lt;br /&gt;
 ./ct-ng build&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Crosstool-NG&amp;diff=708</id>
		<title>Crosstool-NG</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Crosstool-NG&amp;diff=708"/>
		<updated>2013-11-11T06:24:26Z</updated>

		<summary type="html">&lt;p&gt;Chris: /* Configure and build Crosstool-NG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
Crosstool-NG provides a system to build a complete toolchain. It supports various C-libraries (newlib, uClibc, glibc, and eglibc), but can also be used to build a toolchain without a C-library. The following paragraphs describe the steps to build a toolchain tailored for an Xtensa configuration. &lt;br /&gt;
&lt;br /&gt;
== Configure and build Crosstool-NG ==&lt;br /&gt;
&lt;br /&gt;
The mainline repository for crosstool-NG does not yet include support for Xtensa, so you need to clone the repository from linux-xtensa.org:&lt;br /&gt;
&lt;br /&gt;
 git clone git@github.com:foss-xtensa/crosstool-NG.git&lt;br /&gt;
&lt;br /&gt;
=== Build ct-ng ===&lt;br /&gt;
&lt;br /&gt;
ct-ng is similar to the command &#039;make&#039; for other projects, and is used to configure and build the toolchain. Since we cloned it from the repository, it is not yet preconfigured with &#039;autoconf&#039;, so run autoconf first:&lt;br /&gt;
&lt;br /&gt;
 autoconf&lt;br /&gt;
&lt;br /&gt;
The next step is to configure ct-ng for your system. The default installation path is /usr/local/ but can be overwritten with the --prefix option. In this example, we install it in the current directory. Note that the prefix option requires an absolute path, so we use $PWD in this example:&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=$PWD/usr&lt;br /&gt;
&lt;br /&gt;
Finally, run &#039;make install&#039; to build ct-ng and install it:&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
== Building a &#039;bare&#039; toolchain without a C-library ==&lt;br /&gt;
&lt;br /&gt;
=== Configure the toolchain ===&lt;br /&gt;
&lt;br /&gt;
The first step is to configure the toolchain:&lt;br /&gt;
&lt;br /&gt;
 ./ct-ng menuconfig&lt;br /&gt;
&lt;br /&gt;
Make the following changes (---&amp;gt; means to enter the sub-menu). We are assuming that the overlay tar image (OVERLAY_TARFILE) has been copied to ABSOLUTE_PATH_TO_OVERLAY. More information about the overlay file can be found [[Create Overlay|here]]. Note that the processor configuration name is currently not used.&lt;br /&gt;
 &lt;br /&gt;
 Target options  ---&amp;gt;                                         &lt;br /&gt;
 Target Architecture (xtensa) &lt;br /&gt;
 Target Architecture Variant (Custom Xtensa processor configuration)&lt;br /&gt;
 (PROCESSOR_NAME) Custom Xtensa process configuration name&lt;br /&gt;
 (OVERLAY_TARFILE) Custom Xtensa overlay file name&lt;br /&gt;
 (ABSOLUTE_PATH_TO_OVERLAY) Full path to custom Xtensa processor configurations  &lt;br /&gt;
 &lt;br /&gt;
 C-library  ---&amp;gt;                                              &lt;br /&gt;
 C library (none)&lt;br /&gt;
&lt;br /&gt;
The default directory for the created toolchain is $HOME/x-tools, but can be configured under &#039;Paths and misc options&#039;:&lt;br /&gt;
&lt;br /&gt;
 Paths and misc options  ---&amp;gt;&lt;br /&gt;
 (${HOME}/x-tools/${CT_TARGET}) Prefix directory&lt;br /&gt;
&lt;br /&gt;
=== Build and install the toolchain ===&lt;br /&gt;
&lt;br /&gt;
Finally, build and install the toolchain. &lt;br /&gt;
&lt;br /&gt;
 ./ct-ng build&lt;br /&gt;
&lt;br /&gt;
=== Test it ===&lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$HOME/x-tools/xtensa-unknown-linux-gnu/bin&lt;br /&gt;
 xtensa-unknown-linux-gnu-gcc t.c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Building a &#039;glibc&#039; based toolchain &#039;&#039;(experimental)&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
The glibc port is experimental at the moment and also not part of the main repository yet. A version for Xtensa can be found on linux-xtensa.org, so you can clone it from there:&lt;br /&gt;
&lt;br /&gt;
 git clone git://linux-xtensa.org/git/glibc&lt;br /&gt;
&lt;br /&gt;
=== Configure the toolchain ===&lt;br /&gt;
&lt;br /&gt;
Similar to the &#039;bare&#039; version above, the first step is to configure crosstool-NG. Simply run&lt;br /&gt;
&lt;br /&gt;
 ./ct-ng menuconfig&lt;br /&gt;
&lt;br /&gt;
and make the following changes (---&amp;gt; means to enter the sub-menu). We are assuming that the overlay file ([[Create Overlay]]) has been copied to ABSOLUTE_PATH_TO_OVERLAY/CPUNAME.tar.gz.&lt;br /&gt;
&lt;br /&gt;
 Paths and misc options ---&amp;gt;&lt;br /&gt;
 [*] Try features marked as EXPERIMENTAL&lt;br /&gt;
&lt;br /&gt;
 Target options  ---&amp;gt;                                         &lt;br /&gt;
 Target Architecture (xtensa) &lt;br /&gt;
 Target Architecture Variant (Custom Xtensa processor configuration)&lt;br /&gt;
 (PROCESSOR_NAME) Custom Xtensa process configuration name&lt;br /&gt;
 (OVERLAY_TARFILE) Custom Xtensa overlay file name&lt;br /&gt;
 (ABSOLUTE_PATH_TO_OVERLAY) Full path to custom Xtensa processor configurations  &lt;br /&gt;
 &lt;br /&gt;
 C-library  ---&amp;gt;                                              &lt;br /&gt;
 C library (glibc)&lt;br /&gt;
 glibc version (Custom glibc)&lt;br /&gt;
 (ABSOLUTE_PATH_TO_glibc-2.17) Full path to custom glibc source&lt;br /&gt;
 (ports) Extra addons&lt;br /&gt;
&lt;br /&gt;
=== Build and install the toolchain ===&lt;br /&gt;
&lt;br /&gt;
Finally, build and install the toolchain.&lt;br /&gt;
&lt;br /&gt;
 ./ct-ng build&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Toolchain_Overlay_File&amp;diff=707</id>
		<title>Toolchain Overlay File</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Toolchain_Overlay_File&amp;diff=707"/>
		<updated>2013-11-11T05:58:38Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;Overlay&#039;&#039; is a tar file that includes modified versions of processor configuration dependent files that are required by various toolchain tools, such as binutils, gcc, and gdb. The overlay described here has a specific layout and is intended for toolchain generators, such as buildroot or crosstool-NG. &lt;br /&gt;
&lt;br /&gt;
== Creating the overlay ==&lt;br /&gt;
&lt;br /&gt;
The overlay file shipped by Tensilica uses a flat directory structure, which is not suitable for buildroot or crosstool-NG at the moment. It is part of the generated processor package, and can be found in the XtDevTools directory:&lt;br /&gt;
&lt;br /&gt;
 XtDevTools/install/build/$VERSION/$XTENSA_CORE/src/xtensa-config-overlay.tar.gz&lt;br /&gt;
&lt;br /&gt;
The following script converts the directory structure of that file by creating a new overlay file, called xtensa-overlay.tgz, and extracting the necessary files from the Tensilica overlay. Simply provide the path and name of the overlay provided by Tensilica when running the script:&lt;br /&gt;
&lt;br /&gt;
 ./script xtensa-config-overlay.tar.gz&lt;br /&gt;
&lt;br /&gt;
This will create the file xtensa-overlay.tgz required by buildroot or crosstool-NG. For more information how to configure those generators, please see [[Buildroot]] or [[crosstool-NG]].&lt;br /&gt;
&lt;br /&gt;
(Note that there is also a similar file under .../$XTENSA_CORE/xtensa-elf/src/linux/misc/linux-overlay.tar.gz. This file has a different layout structure and doesn&#039;t work with the script below)&lt;br /&gt;
&lt;br /&gt;
== Conversion Script ==&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 TMPDIR=`mktemp -d`&lt;br /&gt;
 tar xzf $1 -C $TMPDIR&lt;br /&gt;
 mkdir -p $TMPDIR/overlay/binutils/bfd $TMPDIR/overlay/binutils/ld \&lt;br /&gt;
          $TMPDIR/overlay/binutils/include $TMPDIR/overlay/gcc/include \&lt;br /&gt;
          $TMPDIR/overlay/gdb/bfd $TMPDIR/overlay/gdb/gdb/regformats \&lt;br /&gt;
          $TMPDIR/overlay/gdb/gdb/gdbserver $TMPDIR/overlay/gdb/include&lt;br /&gt;
 mv $TMPDIR/binutils/xtensa-config.h $TMPDIR/overlay/binutils/include&lt;br /&gt;
 mv $TMPDIR/binutils/xtensa-modules.c $TMPDIR/overlay/binutils/bfd&lt;br /&gt;
 mv $TMPDIR/gcc/xtensa-config.h $TMPDIR/overlay/gcc/include&lt;br /&gt;
 mv $TMPDIR/gdb/xtensa-config.c $TMPDIR/overlay/gdb/gdb&lt;br /&gt;
 mv $TMPDIR/gdb/xtensa-config.h $TMPDIR/overlay/gdb/include&lt;br /&gt;
 mv $TMPDIR/gdb/xtensa-modules.c $TMPDIR/overlay/gdb/bfd&lt;br /&gt;
 mv $TMPDIR/gdb/xtensa-xtregs.c $TMPDIR/overlay/gdb/gdb/gdbserver&lt;br /&gt;
 mv $TMPDIR/gdb/reg-xtensa.dat $TMPDIR/overlay/gdb/gdb/regformats&lt;br /&gt;
 tar czf xtensa-overlay.tgz -C $TMPDIR/overlay/ binutils gcc gdb&lt;br /&gt;
 rm -fr $TMPDIR&lt;br /&gt;
&lt;br /&gt;
== Example Files ==&lt;br /&gt;
&lt;br /&gt;
The following files are the original and generated overlay file for the DC_D_233L processor.&lt;br /&gt;
&lt;br /&gt;
* http://www.linux-xtensa.org/pub/xtensa-config-overlay.tar.gz - Original overlay file provided by Tensilica&lt;br /&gt;
* http://www.linux-xtensa.org/pub/xtensa-overlay.tgz - : Generated overlay file, applicable to buildroot and crosstool-NG&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Mailing_Lists&amp;diff=706</id>
		<title>Mailing Lists</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Mailing_Lists&amp;diff=706"/>
		<updated>2013-10-10T20:26:56Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Mailing Lists http://lists.linux-xtensa.org ===&lt;br /&gt;
&lt;br /&gt;
The Linux/Xtensa project currently uses a single mailing for all related topics: &#039;&#039;[http://lists.linux-xtensa.org/mailman/listinfo/linux-xtensa linux-xtensa@linux-xtensa.org]&#039;&#039; [http://lists.linux-xtensa.org/pipermail/linux-xtensa/ (&#039;&#039;Archive&#039;&#039;)] &lt;br /&gt;
&lt;br /&gt;
===Subscribing and Unsubscribing===&lt;br /&gt;
&lt;br /&gt;
Subscriptions are handled through the email interface or web interface of the mailing list software. In case of the email interface, send an email with the command &#039;&#039;subscribe&#039;&#039; if you want to join a mailing list, or &#039;&#039;unsubscribe&#039;&#039; to leave a mailing list to &#039;&#039;listname&#039;&#039;-request@linux-xtensa.org. The command can be in either the subject line or the body of the mail.&lt;br /&gt;
&lt;br /&gt;
* subscribe [&#039;&#039;password&#039;&#039;] [digest] [address=&#039;&#039;address&#039;&#039;]&lt;br /&gt;
*: Subscribe to the mailing list. A &#039;&#039;password&#039;&#039; is required to unsubscribe from the mailing list. If you omit the &#039;&#039;password&#039;&#039;, one will be generated for you. Specifying a &#039;&#039;address&#039;&#039; allows to use a different email address than the sender.&lt;br /&gt;
* unsubscribe [&#039;&#039;password&#039;&#039;] [address=&#039;&#039;address&#039;&#039;]&lt;br /&gt;
*: Unsubscribe from the mailing list. A password is required to unsubscribe from the mailing list. If ommitted, you will receive a confirmation email.&lt;br /&gt;
* help&lt;br /&gt;
*: Receive a copy of the help message including a list of all commands.&lt;br /&gt;
&lt;br /&gt;
The web interface can be reached under http://lists.linux-xtensa.org. Select the mailing list you want to subscribe or unsubscribe, and follow the instructions. &lt;br /&gt;
&lt;br /&gt;
=== Posting ===&lt;br /&gt;
&lt;br /&gt;
You need to subscribe before you can post on the mailing list. To send an an email to all subscribers of a mailing list, send it to &#039;&#039;listname&#039;&#039;@linux-xtensa.org.&lt;br /&gt;
&lt;br /&gt;
Note that the mailing lists are public. By posting messages to any of these three lists, you implicitly agree that the posted messages are in the public domain, and as such may be freely copied, &lt;br /&gt;
archived, duplicated, and sent to other persons. For guidelines about posting, please, read also http://www.ietf.org/rfc/rfc1855.txt.&lt;br /&gt;
&lt;br /&gt;
=== Archive ===&lt;br /&gt;
&lt;br /&gt;
The web interface (http://lists.linux-xtensa.org) provides an archive of the mailing lists.&lt;br /&gt;
&lt;br /&gt;
=== Help ===&lt;br /&gt;
&lt;br /&gt;
In case of any problems, you can send an email to the list owner: &#039;&#039;listname&#039;&#039;-owner@linux-xtensa.org.&lt;br /&gt;
[[Image:Example.jpg]]&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Mailing_Lists&amp;diff=705</id>
		<title>Mailing Lists</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Mailing_Lists&amp;diff=705"/>
		<updated>2013-10-10T20:23:41Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Lists ===&lt;br /&gt;
&lt;br /&gt;
The Linux/Xtensa project currently uses a single mailing for all related topics: &#039;&#039;linux-xtensa@linux-xtensa.org &#039;&#039; [http://lists.linux-xtensa.org/pipermail/linux-xtensa/ (&#039;&#039;Archive&#039;&#039;)] &lt;br /&gt;
&lt;br /&gt;
===Subscribing and Unsubscribing===&lt;br /&gt;
&lt;br /&gt;
Subscriptions are handled through the email interface or web interface of the mailing list software. In case of the email interface, send an email with the command &#039;&#039;subscribe&#039;&#039; if you want to join a mailing list, or &#039;&#039;unsubscribe&#039;&#039; to leave a mailing list to &#039;&#039;listname&#039;&#039;-request@linux-xtensa.org. The command can be in either the subject line or the body of the mail.&lt;br /&gt;
&lt;br /&gt;
* subscribe [&#039;&#039;password&#039;&#039;] [digest] [address=&#039;&#039;address&#039;&#039;]&lt;br /&gt;
*: Subscribe to the mailing list. A &#039;&#039;password&#039;&#039; is required to unsubscribe from the mailing list. If you omit the &#039;&#039;password&#039;&#039;, one will be generated for you. Specifying a &#039;&#039;address&#039;&#039; allows to use a different email address than the sender.&lt;br /&gt;
* unsubscribe [&#039;&#039;password&#039;&#039;] [address=&#039;&#039;address&#039;&#039;]&lt;br /&gt;
*: Unsubscribe from the mailing list. A password is required to unsubscribe from the mailing list. If ommitted, you will receive a confirmation email.&lt;br /&gt;
* help&lt;br /&gt;
*: Receive a copy of the help message including a list of all commands.&lt;br /&gt;
&lt;br /&gt;
The web interface can be reached under http://lists.linux-xtensa.org. Select the mailing list you want to subscribe or unsubscribe, and follow the instructions. &lt;br /&gt;
&lt;br /&gt;
=== Posting ===&lt;br /&gt;
&lt;br /&gt;
You need to subscribe before you can post on the mailing list. To send an an email to all subscribers of a mailing list, send it to &#039;&#039;listname&#039;&#039;@linux-xtensa.org.&lt;br /&gt;
&lt;br /&gt;
Note that the mailing lists are public. By posting messages to any of these three lists, you implicitly agree that the posted messages are in the public domain, and as such may be freely copied, &lt;br /&gt;
archived, duplicated, and sent to other persons. For guidelines about posting, please, read also http://www.ietf.org/rfc/rfc1855.txt.&lt;br /&gt;
&lt;br /&gt;
=== Archive ===&lt;br /&gt;
&lt;br /&gt;
The web interface (http://lists.linux-xtensa.org) provides an archive of the mailing lists.&lt;br /&gt;
&lt;br /&gt;
=== Help ===&lt;br /&gt;
&lt;br /&gt;
In case of any problems, you can send an email to the list owner: &#039;&#039;listname&#039;&#039;-owner@linux-xtensa.org.&lt;br /&gt;
[[Image:Example.jpg]]&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=MediaWiki:Sidebar&amp;diff=704</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=MediaWiki:Sidebar&amp;diff=704"/>
		<updated>2013-10-08T18:46:22Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** portal-url|portal&lt;br /&gt;
** currentevents-url|currentevents&lt;br /&gt;
** [http://lists.linux-xtensa.org Mailing Lists]&lt;br /&gt;
** helppage|help&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=MediaWiki:Sidebar&amp;diff=703</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=MediaWiki:Sidebar&amp;diff=703"/>
		<updated>2013-10-08T18:46:00Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** portal-url|portal&lt;br /&gt;
** currentevents-url|currentevents&lt;br /&gt;
** [[http://lists.linux-xtensa.org Mailing Lists]]&lt;br /&gt;
** helppage|help&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=MediaWiki:Sidebar&amp;diff=702</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=MediaWiki:Sidebar&amp;diff=702"/>
		<updated>2013-10-08T18:44:13Z</updated>

		<summary type="html">&lt;p&gt;Chris: Created page with &amp;quot; * navigation ** mainpage|mainpage-description ** portal-url|portal ** currentevents-url|currentevents ** [http://lists.linux-xtensa.org|Mailing Lists]  ** helppage|help * SEA...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** portal-url|portal&lt;br /&gt;
** currentevents-url|currentevents&lt;br /&gt;
** [http://lists.linux-xtensa.org|Mailing Lists] &lt;br /&gt;
** helppage|help&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Main_Page&amp;diff=701</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Main_Page&amp;diff=701"/>
		<updated>2013-10-01T17:03:50Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
= &amp;lt;big&amp;gt;Welcome to the Linux/Xtensa Wiki&amp;lt;/big&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
This Wiki project provides information for running and porting [http://en.wikipedia.org/wiki/Linux Linux] and other Open Source Software to the [http://www.tensilica.com Xtensa processor architecture].&lt;br /&gt;
&lt;br /&gt;
The Xtensa processor architecture is a configurable, extensible, and synthesizable 32-bit RISC processor core. All Xtensa processors share a common base instruction set architecture, thereby ensuring compatibility of third party application software and development tools. Many architecture specific projects, such as the Linux kernel, GNU toolchain, and other development tools and applications already support the Xtensa architecture. Modifications to support a specific processor configuration are limited to a small set of configuration files, and the process is mostly automated. The pages listed under &#039;&#039;Supporting a processor configuration&#039;&#039; provide information to support a specific configuration.&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:45%;height=100%; background:#ffffff;&amp;quot; valign=top|&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Getting Started&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Supported Processors]]&lt;br /&gt;
* [[Evaluation Platforms|Evaluation Platforms]]&lt;br /&gt;
* [[Instructions for building and booting Linux]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Support&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Mailing Lists]]&lt;br /&gt;
* [[Status of the Xtensa Port]]&lt;br /&gt;
* [[KnownIssues|Known Kernel Issues and Limitations]]&lt;br /&gt;
* [[Supported Processor Configurations]]&lt;br /&gt;
|style=&amp;quot;width:10%;height:100%;background:#ffffff;&amp;quot; |&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;width:45%;height:100%; background:#ffffff;&amp;quot; valign=top|&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Supporting a processor configuration&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Toolchain and Embedded Distributions]]&lt;br /&gt;
* [[Linux Kernel]]&lt;br /&gt;
* [[Boot Loader|Boot Loader]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Developers&#039; Resources&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Platform Porting|Porting the Kernel to a new Platform (Board)]]&lt;br /&gt;
* [[ABI Interface]]&lt;br /&gt;
* [[Xtensa on QEMU]]&lt;br /&gt;
* [[Testing and Verification]]&lt;br /&gt;
&lt;br /&gt;
| colspan=3 |&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;small&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039;  Due to spam, creation of new wiki accounts has been disabled until further notice.&lt;br /&gt;
If you want to get an account, and be able to edit or contribute anything,&lt;br /&gt;
please try sending an email to the&lt;br /&gt;
[http://lists.linux-xtensa.org/mailman/listinfo/linux-xtensa linux-xtensa mailing list]&lt;br /&gt;
identifying yourself and what you want to contribute.&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;/i&amp;gt;&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Main_Page&amp;diff=694</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Main_Page&amp;diff=694"/>
		<updated>2013-07-10T23:26:45Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&lt;br /&gt;
= &amp;lt;big&amp;gt;Welcome to the Linux/Xtensa Wiki&amp;lt;/big&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
This Wiki project provides information for running and porting [http://en.wikipedia.org/wiki/Linux Linux] and other Open Source Software to the [http://www.tensilica.com Xtensa processor architecture].&lt;br /&gt;
&lt;br /&gt;
The Xtensa processor architecture is a configurable, extensible, and synthesizable 32-bit RISC processor core. All Xtensa processors share a common base instruction set architecture, thereby ensuring compatibility of third party application software and development tools. Many architecture specific projects, such as the Linux kernel, GNU toolchain, and other development tools and applications already support the Xtensa architecture. Modifications to support a specific processor configuration are limited to a small set of configuration files, and the process is mostly automated. The pages listed under &#039;&#039;Supporting a processor configuration&#039;&#039; provide information to support a specific configuration.&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:45%;height=100%; background:#ffffff;&amp;quot; valign=top|&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Getting Started&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Supported Processors]]&lt;br /&gt;
* [[Evaluation Platforms|Evaluation Platforms]]&lt;br /&gt;
* [[Instructions for building and booting Linux]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Support&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Mailing Lists]]&lt;br /&gt;
* [[Status of the Xtensa Port]]&lt;br /&gt;
* [[KnownIssues|Known Kernel Issues and Limitations]]&lt;br /&gt;
* [[Supported Processor Configurations]]&lt;br /&gt;
|style=&amp;quot;width:10%;height:100%;background:#ffffff;&amp;quot; |&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;width:45%;height:100%; background:#ffffff;&amp;quot; valign=top|&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Supporting a processor configuration&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Toolchain and Embedded Distributions]]&lt;br /&gt;
* [[Linux Kernel]]&lt;br /&gt;
* [[Boot Loader|Boot Loader]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Developers&#039; Resources&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Platform Porting|Porting the Kernel to a new Platform (Board)]]&lt;br /&gt;
* [[ABI Interface]]&lt;br /&gt;
* [[Xtensa on QEMU]]&lt;br /&gt;
* [[Testing and Verification]]&lt;br /&gt;
&lt;br /&gt;
| colspan=3 |&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;small&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039;  Due to spam, creation of new wiki accounts has been disabled until further notice.&lt;br /&gt;
If you want to get an account, and be able to edit or contribute anything,&lt;br /&gt;
please try sending an email to the&lt;br /&gt;
[http://lists.linux-xtensa.org/mailman/listinfo/linux-xtensa linux-xtensa mailing list]&lt;br /&gt;
identifying yourself and what you want to contribute.&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;/i&amp;gt;&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Linux/Xtensa:About&amp;diff=692</id>
		<title>Linux/Xtensa:About</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Linux/Xtensa:About&amp;diff=692"/>
		<updated>2013-06-27T23:56:46Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Wiki is the primary resource for the community of developers and users of the Linux operating system on Xtensa processors. The Xtensa processor architecture is a configurable, extensible, and synthesizable 32-bit RISC processor core. Processor and SOC vendors can select from various processor options and even create customized instructions in addition to a base ISA to tailor the processor for a particular application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disclaimer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The information or software, including but not limited to the scripts, tools, and utilities contained on this project pages are presented without warranty of any kind, expressed or implied. Users must take full responsibility for the use of information or software contained herein. &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Linux&amp;amp;reg;&#039;&#039;&#039; is the registered trademark of Linus Torvalds in the U.S. and other countries. &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Xtensa&amp;amp;reg;&#039;&#039;&#039; is the registered trademark of Tensilica, Inc.&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Linux/Xtensa:About&amp;diff=691</id>
		<title>Linux/Xtensa:About</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Linux/Xtensa:About&amp;diff=691"/>
		<updated>2013-06-27T23:56:38Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Wiki is the primary resource for the community of developers and users of the Linux operating system on Xtensa processors. The Xtensa processor architecture is a configurable, extensible, and synthesizable 32-bit RISC processor core. Processor and SOC vendors can select from various processor options and even create customized instructions in addition to a base ISA to tailor the processor for a particular application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disclaimer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The information or software, including but not limited to the scripts, tools, and utilities contained on this project pages are presented without warranty of any kind, expressed or implied. Users must take full responsibility for the use of information or software contained herein. &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Linux&amp;amp;reg;&#039;&#039;&#039; is the registered trademark of Linus Torvalds in the U.S. and other countries. &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Xtensa&#039;&#039;&#039; is the registered trademark of Tensilica, Inc.&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=U-Boot&amp;diff=690</id>
		<title>U-Boot</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=U-Boot&amp;diff=690"/>
		<updated>2013-06-14T21:14:40Z</updated>

		<summary type="html">&lt;p&gt;Chris: New page: Under Construction - This page will describe the steps required to support a Xtensa processor configuration in U-Boot.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Under Construction - This page will describe the steps required to support a Xtensa processor configuration in U-Boot.&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Boot_Loader&amp;diff=689</id>
		<title>Boot Loader</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Boot_Loader&amp;diff=689"/>
		<updated>2013-06-14T21:13:27Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Boot Loaders ==&lt;br /&gt;
&lt;br /&gt;
The [http://en.wikipedia.org/wiki/Bootloader bootstrap loader or boot loader] is a small program running on a computer or device after power-on to load the operating system. Most boot loaders today provide additional features that allow to upgrade the firmware and access the system for troubleshooting.&lt;br /&gt;
&lt;br /&gt;
== U-Boot &amp;lt;small&amp;gt;([[U-Boot|build instructions for Xtensa]])&amp;lt;/small&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
U-Boot is one of the most popular boot loaders for Linux. It has a very complete [http://www.denx.de/wiki/U-Boot Project Page] as well as an nice introduction available [http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Introduction-to-Das-UBoot-the-universal-open-source-bootloader/ here]. A very complete U-Boot manual is also available [http://www.denx.de/wiki/DULG/Manual here].&lt;br /&gt;
&lt;br /&gt;
A development tree for supporting Xtensa in the latest version of U-Boot has been set up [http://git.linux-xtensa.org/cgi-bin/git.cgi?p=dev/u-boot.git;a=summary here]&lt;br /&gt;
&lt;br /&gt;
An older port to the Xtensa architecture is also available for the LX60 and LX200 FPGA development boards in the git repository [http://git.linux-xtensa.org/cgi-bin/git.cgi?p=discont/u-boot-xtensa.git;a=summary here] with instructions for [[Setting up U-Boot]] for the LX60 or LX200 FPGA development boards. &lt;br /&gt;
&lt;br /&gt;
== RedBoot ==&lt;br /&gt;
&lt;br /&gt;
Tensilica has also ported [http://sourceware.org/redboot/ RedBoot] for the Xtensa architecture. A RedBoot binary targeting the XTAV60 (LX60) or XTAV200 (LX200) emulation board is usually provided after generating an FPGA bitstream for one of these boards.  See the relevant board documentation from Tensilica for more details such as usage and supported features.  For more information and to request sources, please contact [http://www.tensilica.com/ Tensilica] directly.  For an example of how to boot the Linux kernel using RedBoot on the LX60 or LX200 boards, see [[RedBoot Example]].&lt;br /&gt;
&lt;br /&gt;
A source tarball for RedBoot with support for the Xtensa architecture is available [http://linux-xtensa.org/pub/redboot/redboot1.3.1-RB2007.2.tgz here].  For more details, see the tarball&#039;s [http://linux-xtensa.org/pub/redboot/redboot1.3.1-RB2007.2/README.txt README.txt] file.&lt;br /&gt;
&lt;br /&gt;
== Host-Side Loading via OCD ==&lt;br /&gt;
&lt;br /&gt;
An alternative to boot loaders is an external (e.g. &#039;&#039;&amp;quot;host-side&amp;quot;&#039;&#039;) loading mechanism.&lt;br /&gt;
&lt;br /&gt;
One common way to load a Linux kernel is to use debugging interfaces such as On-Chip Debug (OCD).  For example, Tensilica Tools GDB (xt-gdb) can connect to a target Xtensa processor using OCD via the Xtensa OCD Daemon.  It can then load and execute a Linux RAM image (Image.elf or vmlinux) onto the target using standard GDB commands.  See [[Buildroot_Build_Instructions#Download_and_run_the_kernel|Download and Run the Kernel]] for an example.&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Self-Boot Image ==&lt;br /&gt;
&lt;br /&gt;
It is possible to adapt the kernel build scripts for the Xtensa architecture to create a self-booting image. That is, a Linux kernel image that includes a Reset handler and can be either burned in ROM or Flash or downloaded to the target using another mechanism such as OCD.  &#039;&#039;&#039;&#039;&#039;Note:  This has not yet been implemented.&#039;&#039;&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Main_Page&amp;diff=688</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Main_Page&amp;diff=688"/>
		<updated>2013-04-18T21:14:20Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&lt;br /&gt;
= &amp;lt;big&amp;gt;Welcome to the Linux/Xtensa Wiki&amp;lt;/big&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
This Wiki project provides information about support for the [http://www.tensilica.com Xtensa processor architecture] in [http://en.wikipedia.org/wiki/Linux Linux] and other Open Source Software.&lt;br /&gt;
&lt;br /&gt;
The Xtensa processor architecture is a configurable, extensible, and synthesizable 32-bit RISC processor core. All Xtensa processors share a common base instruction set architecture, thereby ensuring compatibility of third party application software and development tools. Many architecture specific projects, such as the Linux kernel, GNU toolchain, and other development tools and applications already support the Xtensa architecture. Modifications to support a specific processor configuration are limited to a small set of configuration files, and the process is mostly automated. The pages listed under &#039;&#039;Supporting a processor configuration&#039;&#039; provide information to support a specific configuration.&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:45%;height=100%; background:#ffffff;&amp;quot; valign=top|&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Getting Started&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Supported Processors]]&lt;br /&gt;
* [[Evaluation Platforms|Evaluation Platforms]]&lt;br /&gt;
* [[Instructions for building and booting Linux]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Support&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Mailing Lists]]&lt;br /&gt;
* [[Status of the Xtensa Port]]&lt;br /&gt;
* [[KnownIssues|Known Kernel Issues and Limitations]]&lt;br /&gt;
* [[Supported Processor Configurations]]&lt;br /&gt;
|style=&amp;quot;width:10%;height:100%;background:#ffffff;&amp;quot; |&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;width:45%;height:100%; background:#ffffff;&amp;quot; valign=top|&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Supporting a processor configuration&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Toolchain and Embedded Distributions]]&lt;br /&gt;
* [[Linux Kernel]]&lt;br /&gt;
* [[Boot Loader|Boot Loader]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Developers&#039; Resources&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Platform Porting|Porting the Kernel to a new Platform (Board)]]&lt;br /&gt;
* [[ABI Interface]]&lt;br /&gt;
* [[Xtensa on QEMU]]&lt;br /&gt;
* [[Testing and Verification]]&lt;br /&gt;
&lt;br /&gt;
| colspan=3 |&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;small&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039;  Due to spam, creation of new wiki accounts has been disabled until further notice.&lt;br /&gt;
If you want to get an account, and be able to edit or contribute anything,&lt;br /&gt;
please try sending an email to the&lt;br /&gt;
[http://lists.linux-xtensa.org/mailman/listinfo/linux-xtensa linux-xtensa mailing list]&lt;br /&gt;
identifying yourself and what you want to contribute.&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;/i&amp;gt;&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Software_Running_on_Xtensa&amp;diff=687</id>
		<title>Software Running on Xtensa</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Software_Running_on_Xtensa&amp;diff=687"/>
		<updated>2013-04-18T21:13:53Z</updated>

		<summary type="html">&lt;p&gt;Chris: Software Running on Xtensa moved to Status of the Xtensa Port&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Status of the Xtensa Port]]&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Status_of_the_Xtensa_Port&amp;diff=686</id>
		<title>Status of the Xtensa Port</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Status_of_the_Xtensa_Port&amp;diff=686"/>
		<updated>2013-04-18T21:13:53Z</updated>

		<summary type="html">&lt;p&gt;Chris: Software Running on Xtensa moved to Status of the Xtensa Port&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides additional information for software support for the Xtensa architecture. While most applications are written architecture independent, development tools and operating systems must be ported to a new processor architecture. Support for the Xtensa architecture has already been integrated in most Open Source software projects. Development trees that feed to the respective mainline repository and for new development can be found in local [http://git.linux-xtensa.org GIT] repositories. &lt;br /&gt;
&lt;br /&gt;
=== Toolchain: Compiler (GCC) and various binary utilities (binutils) ===&lt;br /&gt;
&lt;br /&gt;
All GNU toolchain tools are maintained in OpenSource and can be downloaded from the respective locations.&lt;br /&gt;
* Binutils: http://www.gnu.org/software/binutils/&lt;br /&gt;
* GCC: http://gcc.gnu.org/&lt;br /&gt;
&lt;br /&gt;
Additional information to patch these sources for a specific Xtensa processor configuration can be found under [[Toolchain and Embedded Distributions]].&lt;br /&gt;
&lt;br /&gt;
=== C-Libraries: GlibC and uClibc ===&lt;br /&gt;
&lt;br /&gt;
Xtensa has long been part of uClibc, however, there are a lot of bug fixes pending for the next release (0.9.33.3). Support for the Native Posix Thread Library (NTPL) is under development and is expected to be part of the following release. Development for Glibc with NPTL (older thread libraries are not supported by Glibc anymore) is also current under way. A development tree can be found in the local [http://git.linux-xtensa.org GIT] repositories.&lt;br /&gt;
* uClibc: http://www.uclibc.org/&lt;br /&gt;
* GlibC: http://www.gnu.org/software/libc/&lt;br /&gt;
&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
&lt;br /&gt;
GDB is maintained in OpenSource and support for Xtensa in other debugging tools was maintained as patches in local buildroot repositories, and are currently updated and pushed to the respective main repositories.&lt;br /&gt;
* GDB: http://www.gnu.org/software/gdb/&lt;br /&gt;
* strace: http://sourceforge.net/projects/strace/&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
&lt;br /&gt;
Xtensa has been part of the official Linux kernel tree since 2.6.13, however, a lot of patches were maintained in a local stable tree for a long time, and are currently ported to the latest kernel tree. Features, such as large memory support and cache aliasing should be expected to hit the kernel in the 3.10/3.11 time frame. The latest version can be found at https://www.kernel.org/.&lt;br /&gt;
&lt;br /&gt;
=== Toolchain creation tools and embedded distributions (crosstool-NG, buildroot, etc) ===&lt;br /&gt;
&lt;br /&gt;
Xtensa is supported by buildroot, which can be downloaded from http://www.buildroot.net. Support for crosstool-NG has not been pushed into the official tree yet. A version can be downloaded from local [http://git.linux-xtensa.org GIT] repositories. Additional information to configure these tools for a specific Xtensa processor configuration can be found under [[Toolchain and Embedded Distributions]].&lt;br /&gt;
* Buildroot: http://www.buildroot.net&lt;br /&gt;
* Crosstool-NG: http://crosstool-ng.org/&lt;br /&gt;
&lt;br /&gt;
=== Other Projects ===&lt;br /&gt;
&lt;br /&gt;
The following list are additional projects that are architecture specific, or that have architecture specific components with additional information how to compile them for Xtensa.&lt;br /&gt;
&lt;br /&gt;
* [[LibFFI]] - LibFFI is a library that provides an interface to execute low-level functions. It is mostly used by scripting or higher-level languages, such as Python, Dalvik, etc.&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=U-Boot_Porting&amp;diff=685</id>
		<title>U-Boot Porting</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=U-Boot_Porting&amp;diff=685"/>
		<updated>2013-04-05T23:06:22Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WORK IN PROGRESS&lt;br /&gt;
&lt;br /&gt;
== Adding a new Platform (Board) ==&lt;br /&gt;
&lt;br /&gt;
# add a line for the name of board and cpu to $UBOOT/boards.cfg&lt;br /&gt;
# create a configuration file for the board&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Edit boards.cfg ===&lt;br /&gt;
&lt;br /&gt;
Add a line to the bottom of the boards.cfg file describing the new board and processor.&lt;br /&gt;
* BOARD-NAME: Name of the board. This name is usually also used for the target name.&lt;br /&gt;
* CPU-NAME: Name of the processor (Xtensa configuration); must match the directory name cpu-CPU-NAME.&lt;br /&gt;
* VENDOR-NAME:&lt;br /&gt;
&lt;br /&gt;
 BOARD-NAME                  CPU-NAME    xtensa      BOARD-NAME          VENDOR-NAME&lt;br /&gt;
 #Target                     ARCH        CPU         Board name          Vendor         SoC         Options&lt;br /&gt;
&lt;br /&gt;
=== Create a configuration file for the board ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; include/configs/ &amp;lt;code&amp;gt; directory, which is typically named after the board: &amp;lt;code&amp;gt; &#039;&#039;&amp;lt;board&amp;gt;&#039;&#039;.h &amp;lt;/code&amp;gt;. This file contains various board-specific macro definitions, such as FLASH location, device registers, etc.&lt;br /&gt;
&lt;br /&gt;
You should include &#039;&#039;addrspace.h&#039;&#039; from the Xtensa include directory. This file provides macros to &lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;asm/addrspace.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OLD INFORMATION ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to add new platform to U-Boot is usually to start from a similar board and modify the files as needed. The first step is to add the board to the main &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt; in the root directory. &lt;br /&gt;
&lt;br /&gt;
Unlike other architectures, the processor configurations (&#039;&#039;variants&#039;&#039;) are defined inside the Xtensa include directory. &lt;br /&gt;
&lt;br /&gt;
The following version allows for arbitrary Xtensa processor configuration. Instead of &amp;lt;code&amp;gt; make &#039;&#039;&amp;lt;board&amp;gt;&#039;&#039;_config &amp;lt;/code&amp;gt;, it requires an additional name to specify the &#039;&#039;&amp;lt;variant&amp;gt;&#039;&#039;. This is the name of the processor configuration. The configuration &amp;lt;code&amp;gt; make &#039;&#039;variant&#039;&#039;_&#039;&#039;board&#039;&#039;_config &amp;lt;/code&amp;gt;, for example, the following command will configure U-Boot for the xtav60 board with a dc232l processor configuration: &amp;lt;code&amp;gt;make dc232l_xtav60_config&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
 %&#039;&#039;&amp;lt;board&amp;gt;&#039;&#039;_config: unconfig&lt;br /&gt;
        @$(MKCONFIG) xtensa xtensa xtav60 avnet NULL $(*:_=)&lt;br /&gt;
        @echo &amp;quot;VARIANT = $(*:_=)&amp;quot; &amp;gt;&amp;gt; $(obj)include/config.mk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;board&amp;gt;&#039;&#039;_config: unconfig&lt;br /&gt;
        @$(MKCONFIG) xtensa xtensa &#039;&#039;&amp;lt;board&amp;gt;&#039;&#039; &#039;&#039;&amp;lt;vendor&amp;gt;&#039;&#039; NULL &#039;&#039;variant&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All board specific files are concentrated in one directory (the &#039;&#039;&amp;lt;vendor&amp;gt;&#039;&#039; sub-directory is optional):&lt;br /&gt;
&lt;br /&gt;
 board/[&#039;&#039;&amp;lt;vendor&amp;gt;]&#039;&#039;/&#039;&#039;&amp;lt;board&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This directory typically contains a README file describing the board and features, files for the build system (&amp;lt;code&amp;gt; Makefile &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt; config.mk &amp;lt;/code&amp;gt;), and one or more source files to initialize the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is one additional configuration file in the &amp;lt;code&amp;gt; include/configs/ &amp;lt;code&amp;gt; directory, which is typically named after the board: &amp;lt;code&amp;gt; &#039;&#039;&amp;lt;board&amp;gt;&#039;&#039;.h &amp;lt;/code&amp;gt;. This file contains various board-specific macro definitions, such as FLASH location, device registers, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You should include &#039;&#039;addrspace.h&#039;&#039; from the Xtensa include directory. This file provides macros to &lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;asm/addrspace.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding a new Processor Configuration ==&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Status_of_the_Xtensa_Port&amp;diff=684</id>
		<title>Status of the Xtensa Port</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Status_of_the_Xtensa_Port&amp;diff=684"/>
		<updated>2013-03-27T16:26:13Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides additional information for software support for the Xtensa architecture. While most applications are written architecture independent, development tools and operating systems must be ported to a new processor architecture. Support for the Xtensa architecture has already been integrated in most Open Source software projects. Development trees that feed to the respective mainline repository and for new development can be found in local [http://git.linux-xtensa.org GIT] repositories. &lt;br /&gt;
&lt;br /&gt;
=== Toolchain: Compiler (GCC) and various binary utilities (binutils) ===&lt;br /&gt;
&lt;br /&gt;
All GNU toolchain tools are maintained in OpenSource and can be downloaded from the respective locations.&lt;br /&gt;
* Binutils: http://www.gnu.org/software/binutils/&lt;br /&gt;
* GCC: http://gcc.gnu.org/&lt;br /&gt;
&lt;br /&gt;
Additional information to patch these sources for a specific Xtensa processor configuration can be found under [[Toolchain and Embedded Distributions]].&lt;br /&gt;
&lt;br /&gt;
=== C-Libraries: GlibC and uClibc ===&lt;br /&gt;
&lt;br /&gt;
Xtensa has long been part of uClibc, however, there are a lot of bug fixes pending for the next release (0.9.33.3). Support for the Native Posix Thread Library (NTPL) is under development and is expected to be part of the following release. Development for Glibc with NPTL (older thread libraries are not supported by Glibc anymore) is also current under way. A development tree can be found in the local [http://git.linux-xtensa.org GIT] repositories.&lt;br /&gt;
* uClibc: http://www.uclibc.org/&lt;br /&gt;
* GlibC: http://www.gnu.org/software/libc/&lt;br /&gt;
&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
&lt;br /&gt;
GDB is maintained in OpenSource and support for Xtensa in other debugging tools was maintained as patches in local buildroot repositories, and are currently updated and pushed to the respective main repositories.&lt;br /&gt;
* GDB: http://www.gnu.org/software/gdb/&lt;br /&gt;
* strace: http://sourceforge.net/projects/strace/&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
&lt;br /&gt;
Xtensa has been part of the official Linux kernel tree since 2.6.13, however, a lot of patches were maintained in a local stable tree for a long time, and are currently ported to the latest kernel tree. Features, such as large memory support and cache aliasing should be expected to hit the kernel in the 3.10/3.11 time frame. The latest version can be found at https://www.kernel.org/.&lt;br /&gt;
&lt;br /&gt;
=== Toolchain creation tools and embedded distributions (crosstool-NG, buildroot, etc) ===&lt;br /&gt;
&lt;br /&gt;
Xtensa is supported by buildroot, which can be downloaded from http://www.buildroot.net. Support for crosstool-NG has not been pushed into the official tree yet. A version can be downloaded from local [http://git.linux-xtensa.org GIT] repositories. Additional information to configure these tools for a specific Xtensa processor configuration can be found under [[Toolchain and Embedded Distributions]].&lt;br /&gt;
* Buildroot: http://www.buildroot.net&lt;br /&gt;
* Crosstool-NG: http://crosstool-ng.org/&lt;br /&gt;
&lt;br /&gt;
=== Other Projects ===&lt;br /&gt;
&lt;br /&gt;
The following list are additional projects that are architecture specific, or that have architecture specific components with additional information how to compile them for Xtensa.&lt;br /&gt;
&lt;br /&gt;
* [[LibFFI]] - LibFFI is a library that provides an interface to execute low-level functions. It is mostly used by scripting or higher-level languages, such as Python, Dalvik, etc.&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Main_Page&amp;diff=683</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Main_Page&amp;diff=683"/>
		<updated>2013-03-24T20:39:59Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;nbsp;&lt;br /&gt;
= &amp;lt;big&amp;gt;Welcome to the Linux/Xtensa Wiki&amp;lt;/big&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
This Wiki project provides information about support for the [http://www.tensilica.com Xtensa processor architecture] in [http://en.wikipedia.org/wiki/Linux Linux] and other Open Source Software.&lt;br /&gt;
&lt;br /&gt;
The Xtensa processor architecture is a configurable, extensible, and synthesizable 32-bit RISC processor core. All Xtensa processors share a common base instruction set architecture, thereby ensuring compatibility of third party application software and development tools. Many architecture specific projects, such as the Linux kernel, GNU toolchain, and other development tools and applications already support the Xtensa architecture. Modifications to support a specific processor configuration are limited to a small set of configuration files, and the process is mostly automated. The pages listed under &#039;&#039;Supporting a processor configuration&#039;&#039; provide information to support a specific configuration.&lt;br /&gt;
&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:45%;height=100%; background:#ffffff;&amp;quot; valign=top|&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Getting Started&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Supported Processors]]&lt;br /&gt;
* [[Evaluation Platforms|Evaluation Platforms]]&lt;br /&gt;
* [[Instructions for building and booting Linux]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Support&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Mailing Lists]]&lt;br /&gt;
* [[Software Running on Xtensa]]&lt;br /&gt;
* [[KnownIssues|Known Kernel Issues and Limitations]]&lt;br /&gt;
* [[Supported Processor Configurations]]&lt;br /&gt;
|style=&amp;quot;width:10%;height:100%;background:#ffffff;&amp;quot; |&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
|style=&amp;quot;width:45%;height:100%; background:#ffffff;&amp;quot; valign=top|&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Supporting a processor configuration&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Toolchain and Embedded Distributions]]&lt;br /&gt;
* [[Linux Kernel]]&lt;br /&gt;
* [[Boot Loader|Boot Loader]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; border-bottom:1px solid #c0c0c0; ; width:350px; &amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;Developers&#039; Resources&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Platform Porting|Porting the Kernel to a new Platform (Board)]]&lt;br /&gt;
* [[ABI Interface]]&lt;br /&gt;
* [[Xtensa on QEMU]]&lt;br /&gt;
* [[Testing and Verification]]&lt;br /&gt;
&lt;br /&gt;
| colspan=3 |&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;small&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039;  Due to spam, creation of new wiki accounts has been disabled until further notice.&lt;br /&gt;
If you want to get an account, and be able to edit or contribute anything,&lt;br /&gt;
please try sending an email to the&lt;br /&gt;
[http://lists.linux-xtensa.org/mailman/listinfo/linux-xtensa linux-xtensa mailing list]&lt;br /&gt;
identifying yourself and what you want to contribute.&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;/i&amp;gt;&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Software_Support_for_Xtensa&amp;diff=682</id>
		<title>Software Support for Xtensa</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Software_Support_for_Xtensa&amp;diff=682"/>
		<updated>2013-03-24T20:38:55Z</updated>

		<summary type="html">&lt;p&gt;Chris: Software Support for Xtensa moved to Software Running on Xtensa&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Software Running on Xtensa]]&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Status_of_the_Xtensa_Port&amp;diff=681</id>
		<title>Status of the Xtensa Port</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Status_of_the_Xtensa_Port&amp;diff=681"/>
		<updated>2013-03-24T20:38:55Z</updated>

		<summary type="html">&lt;p&gt;Chris: Software Support for Xtensa moved to Software Running on Xtensa&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides additional information for software support for the Xtensa architecture. While most applications are written architecture independent, development tools and operating systems must be ported to a new processor architecture. Support for the Xtensa architecture has already been integrated in most Open Source software projects. Development trees that feed to the respective mainline repository and for new development can be found in local [http://git.linux-xtensa.org GIT] repositories. &lt;br /&gt;
&lt;br /&gt;
=== Toolchain: Compiler (GCC) and various binary utilities (binutils) ===&lt;br /&gt;
&lt;br /&gt;
All GNU toolchain tools are maintained in OpenSource and can be downloaded from the respective locations.&lt;br /&gt;
* Binutils: http://www.gnu.org/software/binutils/&lt;br /&gt;
* GCC: http://gcc.gnu.org/&lt;br /&gt;
&lt;br /&gt;
Additional information to patch these sources for a specific Xtensa processor configuration can be found under [[Toolchain and Embedded Distributions]].&lt;br /&gt;
&lt;br /&gt;
=== C-Libraries: GlibC and uClibc ===&lt;br /&gt;
&lt;br /&gt;
Xtensa has long been part of uClibc, however, there are a lot of bug fixes pending for the next release (0.9.33.3). Support for the Native Posix Thread Library (NTPL) is under development and is expected to be part of the following release. Development for Glibc with NPTL (older thread libraries are not supported by Glibc anymore) is also current under way. A development tree can be found in the local [http://git.linux-xtensa.org GIT] repositories.&lt;br /&gt;
* uClibc: http://www.uclibc.org/&lt;br /&gt;
* GlibC: http://www.gnu.org/software/libc/&lt;br /&gt;
&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
&lt;br /&gt;
GDB is also maintained in OpenSource and can be downloaded from http://www.gnu.org/software/gdb/. Support for other debugging tools (strace, ltrace, oprofile, etc.) has not been pushed to their respective main repositories, yet. Patches have been maintained in local buildroot repositories. More information can be found at http://www.gnu.org/software/gdb/&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
&lt;br /&gt;
Xtensa has been part of the official Linux kernel tree since 2.6.13, however, a lot of patches were maintained in a local stable tree for a long time, and are currently ported to the latest kernel tree. Features, such as large memory support and cache aliasing should be expected to hit the kernel in the 3.10/3.11 time frame. The latest version can be found at https://www.kernel.org/.&lt;br /&gt;
&lt;br /&gt;
=== Toolchain and embedded distributions (crosstool-NG, buildroot, etc) ===&lt;br /&gt;
&lt;br /&gt;
Xtensa is supported by buildroot, which can be downloaded from http://www.buildroot.net. Support for crosstool-NG has not been pushed into the official tree yet. A version can be downloaded from local [http://git.linux-xtensa.org GIT] repositories. Additional information to configure these tools for a specific Xtensa processor configuration can be found under [[Toolchain and Embedded Distributions]].&lt;br /&gt;
* Buildroot: http://www.buildroot.net&lt;br /&gt;
* Crosstool-NG: http://crosstool-ng.org/&lt;br /&gt;
&lt;br /&gt;
=== Other Projects ===&lt;br /&gt;
&lt;br /&gt;
The following list are additional projects that are architecture specific, or that have architecture specific components with additional information how to compile them for Xtensa.&lt;br /&gt;
&lt;br /&gt;
* [[LibFFI]] - LibFFI is a library that provides an interface to execute low-level functions. It is mostly used by scripting or higher-level languages, such as Python, Dalvik, etc.&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Testing_and_Verification&amp;diff=680</id>
		<title>Testing and Verification</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Testing_and_Verification&amp;diff=680"/>
		<updated>2013-03-19T22:26:40Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;Under Development&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page describes mechanisms to test the various architecture dependent software, such as toolchain and Linux kernel.&lt;br /&gt;
&lt;br /&gt;
== Dejagnu ==&lt;br /&gt;
&lt;br /&gt;
Dejagnu (http://www.gnu.org/software/dejagnu/) is used by many GNU and other tools as a test environment, and must be installed on the host before running some of the tests below. Additional information for setting it up for a board with an Xtensa processor or for a simulator (ISS or QEMU) can be found under [[DejaGnu]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Binutils ==&lt;br /&gt;
&lt;br /&gt;
== GCC ==&lt;br /&gt;
&lt;br /&gt;
== GlibC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Using Crosstool-NG ===&lt;br /&gt;
&lt;br /&gt;
 ${CROSSTOOL}/.build/xtensa-unknown-linux-gnu/buildtools/bin&lt;br /&gt;
&lt;br /&gt;
== GDB ==&lt;br /&gt;
&lt;br /&gt;
== Kernel (LTP) ==&lt;br /&gt;
&lt;br /&gt;
While the kernel itself doesn&#039;t come with any extensive test suite, the Linux Test Project - LTP (http://ltp.sourceforge.net/) provides an&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=DejaGnu&amp;diff=679</id>
		<title>DejaGnu</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=DejaGnu&amp;diff=679"/>
		<updated>2013-03-19T17:45:22Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.gnu.org/software/dejagnu/ is a framework for testing various other tools and programs.&lt;br /&gt;
&lt;br /&gt;
The following instructions are intended to run the test suite in a simulator or on a board running Linux. &lt;br /&gt;
&lt;br /&gt;
== Remote board using ssh ==&lt;br /&gt;
&lt;br /&gt;
== Remote board using telnet/FTP ==&lt;br /&gt;
&lt;br /&gt;
Although the preferred method to use dejagnu is over ssh, it might be necessary to use telnet and ftp, instead, if ssh is not supported or to slow on the particular target. Unfortunately, Dejagnu doesn&#039;t fully support telnet/ftp as a remote target out of the box, so it is necessary to patch the telnet.exp file. &lt;br /&gt;
The distribution running on that board needs to be configured to include support for an ftp and telnet daemon, and these services should be running.&lt;br /&gt;
&lt;br /&gt;
The telnet.exp file can usually be found under /usr/share/dejagnu/telnet.exp. http://linux-xtensa.org/pub/patches/dejagnu/dejagnu-telnet.patch.gz&lt;br /&gt;
&lt;br /&gt;
 cd /usr/share/dejagnu&lt;br /&gt;
 cp telnet.exp telnet.exp.orig&lt;br /&gt;
 gunzip -c &amp;lt;path-to&amp;gt;/dejagnu-telnet.patch.gz | patch -p0&lt;br /&gt;
&lt;br /&gt;
The next step is to create a board interface file for the target. In this example, we use the name &#039;lx60&#039;, but it can be any name.&lt;br /&gt;
&lt;br /&gt;
lx60.exp&lt;br /&gt;
 load_generic_config &amp;quot;unix&amp;quot;;                                                                                                                                    &lt;br /&gt;
 set_board_info hostname         &amp;quot;lx60&amp;quot;&lt;br /&gt;
 set_board_info compiler         &amp;quot;&amp;lt;path-to-compiler&amp;gt;/xtensa-linux-gcc&amp;quot;&lt;br /&gt;
 set_board_info connect          &amp;quot;telnet&amp;quot;&lt;br /&gt;
 set_board_info file_transfer    &amp;quot;ftp&amp;quot;&lt;br /&gt;
 set_board_info shell_prompt     &amp;quot;\\$ &amp;quot;&lt;br /&gt;
 set_board_info protocol         &amp;quot;telnet&amp;quot;&lt;br /&gt;
 set_board_info telnet_username  &amp;quot;test&amp;quot;&lt;br /&gt;
 set_board_info telnet_password  &amp;quot;test&amp;quot;&lt;br /&gt;
 set_board_info ftp_username     &amp;quot;test&amp;quot;&lt;br /&gt;
 set_board_info ftp_password     &amp;quot;test&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Before we can run teh testsuite, we need to tell it what board to use. Create the file site.exp under &amp;lt;path-to-libffi&amp;gt;/testsuite/site.exp with the following content:&lt;br /&gt;
 lappend boards_dir &amp;quot;&amp;lt;directory-that-includes-lx60.exp&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Finally, you can run the testsuite:&lt;br /&gt;
 export RUNTESTFLAGS=&amp;quot;--target_board=lx60&amp;quot;&lt;br /&gt;
 make check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tensilica ISS Simulator ==&lt;br /&gt;
&lt;br /&gt;
The Tensilica ISS simulator is already supported by DejaGnu. The target name is xtensa-sim.&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=DejaGnu&amp;diff=678</id>
		<title>DejaGnu</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=DejaGnu&amp;diff=678"/>
		<updated>2013-03-19T17:41:21Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.gnu.org/software/dejagnu/ is a framework for testing various other tools and programs.&lt;br /&gt;
&lt;br /&gt;
The following instructions are intended to run the test suite in a simulator or on a board running Linux. &lt;br /&gt;
&lt;br /&gt;
== Remote board using ssh ==&lt;br /&gt;
&lt;br /&gt;
== Remote board using telnet/FTP ==&lt;br /&gt;
&lt;br /&gt;
Although the preferred method to use dejagnu is over ssh, it might be necessary to use telnet and ftp, instead, if ssh is not supported or to slow on the particular target. Unfortunately, Dejagnu doesn&#039;t fully support telnet/ftp as a remote target out of the box, so it is necessary to patch the telnet.exp file. &lt;br /&gt;
The distribution running on that board needs to be configured to include support for an ftp and telnet daemon, and these services should be running.&lt;br /&gt;
&lt;br /&gt;
The telnet.exp file can usually be found under /usr/share/dejagnu/telnet.exp. http://linux-xtensa.org/pub/patches/dejagnu/dejagnu-telnet.patch.gz&lt;br /&gt;
&lt;br /&gt;
 cd /usr/share/dejagnu&lt;br /&gt;
 cp telnet.exp telnet.exp.orig&lt;br /&gt;
 gunzip -c &amp;lt;path-to&amp;gt;/dejagnu-telnet.patch.gz | patch -p0&lt;br /&gt;
&lt;br /&gt;
The next step is to create a board interface file for the target. In this example, we use the name &#039;lx60&#039;, but it can be any name.&lt;br /&gt;
&lt;br /&gt;
lx60.exp&lt;br /&gt;
 load_generic_config &amp;quot;unix&amp;quot;;                                                                                                                                    &lt;br /&gt;
 set_board_info hostname         &amp;quot;lx60&amp;quot;&lt;br /&gt;
 set_board_info compiler         &amp;quot;&amp;lt;path-to-compiler&amp;gt;/xtensa-linux-gcc&amp;quot;&lt;br /&gt;
 set_board_info connect          &amp;quot;telnet&amp;quot;&lt;br /&gt;
 set_board_info file_transfer    &amp;quot;ftp&amp;quot;&lt;br /&gt;
 set_board_info shell_prompt     &amp;quot;\\$ &amp;quot;&lt;br /&gt;
 set_board_info protocol         &amp;quot;telnet&amp;quot;&lt;br /&gt;
 set_board_info telnet_username  &amp;quot;test&amp;quot;&lt;br /&gt;
 set_board_info telnet_password  &amp;quot;test&amp;quot;&lt;br /&gt;
 set_board_info ftp_username     &amp;quot;test&amp;quot;&lt;br /&gt;
 set_board_info ftp_password     &amp;quot;test&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Before we can run teh testsuite, we need to tell it what board to use. Create the file site.exp under &amp;lt;path-to-libffi&amp;gt;/testsuite/site.exp with the following content:&lt;br /&gt;
 lappend boards_dir &amp;quot;&amp;lt;directory-that-includes-lx60.exp&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Finally, you can run the testsuite:&lt;br /&gt;
 export RUNTESTFLAGS=&amp;quot;--target_board=lx60&amp;quot;&lt;br /&gt;
 make check&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tensilica ISS Simulator ==&lt;br /&gt;
&lt;br /&gt;
 # Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software&lt;br /&gt;
 # Foundation, Inc.&lt;br /&gt;
 #&lt;br /&gt;
 # This file is part of DejaGnu.&lt;br /&gt;
 #&lt;br /&gt;
 # DejaGnu is free software; you can redistribute it and/or modify it&lt;br /&gt;
 # under the terms of the GNU General Public License as published by&lt;br /&gt;
 # the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 # (at your option) any later version.&lt;br /&gt;
 #&lt;br /&gt;
 # DejaGnu is distributed in the hope that it will be useful, but&lt;br /&gt;
 # WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 # General Public License for more details.&lt;br /&gt;
 #&lt;br /&gt;
 # You should have received a copy of the GNU General Public License&lt;br /&gt;
 # along with DejaGnu; if not, write to the Free Software Foundation,&lt;br /&gt;
 # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.&lt;br /&gt;
 &lt;br /&gt;
 # Load the generic configuration for this board. This will define a basic&lt;br /&gt;
 # set of routines used to communicate with the board.&lt;br /&gt;
 load_generic_config &amp;quot;sim&amp;quot;&lt;br /&gt;
 # basic-sim.exp is a basic description for the standard Cygnus simulator.&lt;br /&gt;
 load_base_board_description &amp;quot;basic-sim&amp;quot;&lt;br /&gt;
 # Command to invoke the simulator&lt;br /&gt;
 set_board_info sim xt-run&lt;br /&gt;
 setup_sim xtensa&lt;br /&gt;
 # No multilib flags needed by default.&lt;br /&gt;
 process_multilib_options &amp;quot;&amp;quot;&lt;br /&gt;
 # The compiler used to build for this board. This has *nothing* to do&lt;br /&gt;
 # with what compiler is tested if we&#039;re testing gcc.&lt;br /&gt;
 set_board_info compiler       &amp;quot;[find_gcc]&amp;quot;&lt;br /&gt;
 set_board_info cflags         &amp;quot;[libgloss_include_flags] [newlib_include_flags]&amp;quot;&lt;br /&gt;
 set_board_info ldflags        &amp;quot;[libgloss_link_flags] [newlib_link_flags]&amp;quot;&lt;br /&gt;
 # This board doesn&#039;t use a linker script.&lt;br /&gt;
 set_board_info ldscript &amp;quot;&amp;quot;&lt;br /&gt;
 # The simulator doesn&#039;t return exit statuses and we need to indicate this.&lt;br /&gt;
 set_board_info needs_status_wrapper  1&lt;br /&gt;
 # No support for signals on this target.&lt;br /&gt;
 set_board_info gdb,nosignals 1&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Supported_Processors&amp;diff=677</id>
		<title>Supported Processors</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Supported_Processors&amp;diff=677"/>
		<updated>2013-03-18T23:51:28Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Xtensa Processor Architecture ==&lt;br /&gt;
&lt;br /&gt;
[[image:chip.jpg|right]]&lt;br /&gt;
The Xtensa processor architecture is a configurable, extensible, and synthesizable 32-bit RISC processor core. SoC and processor designers can select from a variety of options, such as instruction-set extensions, memory, cache, and interrupt configurations. Moreover, Xtensa processors can be extended with custom-defined instructions and registers, as well as custom port and queue interfaces. All Xtensa processors share a common base instruction set architecture, thereby ensuring compatibility of third party application software and development tools.&lt;br /&gt;
&lt;br /&gt;
Tensilica’s Diamond Standard Series processor family consists of a number of ready-to-use synthesizable cores and is based on the Xtensa processor architecture. The Diamond Standard 233L processor, for example, contains an MMU and fully supports running Linux. &lt;br /&gt;
&lt;br /&gt;
== Automatic Support for Custom Xtensa Cores ==&lt;br /&gt;
&lt;br /&gt;
Despite the endless possibilities provided by the configurability and extensibility of the Xtensa architecture, obtaining an open source toolchain and kernel that fully support a specific configured Xtensa core is a straightforward matter.  The process is mostly automated (scripted), avoiding any need to manually port the kernel to a new processor variant as is typical for a fixed processor architecture.  Modifications to toolchain and kernel sources are limited to a small set of configuration files, typically provided by Tensilica in the form of an &#039;&#039;overlay&#039;&#039; to be copied into the sources.  The development tools and kernel are subsequently configured and built as usual.  (Of course, you still have to port Linux to your particular board or platform.)&lt;br /&gt;
&lt;br /&gt;
In the Linux kernel for example, all configuration files are located inside the Xtensa include directory in the kernel sources (&amp;lt;code&amp;gt;arch/xtensa/variant/&#039;&#039;config&#039;&#039;/include/variant/&amp;lt;/code&amp;gt;).  Adding support to the kernel for a custom configured Xtensa processor generally involves copying the appropriate configuration files into the appropriate variant directory.&lt;br /&gt;
&lt;br /&gt;
== Kernel and Processor Configuration ==&lt;br /&gt;
&lt;br /&gt;
Because the kernel is much closer to the hardware and provides an abstraction for many architectural options, it needs to be configured and compiled for a particular platform and processor configuration. It also requires development tools configured for the particular processor.  Note that a &#039;&#039;processor configuration&#039;&#039; is also often referred to as a &#039;&#039;core variant&#039;&#039; in Linux.  The following list shows processor configurations already included in the kernel, but adding a new configuration is a very simple and straight forward process.&lt;br /&gt;
&lt;br /&gt;
* Diamond 232L&lt;br /&gt;
* Diamond 233L&lt;br /&gt;
* Stretch S6000 (without MMU)&lt;br /&gt;
* &#039;FSF&#039; default configuration (only for tool verification)&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Supported_Processors&amp;diff=676</id>
		<title>Supported Processors</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Supported_Processors&amp;diff=676"/>
		<updated>2013-03-18T23:50:27Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Xtensa Processor Architecture ==&lt;br /&gt;
&lt;br /&gt;
[[image:chip.jpg|right]]&lt;br /&gt;
The Xtensa processor architecture is a configurable, extensible, and synthesizable 32-bit RISC processor core. SoC and processor designers can select from a variety of options, such as instruction-set extensions, memory, cache, and interrupt configurations. Moreover, Xtensa processors can be extended with custom-defined instructions and registers, as well as custom port and queue interfaces. All Xtensa processors share a common base instruction set architecture, thereby ensuring compatibility of third party application software and development tools.&lt;br /&gt;
&lt;br /&gt;
Tensilica’s Diamond Standard Series processor family consists of a number of ready-to-use synthesizable cores and is based on the Xtensa processor architecture. The Diamond Standard 233L processor, for example, contains an MMU and fully supports running Linux. &lt;br /&gt;
&lt;br /&gt;
== Automatic Support for Custom Xtensa Cores ==&lt;br /&gt;
&lt;br /&gt;
Despite the endless possibilities provided by the configurability and extensibility of the Xtensa architecture, obtaining an open source toolchain and kernel that fully support a specific configured Xtensa core is a straightforward matter.  The process is mostly automated (scripted), avoiding any need to manually port the kernel to a new processor variant as is typical for a fixed processor architecture.  Modifications to toolchain and kernel sources are limited to a small set of configuration files, typically provided by Tensilica in the form of an &#039;&#039;overlay&#039;&#039; to be copied into the sources.  The development tools and kernel are subsequently configured and built as usual.  (Of course, you still have to port Linux to your particular board or platform.)&lt;br /&gt;
&lt;br /&gt;
In the Linux kernel for example, all configuration files are located inside the Xtensa include directory in the kernel sources (&amp;lt;code&amp;gt;arch/xtensa/variant/&#039;&#039;config&#039;&#039;/include/variant/&amp;lt;/code&amp;gt;).  Adding support to the kernel for a custom configured Xtensa processor generally involves copying the appropriate configuration files into the appropriate variant directory.&lt;br /&gt;
&lt;br /&gt;
== Kernel and Processor Configuration ==&lt;br /&gt;
&lt;br /&gt;
Because the kernel is much closer to the hardware and provides an abstraction for many architectural options, it needs to be configured and compiled for a particular platform and processor configuration. It also requires development tools configured for the particular processor.  Note that a &#039;&#039;processor configuration&#039;&#039; is also often referred to as a &#039;&#039;core variant&#039;&#039; in Linux.  The following list shows processor configurations included in the kernel. &lt;br /&gt;
* Diamond 232L&lt;br /&gt;
* Diamond 233L&lt;br /&gt;
* Stretch S6000 (without MMU)&lt;br /&gt;
* &#039;FSF&#039; default configuration (only for tool verification)&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Supported_Processors&amp;diff=675</id>
		<title>Supported Processors</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Supported_Processors&amp;diff=675"/>
		<updated>2013-03-18T23:48:56Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Xtensa Processor Architecture ==&lt;br /&gt;
&lt;br /&gt;
[[image:chip.jpg|right]]&lt;br /&gt;
The Xtensa processor architecture is a configurable, extensible, and synthesizable 32-bit RISC processor core. SoC and processor designers can select from a variety of options, such as instruction-set extensions, memory, cache, and interrupt configurations. Moreover, Xtensa processors can be extended with custom-defined instructions and registers, as well as custom port and queue interfaces. All Xtensa processors share a common base instruction set architecture, thereby ensuring compatibility of third party application software and development tools.&lt;br /&gt;
&lt;br /&gt;
Tensilica’s Diamond Standard Series processor family consists of a number of ready-to-use synthesizable cores and is based on the Xtensa processor architecture. The Diamond Standard 233L processor, for example, contains an MMU and fully supports running Linux. &lt;br /&gt;
&lt;br /&gt;
[[Supported Processor Configurations]] provides additional information when defining a new &#039;&#039;&#039;custom&#039;&#039;&#039; Xtensa processor.&lt;br /&gt;
&lt;br /&gt;
== Automatic Support for Custom Xtensa Cores ==&lt;br /&gt;
&lt;br /&gt;
Despite the endless possibilities provided by the configurability and extensibility of the Xtensa architecture, obtaining an open source toolchain and kernel that fully support a specific configured Xtensa core is a straightforward matter.  The process is mostly automated (scripted), avoiding any need to manually port the kernel to a new processor variant as is typical for a fixed processor architecture.  Modifications to toolchain and kernel sources are limited to a small set of configuration files, typically provided by Tensilica in the form of an &#039;&#039;overlay&#039;&#039; to be copied into the sources.  The development tools and kernel are subsequently configured and built as usual.  (Of course, you still have to port Linux to your particular board or platform.)&lt;br /&gt;
&lt;br /&gt;
In the Linux kernel for example, all configuration files are located inside the Xtensa include directory in the kernel sources (&amp;lt;code&amp;gt;arch/xtensa/variant/&#039;&#039;config&#039;&#039;/include/variant/&amp;lt;/code&amp;gt;).  Adding support to the kernel for a custom configured Xtensa processor generally involves copying the appropriate configuration files into the appropriate variant directory.&lt;br /&gt;
&lt;br /&gt;
== Kernel and Processor Configuration ==&lt;br /&gt;
&lt;br /&gt;
Because the kernel is much closer to the hardware and provides an abstraction for many architectural options, it needs to be configured and compiled for a particular platform and processor configuration. It also requires development tools configured for the particular processor.  Note that a &#039;&#039;processor configuration&#039;&#039; is also often referred to as a &#039;&#039;core variant&#039;&#039; in Linux.  The following list shows processor configurations included in the kernel. &lt;br /&gt;
* Diamond 232L&lt;br /&gt;
* Diamond 233L&lt;br /&gt;
* Stretch S6000 (without MMU)&lt;br /&gt;
* &#039;FSF&#039; default configuration (only for tool verification)&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Linux_Kernel&amp;diff=674</id>
		<title>Linux Kernel</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Linux_Kernel&amp;diff=674"/>
		<updated>2013-03-18T23:47:15Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current mechanism to support a specific Xtensa processor configuration is not yet fully automated, but is a very simple and straight forward process. Note that the Xtensa port of Linux uses the terminology &#039;&#039;variant&#039;&#039; to describe a processor configuration. For this example, we will use &#039;&#039;MyCore&#039;&#039; as the new processor name, but any name can be used. The steps involved adding a processor configuration are:&lt;br /&gt;
&lt;br /&gt;
# Create a new directory for the processor &#039;&#039;variant&#039;&#039; (MyCore) and copy a set of configuration files that describes the processor to that directory&lt;br /&gt;
# Add the name of the processor configuration to a Linux configuration file.&lt;br /&gt;
# Add the path of the &#039;&#039;variant&#039;&#039; directory to a Makefile&lt;br /&gt;
&lt;br /&gt;
== Create a directory for the variant and copy configuration files ==&lt;br /&gt;
&lt;br /&gt;
All processor configuration specific sources and header files are located in arch/xtensa/variants/&#039;&#039;variant-name&#039;&#039; for source files, and arch/xtensa/variants/&#039;&#039;variant-name&#039;&#039;/include/variant for header files. The include directory typically contains at least the following three files that describe the processor configuration:&lt;br /&gt;
&lt;br /&gt;
* tie.h - describing custom defined TIE registers&lt;br /&gt;
* tie-asm.h - macros to access additional TIE registers&lt;br /&gt;
* core.h - describing various processor configurations, such as cache sizes, register options, etc.&lt;br /&gt;
&lt;br /&gt;
All processor configurations provide a set of these files as part of the &#039;&#039;overlay&#039;&#039; provided by Tensilica.&lt;br /&gt;
&lt;br /&gt;
If we want to add another processor, we have to create the following directory and copy the three configurations file to that directory:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p arch/xtensa/variants/MyCore/include/variant&lt;br /&gt;
 cp tie.h tie-asm.h core.h arch/xtensa/variants/MyCore/include/variant&lt;br /&gt;
&lt;br /&gt;
== Add the processor name to a Linux configuration file ==&lt;br /&gt;
&lt;br /&gt;
The file arch/xtensa/Kconfig contains a list of processor configurations. Simply add a new entry under the menu &amp;quot;Processor type and features&amp;quot; in the &amp;quot;Xtensa Processor Configuration&amp;quot; list. In most cases, the configuration will have an MMU, so add also the line &#039;&#039;select MMU&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 choice&lt;br /&gt;
         prompt &amp;quot;Xtensa Processor Configuration&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
 config XTENSA_VARAINT_DC233C&lt;br /&gt;
         bool &amp;quot;dc233c - Diamond 233L Standard Core Rev.C (LE)&amp;quot;&lt;br /&gt;
         select MMU&lt;br /&gt;
         help&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;config XTENSA_VARIANT_MYCORE&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;bool &amp;quot;MyCore - My extreeem core&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;select MMU&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;help&#039;&#039;&#039;&lt;br /&gt;
           &#039;&#039;&#039;MyCore with various optimizations.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add the processor to the makefile ==&lt;br /&gt;
&lt;br /&gt;
Simply add a line for your core at the top of the file. The part of the configuration name CONFIG_XTENSA_VARIANT_MYCORE after CONFIG_ must match the name that was added to Kconfig, and the right hand side must match the name of the directory created in step 1.&lt;br /&gt;
&lt;br /&gt;
 variant-$(CONFIG_XTENSA_VARIANT_S6000)          := s6000&lt;br /&gt;
 &#039;&#039;&#039;variant-$(CONFIG_XTENSA_VARIANT_MYCORE)         := MyCore&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Linux_Kernel&amp;diff=673</id>
		<title>Linux Kernel</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Linux_Kernel&amp;diff=673"/>
		<updated>2013-03-18T23:46:27Z</updated>

		<summary type="html">&lt;p&gt;Chris: New page: The current mechanism to support a specific Xtensa processor configuration is not yet fully automated, but is a very simple and straight forward process. Note that the Xtensa port of Linux...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current mechanism to support a specific Xtensa processor configuration is not yet fully automated, but is a very simple and straight forward process. Note that the Xtensa port of Linux uses the terminology &#039;&#039;variant&#039;&#039; to describe a processor configuration. For this example, we will use &#039;&#039;MyCore&#039;&#039; as the new processor name in this example, but any name can be used. The steps involved adding a processor configuration are:&lt;br /&gt;
&lt;br /&gt;
# Create a new directory for the processor &#039;&#039;variant&#039;&#039; and copy a set of configuration files that describes the processor to that directory&lt;br /&gt;
# Add the name of the processor configuration to a Linux configuration file.&lt;br /&gt;
# Add the path of the &#039;&#039;variant&#039;&#039; directory to a Makefile&lt;br /&gt;
&lt;br /&gt;
== Create a directory for the variant and copy configuration files ==&lt;br /&gt;
&lt;br /&gt;
All processor configuration specific sources and header files are located in arch/xtensa/variants/&#039;&#039;variant-name&#039;&#039; for source files, and arch/xtensa/variants/&#039;&#039;variant-name&#039;&#039;/include/variant for header files. The include directory typically contains at least the following three files that describe the processor configuration:&lt;br /&gt;
&lt;br /&gt;
* tie.h - describing custom defined TIE registers&lt;br /&gt;
* tie-asm.h - macros to access additional TIE registers&lt;br /&gt;
* core.h - describing various processor configurations, such as cache sizes, register options, etc.&lt;br /&gt;
&lt;br /&gt;
All processor configurations provide a set of these files as part of the &#039;&#039;overlay&#039;&#039; provided by Tensilica.&lt;br /&gt;
&lt;br /&gt;
If we want to add another processor, we have to create the following directory and copy the three configurations file to that directory:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p arch/xtensa/variants/MyCore/include/variant&lt;br /&gt;
 cp tie.h tie-asm.h core.h arch/xtensa/variants/MyCore/include/variant&lt;br /&gt;
&lt;br /&gt;
== Add the processor name to a Linux configuration file ==&lt;br /&gt;
&lt;br /&gt;
The file arch/xtensa/Kconfig contains a list of processor configurations. Simply add a new entry under the menu &amp;quot;Processor type and features&amp;quot; in the &amp;quot;Xtensa Processor Configuration&amp;quot; list. In most cases, the configuration will have an MMU, so add also the line &#039;&#039;select MMU&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 choice&lt;br /&gt;
         prompt &amp;quot;Xtensa Processor Configuration&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
 config XTENSA_VARAINT_DC233C&lt;br /&gt;
         bool &amp;quot;dc233c - Diamond 233L Standard Core Rev.C (LE)&amp;quot;&lt;br /&gt;
         select MMU&lt;br /&gt;
         help&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;config XTENSA_VARIANT_MYCORE&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;bool &amp;quot;MyCore - My extreeem core&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;select MMU&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;help&#039;&#039;&#039;&lt;br /&gt;
           &#039;&#039;&#039;MyCore with various optimizations.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Add the processor to the makefile ==&lt;br /&gt;
&lt;br /&gt;
Simply add a line for your core at the top of the file. The part of the configuration name CONFIG_XTENSA_VARIANT_MYCORE after CONFIG_ must match the name that was added to Kconfig, and the right hand side must match the name of the directory created in step 1.&lt;br /&gt;
&lt;br /&gt;
 variant-$(CONFIG_XTENSA_VARIANT_S6000)          := s6000&lt;br /&gt;
 &#039;&#039;&#039;variant-$(CONFIG_XTENSA_VARIANT_MYCORE)         := MyCore&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=DejaGnu&amp;diff=672</id>
		<title>DejaGnu</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=DejaGnu&amp;diff=672"/>
		<updated>2013-03-18T23:12:51Z</updated>

		<summary type="html">&lt;p&gt;Chris: New page: http://www.gnu.org/software/dejagnu/ is a framework for testing various other tools and programs.  The following instructions are intended to run the test suite on a board running Linux. T...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://www.gnu.org/software/dejagnu/ is a framework for testing various other tools and programs.&lt;br /&gt;
&lt;br /&gt;
The following instructions are intended to run the test suite on a board running Linux. The distribution running on that board needs to be configured to include support for an ftp and telnet daemon, and these services should be running.&lt;br /&gt;
&lt;br /&gt;
Although the preferred method to use dejagnu is over ssh, it might be necessary to use telnet and ftp, instead, if ssh is not supported or to slow on the particular target. Unfortunately, Dejagnu doesn&#039;t fully support telnet/ftp as a remote target out of the box, so it is necessary to patch the telnet.exp file. &lt;br /&gt;
&lt;br /&gt;
The telnet.exp file can usually be found under /usr/share/dejagnu/telnet.exp. [http://linux-xtensa.org/pub/patches/dejagnu/dejagnu-telnet.patch.gz http://linux-xtensa.org/pub/patches/dejagnu/dejagnu-telnet.patch.gz]&lt;br /&gt;
&lt;br /&gt;
 cd /usr/share/dejagnu&lt;br /&gt;
 cp telnet.exp telnet.exp.orig&lt;br /&gt;
 gunzip -c &amp;lt;path-to&amp;gt;/dejagnu-telnet.patch.gz | patch -p0&lt;br /&gt;
&lt;br /&gt;
The next step is to create a board interface file for the target. In this example, we use the name &#039;lx60&#039;, but it can be any name.&lt;br /&gt;
&lt;br /&gt;
lx60.exp&lt;br /&gt;
 load_generic_config &amp;quot;unix&amp;quot;;                                                                                                                                    &lt;br /&gt;
 set_board_info hostname         &amp;quot;lx60&amp;quot;&lt;br /&gt;
 set_board_info compiler         &amp;quot;&amp;lt;path-to-compiler&amp;gt;/xtensa-linux-gcc&amp;quot;&lt;br /&gt;
 set_board_info connect          &amp;quot;telnet&amp;quot;&lt;br /&gt;
 set_board_info file_transfer    &amp;quot;ftp&amp;quot;&lt;br /&gt;
 set_board_info shell_prompt     &amp;quot;\\$ &amp;quot;&lt;br /&gt;
 set_board_info protocol         &amp;quot;telnet&amp;quot;&lt;br /&gt;
 set_board_info telnet_username  &amp;quot;test&amp;quot;&lt;br /&gt;
 set_board_info telnet_password  &amp;quot;test&amp;quot;&lt;br /&gt;
 set_board_info ftp_username     &amp;quot;test&amp;quot;&lt;br /&gt;
 set_board_info ftp_password     &amp;quot;test&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Before we can run teh testsuite, we need to tell it what board to use. Create the file site.exp under &amp;lt;path-to-libffi&amp;gt;/testsuite/site.exp with the following content:&lt;br /&gt;
 lappend boards_dir &amp;quot;&amp;lt;directory-that-includes-lx60.exp&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Finally, you can run the testsuite:&lt;br /&gt;
 export RUNTESTFLAGS=&amp;quot;--target_board=lx60&amp;quot;&lt;br /&gt;
 make check&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Testing_and_Verification&amp;diff=671</id>
		<title>Testing and Verification</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Testing_and_Verification&amp;diff=671"/>
		<updated>2013-03-18T23:10:07Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;Under Development&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page describes mechanisms to test the various architecture dependent software, such as toolchain and Linux kernel.&lt;br /&gt;
&lt;br /&gt;
== Dejagnu ==&lt;br /&gt;
&lt;br /&gt;
Dejagnu (http://www.gnu.org/software/dejagnu/) is used by many GNU and other tools as a test environment, and must be installed on the host before running any of the tests. &lt;br /&gt;
&lt;br /&gt;
=== Xtensa ISS (simulator) ===&lt;br /&gt;
&lt;br /&gt;
=== QEMU ===&lt;br /&gt;
&lt;br /&gt;
=== Board ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Binutils ==&lt;br /&gt;
&lt;br /&gt;
== GCC ==&lt;br /&gt;
&lt;br /&gt;
== GlibC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Using Crosstool-NG ===&lt;br /&gt;
&lt;br /&gt;
 ${CROSSTOOL}/.build/xtensa-unknown-linux-gnu/buildtools/bin&lt;br /&gt;
&lt;br /&gt;
== GDB ==&lt;br /&gt;
&lt;br /&gt;
== Kernel (LTP) ==&lt;br /&gt;
&lt;br /&gt;
While the kernel itself doesn&#039;t come with any extensive test suite, the Linux Test Project - LTP (http://ltp.sourceforge.net/) provides an&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Platform_Porting&amp;diff=670</id>
		<title>Platform Porting</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Platform_Porting&amp;diff=670"/>
		<updated>2013-03-18T22:03:27Z</updated>

		<summary type="html">&lt;p&gt;Chris: /* Adding a new Platform to the Kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding a new Platform to the Kernel ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to add support for a new platform for Xtensa is usually to look at the directories of one of the platforms already supported for Xtensa and to copy and modify those files. Drivers to support on-chip devices should go to the generic driver directory instead of the architecture directory. Adding a new platform should not require other changes to generic sources outside the platform specific directories. Modifications to the kernel are, therefore, mostly limited to the following places:&lt;br /&gt;
&lt;br /&gt;
# Modify &amp;lt;code&amp;gt;arch/xtensa/Kconfig&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;arch/xtensa/Makefile&amp;lt;/code&amp;gt; to add support for the new platform.&lt;br /&gt;
# Create a directory with the name of the platform in the architecture part of the kernel under &amp;lt;code&amp;gt;arch/xtensa/platforms/&amp;lt;/code&amp;gt;. This directory should contain the source files to support  hardware components other than generic devices, such as PCI host-bridges, etc.&lt;br /&gt;
# Create a directory for the header files: &amp;lt;code&amp;gt;arch/xtensa/platforms/&#039;&#039;name&#039;&#039;/include&amp;lt;/code&amp;gt;. It must at least contain the &amp;lt;code&amp;gt;hardware.h&amp;lt;/code&amp;gt; file to describe some fundamental hardware settings.&lt;br /&gt;
# &#039;&#039;(optional)&#039;&#039; add a default configuration file for the platform with the name &amp;lt;code&amp;gt;&#039;&#039;name&#039;&#039;_defconfig&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;arch/xtensa/configs&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modify &amp;lt;code&amp;gt;Kconfig&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Adding support for a new platform to the build system of Linux only requires to modify &amp;lt;code&amp;gt;Kconfig&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;. The new entry in &amp;lt;code&amp;gt;Kconfig&amp;lt;/code&amp;gt; allows the configuration scripts to pick up the new platform and the change in &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt; instructs the build process to enter the platform directory, if selected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;code&amp;gt;Kconfig&amp;lt;/code&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 config XTENSA_PLATFORM_&#039;&#039;NAME&#039;&#039;&lt;br /&gt;
     bool &#039;&#039;NAME&#039;&#039;&lt;br /&gt;
     help&lt;br /&gt;
     &#039;&#039;descriptive text&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 platform-$(CONFIG_XTENSA_PLATFORM_&#039;&#039;NAME&#039;&#039;)           := &#039;&#039;directory-name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Directory for the Headers ===&lt;br /&gt;
&lt;br /&gt;
Any platform specific header files should go to the &amp;lt;code&amp;gt;platform-&#039;&#039;name&#039;&#039;&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;include/asm-xtensa/&amp;lt;/code&amp;gt;. It should contain at least the &amp;lt;code&amp;gt;hardware.h&amp;lt;/code&amp;gt; file that describes the physical memory configuration.&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
  * Memory configuration.&lt;br /&gt;
  */&lt;br /&gt;
 &lt;br /&gt;
 #define PLATFORM_DEFAULT_MEM_START      0x00000000&lt;br /&gt;
 #define PLATFORM_DEFAULT_MEM_SIZE       0x08000000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Directory for the new Platform ===&lt;br /&gt;
&lt;br /&gt;
All source files for the new platform should be in &amp;lt;code&amp;gt;arch/xtensa/platforms/&#039;&#039;name&#039;&#039;&amp;lt;/code&amp;gt;. The Xtensa port provides a few hooks that can be used by the platform for initialization and other purposes. These functions are defined as &amp;lt;code&amp;gt;weak&amp;lt;/code&amp;gt; symbols with a default &#039;dummy&#039; implementation in the generic Xtensa sources. Platforms can, therefore, overwrite the default implementation simply by defining the function in one of its sources. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_init(bp_tag_t* bootparams);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The kernel calls this function early in the boot process prior to initializing the MMU. This allows the platform to perform early initializations of components. The argument &amp;lt;code&amp;gt;bootparams&amp;lt;/code&amp;gt; is a list of configuration tags passed from the boot-loader (see also [[Boot Loader]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_setup (char **);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This function is called from &amp;lt;code&amp;gt;setup_arch&amp;lt;/code&amp;gt; with a pointer to the command-line string.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_init_irq (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This function, called from &amp;lt;code&amp;gt;init_IRQ&amp;lt;/code&amp;gt;, allows platforms to initialize external interrupt controllers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_restart (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_halt (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_power_off (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The kernel calls one of these functions to either restart, halt, or reboot the system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_idle (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the &#039;&#039;idle&#039;&#039; function called whenever there is no thread or process ready.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_heartbeat (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The kernel calls this function every HZ interval.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_pcibios_init (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The kernel calls this function in case PCI is enabled to allow the platform to setup the PCI bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern int platform_pcibios_fixup (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The kernel calls this function in case PCI is enabled to allow the platform to modify PCI configuration after scanning the PCI bus has completed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_calibrate_ccount (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Platforms that can identify the processor speed should implement this function. It allows the platform to set the cpu clock frequency (if CONFIG_XTENSA_CALIBRATE is enabled). This function should determine the processor speed and set the following variables accordingly:&lt;br /&gt;
* &amp;lt;code&amp;gt;ccount_per_jiffy&amp;lt;/code&amp;gt; - This is the number of CCOUNT ticks per &amp;lt;code&amp;gt;jiffy&amp;lt;/code&amp;gt;. &#039;A jiffy&#039; is the time between two ticks, where HZ describes the number of ticks per seconds.&lt;br /&gt;
* &amp;lt;code&amp;gt;ccount_nsec&amp;lt;/code&amp;gt; - This is the time (in nano-seconds) between two subsequent CCOUNT ticks.&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Platform_Porting&amp;diff=669</id>
		<title>Platform Porting</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Platform_Porting&amp;diff=669"/>
		<updated>2013-03-18T22:02:15Z</updated>

		<summary type="html">&lt;p&gt;Chris: /* Adding a new Platform to the Kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding a new Platform to the Kernel ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to add support for a new platform for Xtensa is usually to look at the directories of one of the platforms already supported for Xtensa and to copy and modify those files. Drivers to support on-chip devices should go to the generic driver directory instead of the architecture directory. Adding a new platform should not require other changes to generic sources outside the platform specific directories. Modifications to the kernel are, therefore, mostly limited to the following places:&lt;br /&gt;
&lt;br /&gt;
# Modify &amp;lt;code&amp;gt;arch/xtensa/Kconfig&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;arch/xtensa/Makefile&amp;lt;/code&amp;gt; to add support for the new platform.&lt;br /&gt;
# Create a directory for the header files: &amp;lt;code&amp;gt;arch/xtensa/platforms/&#039;&#039;name&#039;&#039;/include&amp;lt;/code&amp;gt;. It must at least contain the &amp;lt;code&amp;gt;hardware.h&amp;lt;/code&amp;gt; file to describe some fundamental hardware settings.&lt;br /&gt;
# Create a directory with the name of the platform in the architecture part of the kernel under &amp;lt;code&amp;gt;arch/xtensa/platform/&amp;lt;/code&amp;gt;. This directory should contain the source files to support  hardware components other than generic devices, such as PCI host-bridges, etc.&lt;br /&gt;
# &#039;&#039;(optional)&#039;&#039; add a default configuration file for the platform with the name &amp;lt;code&amp;gt;&#039;&#039;name&#039;&#039;_defconfig&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;arch/xtensa/configs&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modify &amp;lt;code&amp;gt;Kconfig&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Adding support for a new platform to the build system of Linux only requires to modify &amp;lt;code&amp;gt;Kconfig&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;. The new entry in &amp;lt;code&amp;gt;Kconfig&amp;lt;/code&amp;gt; allows the configuration scripts to pick up the new platform and the change in &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt; instructs the build process to enter the platform directory, if selected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;code&amp;gt;Kconfig&amp;lt;/code&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 config XTENSA_PLATFORM_&#039;&#039;NAME&#039;&#039;&lt;br /&gt;
     bool &#039;&#039;NAME&#039;&#039;&lt;br /&gt;
     help&lt;br /&gt;
     &#039;&#039;descriptive text&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
 platform-$(CONFIG_XTENSA_PLATFORM_&#039;&#039;NAME&#039;&#039;)           := &#039;&#039;directory-name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Directory for the Headers ===&lt;br /&gt;
&lt;br /&gt;
Any platform specific header files should go to the &amp;lt;code&amp;gt;platform-&#039;&#039;name&#039;&#039;&amp;lt;/code&amp;gt; directory under &amp;lt;code&amp;gt;include/asm-xtensa/&amp;lt;/code&amp;gt;. It should contain at least the &amp;lt;code&amp;gt;hardware.h&amp;lt;/code&amp;gt; file that describes the physical memory configuration.&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
  * Memory configuration.&lt;br /&gt;
  */&lt;br /&gt;
 &lt;br /&gt;
 #define PLATFORM_DEFAULT_MEM_START      0x00000000&lt;br /&gt;
 #define PLATFORM_DEFAULT_MEM_SIZE       0x08000000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Directory for the new Platform ===&lt;br /&gt;
&lt;br /&gt;
All source files for the new platform should be in &amp;lt;code&amp;gt;arch/xtensa/platforms/&#039;&#039;name&#039;&#039;&amp;lt;/code&amp;gt;. The Xtensa port provides a few hooks that can be used by the platform for initialization and other purposes. These functions are defined as &amp;lt;code&amp;gt;weak&amp;lt;/code&amp;gt; symbols with a default &#039;dummy&#039; implementation in the generic Xtensa sources. Platforms can, therefore, overwrite the default implementation simply by defining the function in one of its sources. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_init(bp_tag_t* bootparams);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The kernel calls this function early in the boot process prior to initializing the MMU. This allows the platform to perform early initializations of components. The argument &amp;lt;code&amp;gt;bootparams&amp;lt;/code&amp;gt; is a list of configuration tags passed from the boot-loader (see also [[Boot Loader]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_setup (char **);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This function is called from &amp;lt;code&amp;gt;setup_arch&amp;lt;/code&amp;gt; with a pointer to the command-line string.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_init_irq (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This function, called from &amp;lt;code&amp;gt;init_IRQ&amp;lt;/code&amp;gt;, allows platforms to initialize external interrupt controllers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_restart (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_halt (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_power_off (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The kernel calls one of these functions to either restart, halt, or reboot the system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_idle (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the &#039;&#039;idle&#039;&#039; function called whenever there is no thread or process ready.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_heartbeat (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The kernel calls this function every HZ interval.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_pcibios_init (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The kernel calls this function in case PCI is enabled to allow the platform to setup the PCI bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern int platform_pcibios_fixup (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The kernel calls this function in case PCI is enabled to allow the platform to modify PCI configuration after scanning the PCI bus has completed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;extern void platform_calibrate_ccount (void);&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Platforms that can identify the processor speed should implement this function. It allows the platform to set the cpu clock frequency (if CONFIG_XTENSA_CALIBRATE is enabled). This function should determine the processor speed and set the following variables accordingly:&lt;br /&gt;
* &amp;lt;code&amp;gt;ccount_per_jiffy&amp;lt;/code&amp;gt; - This is the number of CCOUNT ticks per &amp;lt;code&amp;gt;jiffy&amp;lt;/code&amp;gt;. &#039;A jiffy&#039; is the time between two ticks, where HZ describes the number of ticks per seconds.&lt;br /&gt;
* &amp;lt;code&amp;gt;ccount_nsec&amp;lt;/code&amp;gt; - This is the time (in nano-seconds) between two subsequent CCOUNT ticks.&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Status_of_the_Xtensa_Port&amp;diff=668</id>
		<title>Status of the Xtensa Port</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Status_of_the_Xtensa_Port&amp;diff=668"/>
		<updated>2013-03-18T21:51:55Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides additional information for software support for the Xtensa architecture. While most applications are written architecture independent, development tools and operating systems must be ported to a new processor architecture. Support for the Xtensa architecture has already been integrated in most Open Source software projects. Development trees that feed to the respective mainline repository and for new development can be found in local [http://git.linux-xtensa.org GIT] repositories. &lt;br /&gt;
&lt;br /&gt;
=== Toolchain: Compiler (GCC) and various binary utilities (binutils) ===&lt;br /&gt;
&lt;br /&gt;
All GNU toolchain tools are maintained in OpenSource and can be downloaded from the respective locations.&lt;br /&gt;
* Binutils: http://www.gnu.org/software/binutils/&lt;br /&gt;
* GCC: http://gcc.gnu.org/&lt;br /&gt;
&lt;br /&gt;
Additional information to patch these sources for a specific Xtensa processor configuration can be found under [[Toolchain and Embedded Distributions]].&lt;br /&gt;
&lt;br /&gt;
=== C-Libraries: GlibC and uClibc ===&lt;br /&gt;
&lt;br /&gt;
Xtensa has long been part of uClibc, however, there are a lot of bug fixes pending for the next release (0.9.33.3). Support for the Native Posix Thread Library (NTPL) is under development and is expected to be part of the following release. Development for Glibc with NPTL (older thread libraries are not supported by Glibc anymore) is also current under way. A development tree can be found in the local [http://git.linux-xtensa.org GIT] repositories.&lt;br /&gt;
* uClibc: http://www.uclibc.org/&lt;br /&gt;
* GlibC: http://www.gnu.org/software/libc/&lt;br /&gt;
&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
&lt;br /&gt;
GDB is also maintained in OpenSource and can be downloaded from http://www.gnu.org/software/gdb/. Support for other debugging tools (strace, ltrace, oprofile, etc.) has not been pushed to their respective main repositories, yet. Patches have been maintained in local buildroot repositories. More information can be found at http://www.gnu.org/software/gdb/&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
&lt;br /&gt;
Xtensa has been part of the official Linux kernel tree since 2.6.13, however, a lot of patches were maintained in a local stable tree for a long time, and are currently ported to the latest kernel tree. Features, such as large memory support and cache aliasing should be expected to hit the kernel in the 3.10/3.11 time frame. The latest version can be found at https://www.kernel.org/.&lt;br /&gt;
&lt;br /&gt;
=== Toolchain and embedded distributions (crosstool-NG, buildroot, etc) ===&lt;br /&gt;
&lt;br /&gt;
Xtensa is supported by buildroot, which can be downloaded from http://www.buildroot.net. Support for crosstool-NG has not been pushed into the official tree yet. A version can be downloaded from local [http://git.linux-xtensa.org GIT] repositories. Additional information to configure these tools for a specific Xtensa processor configuration can be found under [[Toolchain and Embedded Distributions]].&lt;br /&gt;
* Buildroot: http://www.buildroot.net&lt;br /&gt;
* Crosstool-NG: http://crosstool-ng.org/&lt;br /&gt;
&lt;br /&gt;
=== Other Projects ===&lt;br /&gt;
&lt;br /&gt;
The following list are additional projects that are architecture specific, or that have architecture specific components with additional information how to compile them for Xtensa.&lt;br /&gt;
&lt;br /&gt;
* [[LibFFI]] - LibFFI is a library that provides an interface to execute low-level functions. It is mostly used by scripting or higher-level languages, such as Python, Dalvik, etc.&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Status_of_the_Xtensa_Port&amp;diff=667</id>
		<title>Status of the Xtensa Port</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Status_of_the_Xtensa_Port&amp;diff=667"/>
		<updated>2013-03-18T21:49:12Z</updated>

		<summary type="html">&lt;p&gt;Chris: /* C-Libraries: GlibC and uClibc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides additional information for software support for the Xtensa architecture. While most applications are written architecture independent, development tools and operating systems must be ported to a new processor architecture. Support for the Xtensa architecture has already been integrated in most Open Source software projects. Development trees that feed to the respective mainline repository and for new development can be found in local [http://git.linux-xtensa.org GIT] repositories. &lt;br /&gt;
&lt;br /&gt;
=== Toolchain: Compiler (GCC) and various binary utilities (binutils) ===&lt;br /&gt;
&lt;br /&gt;
All GNU toolchain tools are maintained in OpenSource and can be downloaded from the respective locations.&lt;br /&gt;
* Binutils: http://www.gnu.org/software/binutils/&lt;br /&gt;
* GCC: http://gcc.gnu.org/&lt;br /&gt;
&lt;br /&gt;
Additional information to patch these sources for a specific Xtensa processor configuration can be found under [[Toolchain and Embedded Distributions]].&lt;br /&gt;
&lt;br /&gt;
=== C-Libraries: GlibC and uClibc ===&lt;br /&gt;
&lt;br /&gt;
Xtensa has long been part of uClibc, however, there are a lot of bug fixes pending for the next release (0.9.33.3). Support for the Native Posix Thread Library (NTPL) is under development and is expected to be part of the following release. Development for Glibc with NPTL (older thread libraries are not supported by Glibc anymore) is also current under way. A development tree can be found in the local [http://git.linux-xtensa.org GIT] repositories.&lt;br /&gt;
* http://www.uclibc.org/&lt;br /&gt;
* http://www.gnu.org/software/libc/&lt;br /&gt;
&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
&lt;br /&gt;
GDB is also maintained in OpenSource and can be downloaded from http://www.gnu.org/software/gdb/. Support for other debugging tools (strace, ltrace, oprofile, etc.) has not been pushed to their respective main repositories, yet. Patches have been maintained in local buildroot repositories.&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel ===&lt;br /&gt;
&lt;br /&gt;
Xtensa has been part of the official Linux kernel tree since 2.6.13, however, a lot of patches were maintained in a local stable tree for a long time, and are currently ported to the latest kernel tree. Features, such as large memory support and cache aliasing should be expected to hit the kernel in the 3.10/3.11 time frame. The latest version can be found at https://www.kernel.org/.&lt;br /&gt;
&lt;br /&gt;
=== Toolchain and embedded distributions (crosstool-NG, buildroot, etc) ===&lt;br /&gt;
&lt;br /&gt;
Xtensa is supported by buildroot, which can be downloaded from http://www.buildroot.net. Support for crosstool-NG has not been pushed into the official tree yet. A version can be downloaded from local [http://git.linux-xtensa.org GIT] repositories. Additional information to configure these tools for a specific Xtensa processor configuration can be found under [[Toolchain and Embedded Distributions]].&lt;br /&gt;
&lt;br /&gt;
=== Other Projects ===&lt;br /&gt;
&lt;br /&gt;
* [[LibFFI]] - LibFFI is a library that provides an interface to execute low-level functions. It is mostly used by scripting or higher-level languages, such as Python, Dalvik, etc.&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Buildroot&amp;diff=666</id>
		<title>Buildroot</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Buildroot&amp;diff=666"/>
		<updated>2013-03-18T21:48:24Z</updated>

		<summary type="html">&lt;p&gt;Chris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the steps to build a toolchain and root file system for a specific processor configuration based on the latest release of Buildroot. &lt;br /&gt;
&lt;br /&gt;
== Getting Buildroot and other prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Buildroot&lt;br /&gt;
*: Download the latest release from http://buildroot.net/download.html or clone the development tree &amp;lt;code&amp;gt;git clone git://git.buildroot.net/buildroot&amp;lt;/code&amp;gt;&lt;br /&gt;
* Xtensa overlay file&lt;br /&gt;
*: The overlay file includes patches for toolchain tools, such as compiler, assembler, and debugger, that are required to support a specific Xtensa processor configuration. Tensilica provides such an overlay as part of the processor download, however, it needs to be reformatted to match the specific format required by buildroot. For a script to convert the overlay file, and additional information, please go to [[Toolchain Overlay File]]. The current version of buildroot requires that the overlay file name has the format xtensa_&amp;lt;CORE_NAME&amp;gt;.tar, where CORE_NAME can be any user selected name.&lt;br /&gt;
&lt;br /&gt;
== Configuring and building Buildroot ==&lt;br /&gt;
&lt;br /&gt;
The first step is to configure Buildroot &amp;lt;code&amp;gt;make menuconfig&amp;lt;/code&amp;gt;. Select Xtensa, and for a custom configuration, provide a core name and absolute path to the directory containing the overlay file. The overlay file name must be xtensa_&amp;lt;CORE_NAME&amp;gt;.tar, where core name can be any user selected name.&lt;br /&gt;
&lt;br /&gt;
 Target Architecture (Xtensa)&lt;br /&gt;
 Target Architecture Variant (Custom Xtensa processor configuration)&lt;br /&gt;
 (PROCESSOR_NAME) Custom Xtensa processor configuration name&lt;br /&gt;
 (ABSOLUTE_OVERLAY_PATH) Overlay directory for custom configuration&lt;br /&gt;
&lt;br /&gt;
Finally, run &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; to build the toolchain and root file system. For more information about Buildroot, please also read the documents provided by Buildroot under http://buildroot.net/docs.html.&lt;br /&gt;
&lt;br /&gt;
== Build Buildroot with Crosstool-NG ==&lt;br /&gt;
&lt;br /&gt;
Using the Crosstool-NG toolchain allows to build a version of a Buildroot image based on GlibC instead of uClibc. In the current version, Buildroot cannot build Crosstool-NG for Xtensa directly, but can be configured to use it as an &#039;&#039;external&#039;&#039; toolchain. The first step is to build and install Crosstool-NG, so Buildroot can use it to compile the root file system. More information to build Crosstool-NG for Xtensa can be found under [[Crosstool-NG]]. Assuming Crosstool-NG is installed in &#039;ABSOLUTE_PATH_TO_XTOOLS&#039;, which is typically &amp;lt;code&amp;gt;$HOME/x-tools&amp;lt;/code&amp;gt;, you can make the following additional configurations changes in Buildroot:&lt;br /&gt;
&lt;br /&gt;
 Toolchain  ---&amp;gt;&lt;br /&gt;
   Toolchain type (External toolchain)&lt;br /&gt;
   Toolchain (Custom toolchain)&lt;br /&gt;
   Toolchain origin (Pre-installed toolchain)&lt;br /&gt;
   (ABSOLUTE_PATH_TO_XTOOLS) Toolchain path&lt;br /&gt;
   ($(ARCH)-unknown-linux-gnu) Toolchain prefix&lt;br /&gt;
   External toolchain C library (glibc/eglibc)&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
	<entry>
		<id>http://wiki.linux-xtensa.org/index.php?title=Toolchain_and_Embedded_Distributions&amp;diff=665</id>
		<title>Toolchain and Embedded Distributions</title>
		<link rel="alternate" type="text/html" href="http://wiki.linux-xtensa.org/index.php?title=Toolchain_and_Embedded_Distributions&amp;diff=665"/>
		<updated>2013-03-17T21:01:43Z</updated>

		<summary type="html">&lt;p&gt;Chris: /* [http://crosstool-ng.org/ crosstool-NG] &amp;lt;small&amp;gt;(build instructions for Xtensa)&amp;lt;/small&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [[Toolchain Overlay File]] ==&lt;br /&gt;
&lt;br /&gt;
Because Xtensa is a configurable and extensible processor architecture that allows to define additional registers and instructions, the toolchain is the main software component that usually needs to be adapted for a specific Xtensa processor configuration. Tensilica provides a small set of configuration files in form of an &#039;&#039;overlay&#039;&#039; that replace the versions in the toolchain sources. The [[Toolchain Overlay File]] is a version of that &#039;&#039;overlay&#039;&#039; provided by Tensilica with a specific format required for crosstool-NG and buildroot. A script to convert the &#039;&#039;overlay&#039;&#039; provided by Tensilica can be found under [[Toolchain Overlay File]]&lt;br /&gt;
&lt;br /&gt;
== Start from scratch with FSF/OSS sources ==&lt;br /&gt;
&lt;br /&gt;
Creating a toolchain and bootable root file system starting from sources is certainly the most challenging approach. It usually requires additional patches and sometimes matching versions of sources. While support for Xtensa is integrated in most toolchain tools, they must be patches for a specific Xtensa processor configuration. The &#039;&#039;overlay&#039;&#039; metioned above includes a necessary set of configuration files together with information explaining the process to patch the toolchain sources.&lt;br /&gt;
&lt;br /&gt;
== [http://crosstool-ng.org/ crosstool-NG] &amp;lt;small&amp;gt;([[crosstool-NG|build instructions for Xtensa]])&amp;lt;/small&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
crosstool-NG (http://crosstool-ng.org/) provides a system to build a complete toolchain. It supports various C-libraries (Multilib, uClibc, glibc, and eglibc), but can also be used to build a &#039;bare&#039; toolchain. The current version does not yet support Xtensa as a target, but a development version can be retrieved from the local [http://git.linux-xtensa.org/ GIT] repositories. The process of patching the toolchain and other architecture specific software is fully automated using the [[Toolchain Overlay File]]. More information for building a toolchain for Xtensa using crosstool-NG can be found [[crosstool-NG|here]].&lt;br /&gt;
&lt;br /&gt;
== [http://www.buildroot.uclibc.org BuildRoot] &amp;lt;small&amp;gt;([[Buildroot|build instructions for Xtensa]])&amp;lt;/small&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Buildroot is a set of Makefiles and patches that makes it easy to generate a cross-compilation toolchain and root file system for your target Linux system. The Xtensa architecture is fully supported in the official tree, including support for specific processor configuration using the [[Toolchain Overlay File]]. For build instructions, see [[Buildroot]].&lt;/div&gt;</summary>
		<author><name>Chris</name></author>
	</entry>
</feed>