• R
    arm64/lib: add accelerated crc32 routines · 19473a51
    Rongwei Wang 提交于
    to #26730415
    
    commit 7481cddf29ede204b475facc40e6f65459939881 upstream.
    
    Unlike crc32c(), which is wired up to the crypto API internally so the
    optimal driver is selected based on the platform's capabilities,
    crc32_le() is implemented as a library function using a slice-by-8 table
    based C implementation. Even though few of the call sites may be
    bottlenecks, calling a time variant implementation with a non-negligible
    D-cache footprint is a bit of a waste, given that ARMv8.1 and up
    mandates
    support for the CRC32 instructions that were optional in ARMv8.0, but
    are
    already widely available, even on the Cortex-A53 based Raspberry Pi.
    
    So implement routines that use these instructions if available, and fall
    back to the existing generic routines otherwise. The selection is based
    on alternatives patching.
    
    Note that this unconditionally selects CONFIG_CRC32 as a builtin. Since
    CRC32 is relied upon by core functionality such as CONFIG_OF_FLATTREE,
    this just codifies the status quo.
    Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: NRongwei Wang <rongwei.wang@linux.alibaba.com>
    Acked-by: NZou Cao <zoucao@linux.alibaba.com>
    19473a51
crc32.S 1.2 KB