[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130221005221.15279b1372501af12c1e4f32@freescale.com>
Date: Thu, 21 Feb 2013 00:52:21 -0600
From: Kim Phillips <kim.phillips@...escale.com>
To: Nicolas Pitre <nico@...xnic.net>
CC: "Woodhouse, David" <david.woodhouse@...el.com>,
Russell King - ARM Linux <linux@....linux.org.uk>,
Borislav Petkov <bp@...en8.de>,
Andrew Morton <akpm@...ux-foundation.org>,
Daniel Santos <daniel.santos@...ox.com>,
David Rientjes <rientjes@...gle.com>,
Rusty Russell <rusty@...tcorp.com.au>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Rob Herring <robherring2@...il.com>
Subject: Re: [RFC] arm: use built-in byte swap function
On Wed, 20 Feb 2013 23:29:58 -0500
Nicolas Pitre <nico@...xnic.net> wrote:
> On Wed, 20 Feb 2013, Kim Phillips wrote:
>
> > On Wed, 20 Feb 2013 10:43:18 -0500
> > Nicolas Pitre <nico@...xnic.net> wrote:
> >
> > > On Wed, 20 Feb 2013, Woodhouse, David wrote:
> > > > On Wed, 2013-02-20 at 09:06 -0500, Nicolas Pitre wrote:
> > > > > ... in which case there is no harm shipping a .c file and trivially
> > > > > enforcing -O2, the rest being equal.
> > > >
> > > > For today's compilers, unless the wind changes.
> > >
> > > We'll adapt if necessary. Going with -O2 should remain pretty safe anyway.
> >
> > Alas, not so for gcc 4.4 - I had forgotten I had tested
> > Ubuntu/Linaro 4.4.7-1ubuntu2 here:
> >
> > https://patchwork.kernel.org/patch/2101491/
> >
> > add -O2 to that test script and gcc 4.4 *always* emits calls to
> > __bswap[sd]i2, even with -march=armv6k+.
argh, sorry - that script was testing support for
__builtin_bswap{16,32,64} directly, which isn't the same as testing
code generation of a byte swap pattern in C.
> Crap. OK, assembly code is the way to go then.
>
> > I'll try working on an assembly version given it probably
> > makes more sense, future-gcc-immunity-wise.
>
> Agreed.
I'll still try the assembly approach - gcc 4.4's armv6 output looks
worse than both the pre-armv6 and post-armv6 __arch_swab32
implementations currently in use:
mov ip, sp
push {fp, ip, lr, pc}
sub fp, ip, #4
and r2, r0, #65280 ; 0xff00
lsl ip, r0, #24
orr r1, ip, r0, lsr #24
and r0, r0, #16711680 ; 0xff0000
orr r3, r1, r2, lsl #8
orr r0, r3, r0, lsr #8
ldm sp, {fp, sp, pc}
Kim
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists