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] |
[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] |