This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Arm 926ejs questions


[In response to a question about Linux on the ARM Integrator +
ARM926EJ-S; crossgcc list copied so others can comment on the NPTL
angle, and also in case the csl-arm-branch patch is of interest]

The ARM926EJ-S support in the Linux kernel goes under the name
"ARM926T", perhaps because the ARM core on some of the early TI OMAPs
identified itself as a 926T.  Just configure your kernel for the
appropriate Integrator board variant (see
arch/arm/mach-integrator/Kconfig) and 926T support, and you should be
fine.  GCC, on the other hand, knows it as the arm926ej-s (note
hyphen), and has an appropriately tuned instruction scheduler as of
4.x (originally implemented by CodeSourcery on the csl-arm-branch fork
of 3.4.x).  You get this instruction scheduler as a compiler default
by adding "--with-cpu=arm926ej-s" to the GCC configure arguments;
there's also some way to choose it at run-time, but cross-compiling is
complicated enough as it is and I just set the defaults right when I
build the toolchain.

There are several reasonable pre-compiled toolchains out there
(CodeSourcery's, MontaVista's, and OpenEmbedded's are all good
choices, and there are several ways to do it with Debian) -- but
personally, I feel strongly about being able to point fix my
toolchain, and prefer to build it from source from the beginning.  If
you're going to roll your own toolchain, I highly recommend either
some variant of Crosstool (see http://www.cygwin.com/ml/crossgcc/) or
Pengutronix's OSELAS Toolchain.  The ARM situation is somewhat
complex, and a lot of the people who know what they're doing seem to
participate on the Crosstool mailing list.

Since you ask, and since I'm prepping for code review anyway, I've
regenerated the ARM softfloat+NPTL patch I use against the current
upstream version of crosstool (specifically, r15 of Google Code's SVN)
and attached it.  Don't be alarmed by how big it is -- the vast
majority of it is a forward-port of the csl-arm-branch to GCC 3.4.6,
resulting in a (not yet very heavily tested) compiler that combines
(in theory) a working implementation of TLS hooks on ARM, a decent
ARM926 instruction scheduler, the less strict C++ front end of GCC
3.x, and all the bug fixes on the 3.4.x branch.  The changes to
crosstool itself are based on Martin Guy's approach to the NPTL dance;
I think Khem Raj has an alternate approach that many people prefer,
but I haven't really looked closely at it.

Depending on the code you're compiling, you may want any of GCC 3.4.6
(with this monster patch, automatically applied by crosstool), GCC
4.1.2, or GCC 4.2.0.  If I were you I'd start with 4.2.0, and only
fall back to one of the others if you have fairly severe problems.  I
suggest you try the configurations added by the enclosed patch first
(i. e., edit demo-arm-soft-oabi.sh to fix the version number, and then
run it), to practice getting a working toolchain built; then you can
evaluate whether you want this configuration (soft float, but still
the old integer ABI -- most likely to work with vendor-provided kernel
modules) or something else (hard float if you are stuck with
pre-compiled userland binaries that need it, or EABI if you're really
lucky and don't need to run any legacy binaries at all).  I can help
more with EABI, or with big-endian if you need that, but I haven't
tested those configurations lately.

That's probably far more detail than you wanted.  :-)  If you have
follow-up questions, don't hesitate to ask; you might keep the
crossgcc list copied because you may get better and/or prompter
answers there.

Cheers,
- Michael

Attachment: arm-oabi-soft-tls.patch.gz
Description: GNU Zip compressed data

--
For unsubscribe information see http://sourceware.org/lists.html#faq

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]