lkml.org 
[lkml]   [2019]   [Oct]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH v3 02/17] arm64/lib: copy_page: avoid x18 register in assembler code
    From
    Register x18 will no longer be used as a caller save register in the
    future, so stop using it in the copy_page() code.

    Link: https://patchwork.kernel.org/patch/9836869/
    Co-developed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    [ changed the offset and bias to be explicit ]
    Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
    Reviewed-by: Mark Rutland <mark.rutland@arm.com>
    ---
    arch/arm64/lib/copy_page.S | 38 +++++++++++++++++++-------------------
    1 file changed, 19 insertions(+), 19 deletions(-)

    diff --git a/arch/arm64/lib/copy_page.S b/arch/arm64/lib/copy_page.S
    index bbb8562396af..290dd3c5266c 100644
    --- a/arch/arm64/lib/copy_page.S
    +++ b/arch/arm64/lib/copy_page.S
    @@ -34,45 +34,45 @@ alternative_else_nop_endif
    ldp x14, x15, [x1, #96]
    ldp x16, x17, [x1, #112]

    - mov x18, #(PAGE_SIZE - 128)
    + add x0, x0, #256
    add x1, x1, #128
    1:
    - subs x18, x18, #128
    + tst x0, #(PAGE_SIZE - 1)

    alternative_if ARM64_HAS_NO_HW_PREFETCH
    prfm pldl1strm, [x1, #384]
    alternative_else_nop_endif

    - stnp x2, x3, [x0]
    + stnp x2, x3, [x0, #-256]
    ldp x2, x3, [x1]
    - stnp x4, x5, [x0, #16]
    + stnp x4, x5, [x0, #16 - 256]
    ldp x4, x5, [x1, #16]
    - stnp x6, x7, [x0, #32]
    + stnp x6, x7, [x0, #32 - 256]
    ldp x6, x7, [x1, #32]
    - stnp x8, x9, [x0, #48]
    + stnp x8, x9, [x0, #48 - 256]
    ldp x8, x9, [x1, #48]
    - stnp x10, x11, [x0, #64]
    + stnp x10, x11, [x0, #64 - 256]
    ldp x10, x11, [x1, #64]
    - stnp x12, x13, [x0, #80]
    + stnp x12, x13, [x0, #80 - 256]
    ldp x12, x13, [x1, #80]
    - stnp x14, x15, [x0, #96]
    + stnp x14, x15, [x0, #96 - 256]
    ldp x14, x15, [x1, #96]
    - stnp x16, x17, [x0, #112]
    + stnp x16, x17, [x0, #112 - 256]
    ldp x16, x17, [x1, #112]

    add x0, x0, #128
    add x1, x1, #128

    - b.gt 1b
    + b.ne 1b

    - stnp x2, x3, [x0]
    - stnp x4, x5, [x0, #16]
    - stnp x6, x7, [x0, #32]
    - stnp x8, x9, [x0, #48]
    - stnp x10, x11, [x0, #64]
    - stnp x12, x13, [x0, #80]
    - stnp x14, x15, [x0, #96]
    - stnp x16, x17, [x0, #112]
    + stnp x2, x3, [x0, #-256]
    + stnp x4, x5, [x0, #16 - 256]
    + stnp x6, x7, [x0, #32 - 256]
    + stnp x8, x9, [x0, #48 - 256]
    + stnp x10, x11, [x0, #64 - 256]
    + stnp x12, x13, [x0, #80 - 256]
    + stnp x14, x15, [x0, #96 - 256]
    + stnp x16, x17, [x0, #112 - 256]

    ret
    ENDPROC(copy_page)
    --
    2.24.0.rc0.303.g954a862665-goog
    \
     
     \ /
      Last update: 2019-10-31 17:48    [W:4.316 / U:0.768 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site