From: Kyle Moffett <kyle@moffetthome.net>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
linux-kbuild <linux-kbuild@vger.kernel.org>,
Kumar Gala <kumar.gala@freescale.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Kyle Moffett <Kyle.D.Moffett@boeing.com>,
"H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@elte.hu>,
linuxppc-dev@lists.ozlabs.org,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: RFC: x86: kill binutils 2.16.x?
Date: Tue, 8 Mar 2011 16:59:05 -0500 [thread overview]
Message-ID: <AANLkTikAnb39XhR0hdZAzTKGJ-P1rH+ZxtD+Dea7-364@mail.gmail.com> (raw)
In-Reply-To: <1299619716.22236.32.camel@pasglop>
On Tue, Mar 8, 2011 at 16:28, Benjamin Herrenschmidt
<benh@kernel.crashing.org> wrote:
> On Tue, 2011-03-08 at 14:57 -0500, Kyle Moffett wrote:
>> Specifically the e500 doesn't have a normal PowerPC FPU, it has a
>> custom FPU built using extended integer registers instead, and it
>> happens to borrow the AltiVec opcode range to do it.
>>
>> When trying to port Debian to the platform we were getting SIGILL's
>> all over the place until binutils got updated to reject all of the
>> unsupported opcodes on this particular platform. =C2=A0Now of course we =
get
>> build errors, but that's a lot easier to debug and fix. :-D
>>
>> Basically, binutils no longer supports "-many" (because too many
>> opcodes conflict), and the test itself would fail anyways (because
>> "dssall" is not valid on "any" PowerPC).
>
> Note that this freescale "SPE" fiasco is just that ... a fiasco :-) I
> don't think there's that many cases of opcode overlap outside of it.
I absolutely agree on the "fiasco" part, although I'm pretty sure that
there's a large number of incompatible ARM variants (even 16-bit vs.
32-bit opcodes). Unfortunately there's a lot of shipped hardware to
be supported and maintained...
> Now regarding the kernel, the best is probably for nasty cases like that
> to use hand coded opcodes (see ppc-opcodes.h) and stick to a more
> "generic" setting for binutils, since it should be possible to build
> kernels that support multiple types of BookE CPUs with different
> floating point units.
The problem is not with the kernel compile itself, but with the 2.12
"dssall" binutils test. Basically, recent binutils treats e500 as
effectively a separate architecture that happens to share *most* of
the opcodes with regular PowerPC. Any opcode which is not understood
by the e500 chip is either convert to an equivalent opcode which is
understood (IE: lwsync =3D> sync), or failed with an error. This means
that the kernel compile aborts early telling me to upgrade to a newer
version of binutils.
This was *critical* for getting an actual Debian distribution
bootstrapped on the e500 cores, because so much software assumes
PowerPC =3D=3D altivec (ffmpeg), hardcodes 'asm("lwsync")' for memory
barriers (80+ packages in Debian), or includes hand-coded
floating-point ASM instructions (libffi). Noisy build errors are
better than silent runtime failures any day of the week.
At the very least that test needs to be turned off if
CONFIG_ALTIVEC=3Dn, because the kernel builds and runs fine otherwise.
Cheers,
Kyle Moffett
next prev parent reply other threads:[~2011-03-08 21:59 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4D6E8932.1010405@zytor.com>
[not found] ` <alpine.LFD.2.00.1103022152420.2701@localhost6.localdomain6>
[not found] ` <4D6EB07C.5040004@zytor.com>
[not found] ` <alpine.LFD.2.00.1103022216180.2701@localhost6.localdomain6>
[not found] ` <4D6ECBDB.6090307@zytor.com>
[not found] ` <20110303083035.GB14854@elte.hu>
2011-03-08 19:57 ` RFC: x86: kill binutils 2.16.x? Kyle Moffett
2011-03-08 21:28 ` Benjamin Herrenschmidt
2011-03-08 21:56 ` Scott Wood
2011-03-08 21:59 ` Kyle Moffett [this message]
2011-03-08 23:13 ` Benjamin Herrenschmidt
2011-03-08 23:43 ` Kyle Moffett
2011-03-09 4:39 ` Segher Boessenkool
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=AANLkTikAnb39XhR0hdZAzTKGJ-P1rH+ZxtD+Dea7-364@mail.gmail.com \
--to=kyle@moffetthome.net \
--cc=Kyle.D.Moffett@boeing.com \
--cc=akpm@linux-foundation.org \
--cc=benh@kernel.crashing.org \
--cc=hpa@zytor.com \
--cc=kumar.gala@freescale.com \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).