On Mon, Sep 21, 2020 at 5:41 PM Ard Biesheuvel <ardb@xxxxxxxxxx> wrote: > 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: Russell King <linux@xxxxxxxxxxxxxxx> > Signed-off-by: Ard Biesheuvel <ardb@xxxxxxxxxx> Already the nice comments explaining what is going on here makes the patch highly valuable. It was opaque to me until I read the comments in this patch. Now it is just hard to understand instead of hopeless to understand (for my limited intellect): Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx> Yours, Linus Walleij