arm64: Reorder the macro arguments in the copy routines
authorCatalin Marinas <catalin.marinas@arm.com>
Wed, 29 Apr 2020 18:37:02 +0000 (19:37 +0100)
committerWill Deacon <will@kernel.org>
Wed, 29 Apr 2020 20:50:01 +0000 (21:50 +0100)
The current argument order is obviously buggy (memcpy.S):

macro strb1 ptr, regB, val
strb \ptr, [\regB], \val
endm

However, it cancels out as the calling sites in copy_template.S pass the
address as the regB argument.

Mechanically reorder the arguments to match the instruction mnemonics.
There is no difference in objdump before and after this patch.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20200429183702.28445-1-catalin.marinas@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/lib/copy_from_user.S
arch/arm64/lib/copy_in_user.S
arch/arm64/lib/copy_to_user.S
arch/arm64/lib/memcpy.S

index 8e25e89ad01fd7daa41065bae7e1c9745dce986b..0f8a3a9e3795b64b6cb0e53c0953e3b1833884e4 100644 (file)
  *     x0 - bytes not copied
  */
 
-       .macro ldrb1 ptr, regB, val
-       uao_user_alternative 9998f, ldrb, ldtrb, \ptr, \regB, \val
+       .macro ldrb1 reg, ptr, val
+       uao_user_alternative 9998f, ldrb, ldtrb, \reg, \ptr, \val
        .endm
 
-       .macro strb1 ptr, regB, val
-       strb \ptr, [\regB], \val
+       .macro strb1 reg, ptr, val
+       strb \reg, [\ptr], \val
        .endm
 
-       .macro ldrh1 ptr, regB, val
-       uao_user_alternative 9998f, ldrh, ldtrh, \ptr, \regB, \val
+       .macro ldrh1 reg, ptr, val
+       uao_user_alternative 9998f, ldrh, ldtrh, \reg, \ptr, \val
        .endm
 
-       .macro strh1 ptr, regB, val
-       strh \ptr, [\regB], \val
+       .macro strh1 reg, ptr, val
+       strh \reg, [\ptr], \val
        .endm
 
-       .macro ldr1 ptr, regB, val
-       uao_user_alternative 9998f, ldr, ldtr, \ptr, \regB, \val
+       .macro ldr1 reg, ptr, val
+       uao_user_alternative 9998f, ldr, ldtr, \reg, \ptr, \val
        .endm
 
-       .macro str1 ptr, regB, val
-       str \ptr, [\regB], \val
+       .macro str1 reg, ptr, val
+       str \reg, [\ptr], \val
        .endm
 
-       .macro ldp1 ptr, regB, regC, val
-       uao_ldp 9998f, \ptr, \regB, \regC, \val
+       .macro ldp1 reg1, reg2, ptr, val
+       uao_ldp 9998f, \reg1, \reg2, \ptr, \val
        .endm
 
-       .macro stp1 ptr, regB, regC, val
-       stp \ptr, \regB, [\regC], \val
+       .macro stp1 reg1, reg2, ptr, val
+       stp \reg1, \reg2, [\ptr], \val
        .endm
 
 end    .req    x5
index 667139013ed171ef4b5de1ba916941060858475c..80e37ada0ee1a501d5d4fb9fe87db9fc5853af2b 100644 (file)
  * Returns:
  *     x0 - bytes not copied
  */
-       .macro ldrb1 ptr, regB, val
-       uao_user_alternative 9998f, ldrb, ldtrb, \ptr, \regB, \val
+       .macro ldrb1 reg, ptr, val
+       uao_user_alternative 9998f, ldrb, ldtrb, \reg, \ptr, \val
        .endm
 
-       .macro strb1 ptr, regB, val
-       uao_user_alternative 9998f, strb, sttrb, \ptr, \regB, \val
+       .macro strb1 reg, ptr, val
+       uao_user_alternative 9998f, strb, sttrb, \reg, \ptr, \val
        .endm
 
-       .macro ldrh1 ptr, regB, val
-       uao_user_alternative 9998f, ldrh, ldtrh, \ptr, \regB, \val
+       .macro ldrh1 reg, ptr, val
+       uao_user_alternative 9998f, ldrh, ldtrh, \reg, \ptr, \val
        .endm
 
-       .macro strh1 ptr, regB, val
-       uao_user_alternative 9998f, strh, sttrh, \ptr, \regB, \val
+       .macro strh1 reg, ptr, val
+       uao_user_alternative 9998f, strh, sttrh, \reg, \ptr, \val
        .endm
 
-       .macro ldr1 ptr, regB, val
-       uao_user_alternative 9998f, ldr, ldtr, \ptr, \regB, \val
+       .macro ldr1 reg, ptr, val
+       uao_user_alternative 9998f, ldr, ldtr, \reg, \ptr, \val
        .endm
 
-       .macro str1 ptr, regB, val
-       uao_user_alternative 9998f, str, sttr, \ptr, \regB, \val
+       .macro str1 reg, ptr, val
+       uao_user_alternative 9998f, str, sttr, \reg, \ptr, \val
        .endm
 
-       .macro ldp1 ptr, regB, regC, val
-       uao_ldp 9998f, \ptr, \regB, \regC, \val
+       .macro ldp1 reg1, reg2, ptr, val
+       uao_ldp 9998f, \reg1, \reg2, \ptr, \val
        .endm
 
-       .macro stp1 ptr, regB, regC, val
-       uao_stp 9998f, \ptr, \regB, \regC, \val
+       .macro stp1 reg1, reg2, ptr, val
+       uao_stp 9998f, \reg1, \reg2, \ptr, \val
        .endm
 
 end    .req    x5
index 1a104d0089f3a4036574bb6d1c5ac9796740dc5b..4ec59704b8f2d19933ec1f39ca48e76315309609 100644 (file)
  * Returns:
  *     x0 - bytes not copied
  */
-       .macro ldrb1 ptr, regB, val
-       ldrb  \ptr, [\regB], \val
+       .macro ldrb1 reg, ptr, val
+       ldrb  \reg, [\ptr], \val
        .endm
 
-       .macro strb1 ptr, regB, val
-       uao_user_alternative 9998f, strb, sttrb, \ptr, \regB, \val
+       .macro strb1 reg, ptr, val
+       uao_user_alternative 9998f, strb, sttrb, \reg, \ptr, \val
        .endm
 
-       .macro ldrh1 ptr, regB, val
-       ldrh  \ptr, [\regB], \val
+       .macro ldrh1 reg, ptr, val
+       ldrh  \reg, [\ptr], \val
        .endm
 
-       .macro strh1 ptr, regB, val
-       uao_user_alternative 9998f, strh, sttrh, \ptr, \regB, \val
+       .macro strh1 reg, ptr, val
+       uao_user_alternative 9998f, strh, sttrh, \reg, \ptr, \val
        .endm
 
-       .macro ldr1 ptr, regB, val
-       ldr \ptr, [\regB], \val
+       .macro ldr1 reg, ptr, val
+       ldr \reg, [\ptr], \val
        .endm
 
-       .macro str1 ptr, regB, val
-       uao_user_alternative 9998f, str, sttr, \ptr, \regB, \val
+       .macro str1 reg, ptr, val
+       uao_user_alternative 9998f, str, sttr, \reg, \ptr, \val
        .endm
 
-       .macro ldp1 ptr, regB, regC, val
-       ldp \ptr, \regB, [\regC], \val
+       .macro ldp1 reg1, reg2, ptr, val
+       ldp \reg1, \reg2, [\ptr], \val
        .endm
 
-       .macro stp1 ptr, regB, regC, val
-       uao_stp 9998f, \ptr, \regB, \regC, \val
+       .macro stp1 reg1, reg2, ptr, val
+       uao_stp 9998f, \reg1, \reg2, \ptr, \val
        .endm
 
 end    .req    x5
index 9f382adfa88a221b481c1ec4bc94ade038e754af..e0bf83d556f23a48883562087d544a714dbe04ca 100644 (file)
  * Returns:
  *     x0 - dest
  */
-       .macro ldrb1 ptr, regB, val
-       ldrb  \ptr, [\regB], \val
+       .macro ldrb1 reg, ptr, val
+       ldrb  \reg, [\ptr], \val
        .endm
 
-       .macro strb1 ptr, regB, val
-       strb \ptr, [\regB], \val
+       .macro strb1 reg, ptr, val
+       strb \reg, [\ptr], \val
        .endm
 
-       .macro ldrh1 ptr, regB, val
-       ldrh  \ptr, [\regB], \val
+       .macro ldrh1 reg, ptr, val
+       ldrh  \reg, [\ptr], \val
        .endm
 
-       .macro strh1 ptr, regB, val
-       strh \ptr, [\regB], \val
+       .macro strh1 reg, ptr, val
+       strh \reg, [\ptr], \val
        .endm
 
-       .macro ldr1 ptr, regB, val
-       ldr \ptr, [\regB], \val
+       .macro ldr1 reg, ptr, val
+       ldr \reg, [\ptr], \val
        .endm
 
-       .macro str1 ptr, regB, val
-       str \ptr, [\regB], \val
+       .macro str1 reg, ptr, val
+       str \reg, [\ptr], \val
        .endm
 
-       .macro ldp1 ptr, regB, regC, val
-       ldp \ptr, \regB, [\regC], \val
+       .macro ldp1 reg1, reg2, ptr, val
+       ldp \reg1, \reg2, [\ptr], \val
        .endm
 
-       .macro stp1 ptr, regB, regC, val
-       stp \ptr, \regB, [\regC], \val
+       .macro stp1 reg1, reg2, ptr, val
+       stp \reg1, \reg2, [\ptr], \val
        .endm
 
        .weak memcpy