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 8e25e89..0f8a3a9 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 6671390..80e37ad 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 1a104d0..4ec5970 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 9f382ad..e0bf83d 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