• Dave Martin's avatar
    ARM: 7173/1: Add optimised swahb32() byteswap helper for v6 and above · df0e74da
    Dave Martin authored
    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: default avatarDave Martin <dave.martin@linaro.org>
    Reviewed-by: default avatarNicolas Pitre <nico@linaro.org>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    df0e74da
swab.h 1.7 KB