[PATCH] ARM: Add optimised swahb32() byteswap helper for v6 and above

Dave Martin dave.martin at linaro.org
Fri Nov 25 05:12:32 EST 2011


On Wed, Nov 23, 2011 at 11:09:00AM -0500, Nicolas Pitre wrote:
> On Wed, 23 Nov 2011, Dave Martin wrote:
> 
> > ARMv6 and later processors have the REV16 instruction, which swaps
> > the bytes within each halfword of a register value.
> > 
> > This is already used to implement swab16(), but since the native
> > operation performaed by REV16 is actually swahb32(), this patch
> > renames the existing swab16() helper accordingly and defines
> > __arch_swab16() in terms of it.  This allows calls to both swab16()
> > and swahb32() to be optimised.
> > 
> > The compiler's generated code might improve someday, but as of
> > 4.5.2 the code generated for pure C implementing these 16-bit
> > bytesswaps remains pessimal.
> > 
> > swahb32() is useful for converting 32-bit Thumb instructions
> > between integer and memory representation on BE8 platforms (among
> > other uses).
> > 
> > Signed-off-by: Dave Martin <dave.martin at linaro.org>
> 
> Reviewed-by: Nicolas Pitre <nico at linaro.org>

Submitted to Russell's patch system as 7173/1.

Cheers
---Dave



More information about the linux-arm-kernel mailing list