• Ard Biesheuvel's avatar
    crypto: arm64/aes-ce-cipher - move assembler code to .S file · 019cd469
    Ard Biesheuvel authored
    Most crypto drivers involving kernel mode NEON take care to put the code
    that actually touches the NEON register file in a separate compilation
    unit, to prevent the compiler from reordering code that preserves or
    restores the NEON context with code that may corrupt it. This is
    necessary because we currently have no way to express the restrictions
    imposed upon use of the NEON in kernel mode in a way that the compiler
    understands.
    
    However, in the case of aes-ce-cipher, it did not seem unreasonable to
    deviate from this rule, given how it does not seem possible for the
    compiler to reorder cross object function calls with asm blocks whose
    in- and output constraints reflect that it reads from and writes to
    memory.
    
    Now that LTO is being proposed for the arm64 kernel, it is time to
    revisit this. The link time optimization may replace the function
    calls to kernel_neon_begin() and kernel_neon_end() with instantiations
    of the IR that make up its implementation, allowing further reordering
    with the asm block.
    
    So let's clean this up, and move the asm() blocks into a separate .S
    file.
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Reviewed-By: default avatarNick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    019cd469
Makefile 2.13 KB