• Ard Biesheuvel's avatar
    ARM: p2v: switch to MOVW for Thumb2 and ARM/LPAE · e8e00f5a
    Ard Biesheuvel authored
    In preparation for reducing the phys-to-virt minimum relative alignment
    from 16 MiB to 2 MiB, switch to patchable sequences involving MOVW
    instructions that can more easily be manipulated to carry a 12-bit
    immediate. Note that the non-LPAE ARM sequence is not updated: MOVW
    may not be supported on non-LPAE platforms, and the sequence itself
    can be updated more easily to apply the 12 bits of displacement.
    
    For Thumb2, which has many more versions of opcodes, switch to a sequence
    that can be patched by the same patching code for both versions. Note
    that the Thumb2 opcodes for MOVW and MVN are unambiguous, and have no
    rotation bits in their immediate fields, so there is no need to use
    placeholder constants in the asm blocks.
    
    While at it, drop the 'volatile' qualifiers from the asm blocks: the
    code does not have any side effects that are invisible to the compiler,
    so it is free to omit these sequences if the outputs are not used.
    Suggested-by: default avatarRussell King <linux@armlinux.org.uk>
    Acked-by: default avatarNicolas Pitre <nico@fluxnic.net>
    Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    e8e00f5a
memory.h 10.3 KB