Skip to content

Commit ada66f1

Browse files
ctmarinaswilldeacon
authored andcommitted
arm64: Reorder the macro arguments in the copy routines
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 <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Will Deacon <[email protected]>
1 parent 76085af commit ada66f1

File tree

4 files changed

+64
-64
lines changed

4 files changed

+64
-64
lines changed

arch/arm64/lib/copy_from_user.S

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,36 +20,36 @@
2020
* x0 - bytes not copied
2121
*/
2222

23-
.macro ldrb1 ptr, regB, val
24-
uao_user_alternative 9998f, ldrb, ldtrb, \ptr, \regB, \val
23+
.macro ldrb1 reg, ptr, val
24+
uao_user_alternative 9998f, ldrb, ldtrb, \reg, \ptr, \val
2525
.endm
2626

27-
.macro strb1 ptr, regB, val
28-
strb \ptr, [\regB], \val
27+
.macro strb1 reg, ptr, val
28+
strb \reg, [\ptr], \val
2929
.endm
3030

31-
.macro ldrh1 ptr, regB, val
32-
uao_user_alternative 9998f, ldrh, ldtrh, \ptr, \regB, \val
31+
.macro ldrh1 reg, ptr, val
32+
uao_user_alternative 9998f, ldrh, ldtrh, \reg, \ptr, \val
3333
.endm
3434

35-
.macro strh1 ptr, regB, val
36-
strh \ptr, [\regB], \val
35+
.macro strh1 reg, ptr, val
36+
strh \reg, [\ptr], \val
3737
.endm
3838

39-
.macro ldr1 ptr, regB, val
40-
uao_user_alternative 9998f, ldr, ldtr, \ptr, \regB, \val
39+
.macro ldr1 reg, ptr, val
40+
uao_user_alternative 9998f, ldr, ldtr, \reg, \ptr, \val
4141
.endm
4242

43-
.macro str1 ptr, regB, val
44-
str \ptr, [\regB], \val
43+
.macro str1 reg, ptr, val
44+
str \reg, [\ptr], \val
4545
.endm
4646

47-
.macro ldp1 ptr, regB, regC, val
48-
uao_ldp 9998f, \ptr, \regB, \regC, \val
47+
.macro ldp1 reg1, reg2, ptr, val
48+
uao_ldp 9998f, \reg1, \reg2, \ptr, \val
4949
.endm
5050

51-
.macro stp1 ptr, regB, regC, val
52-
stp \ptr, \regB, [\regC], \val
51+
.macro stp1 reg1, reg2, ptr, val
52+
stp \reg1, \reg2, [\ptr], \val
5353
.endm
5454

5555
end .req x5

arch/arm64/lib/copy_in_user.S

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,36 +21,36 @@
2121
* Returns:
2222
* x0 - bytes not copied
2323
*/
24-
.macro ldrb1 ptr, regB, val
25-
uao_user_alternative 9998f, ldrb, ldtrb, \ptr, \regB, \val
24+
.macro ldrb1 reg, ptr, val
25+
uao_user_alternative 9998f, ldrb, ldtrb, \reg, \ptr, \val
2626
.endm
2727

28-
.macro strb1 ptr, regB, val
29-
uao_user_alternative 9998f, strb, sttrb, \ptr, \regB, \val
28+
.macro strb1 reg, ptr, val
29+
uao_user_alternative 9998f, strb, sttrb, \reg, \ptr, \val
3030
.endm
3131

32-
.macro ldrh1 ptr, regB, val
33-
uao_user_alternative 9998f, ldrh, ldtrh, \ptr, \regB, \val
32+
.macro ldrh1 reg, ptr, val
33+
uao_user_alternative 9998f, ldrh, ldtrh, \reg, \ptr, \val
3434
.endm
3535

36-
.macro strh1 ptr, regB, val
37-
uao_user_alternative 9998f, strh, sttrh, \ptr, \regB, \val
36+
.macro strh1 reg, ptr, val
37+
uao_user_alternative 9998f, strh, sttrh, \reg, \ptr, \val
3838
.endm
3939

40-
.macro ldr1 ptr, regB, val
41-
uao_user_alternative 9998f, ldr, ldtr, \ptr, \regB, \val
40+
.macro ldr1 reg, ptr, val
41+
uao_user_alternative 9998f, ldr, ldtr, \reg, \ptr, \val
4242
.endm
4343

44-
.macro str1 ptr, regB, val
45-
uao_user_alternative 9998f, str, sttr, \ptr, \regB, \val
44+
.macro str1 reg, ptr, val
45+
uao_user_alternative 9998f, str, sttr, \reg, \ptr, \val
4646
.endm
4747

48-
.macro ldp1 ptr, regB, regC, val
49-
uao_ldp 9998f, \ptr, \regB, \regC, \val
48+
.macro ldp1 reg1, reg2, ptr, val
49+
uao_ldp 9998f, \reg1, \reg2, \ptr, \val
5050
.endm
5151

52-
.macro stp1 ptr, regB, regC, val
53-
uao_stp 9998f, \ptr, \regB, \regC, \val
52+
.macro stp1 reg1, reg2, ptr, val
53+
uao_stp 9998f, \reg1, \reg2, \ptr, \val
5454
.endm
5555

5656
end .req x5

arch/arm64/lib/copy_to_user.S

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,36 +19,36 @@
1919
* Returns:
2020
* x0 - bytes not copied
2121
*/
22-
.macro ldrb1 ptr, regB, val
23-
ldrb \ptr, [\regB], \val
22+
.macro ldrb1 reg, ptr, val
23+
ldrb \reg, [\ptr], \val
2424
.endm
2525

26-
.macro strb1 ptr, regB, val
27-
uao_user_alternative 9998f, strb, sttrb, \ptr, \regB, \val
26+
.macro strb1 reg, ptr, val
27+
uao_user_alternative 9998f, strb, sttrb, \reg, \ptr, \val
2828
.endm
2929

30-
.macro ldrh1 ptr, regB, val
31-
ldrh \ptr, [\regB], \val
30+
.macro ldrh1 reg, ptr, val
31+
ldrh \reg, [\ptr], \val
3232
.endm
3333

34-
.macro strh1 ptr, regB, val
35-
uao_user_alternative 9998f, strh, sttrh, \ptr, \regB, \val
34+
.macro strh1 reg, ptr, val
35+
uao_user_alternative 9998f, strh, sttrh, \reg, \ptr, \val
3636
.endm
3737

38-
.macro ldr1 ptr, regB, val
39-
ldr \ptr, [\regB], \val
38+
.macro ldr1 reg, ptr, val
39+
ldr \reg, [\ptr], \val
4040
.endm
4141

42-
.macro str1 ptr, regB, val
43-
uao_user_alternative 9998f, str, sttr, \ptr, \regB, \val
42+
.macro str1 reg, ptr, val
43+
uao_user_alternative 9998f, str, sttr, \reg, \ptr, \val
4444
.endm
4545

46-
.macro ldp1 ptr, regB, regC, val
47-
ldp \ptr, \regB, [\regC], \val
46+
.macro ldp1 reg1, reg2, ptr, val
47+
ldp \reg1, \reg2, [\ptr], \val
4848
.endm
4949

50-
.macro stp1 ptr, regB, regC, val
51-
uao_stp 9998f, \ptr, \regB, \regC, \val
50+
.macro stp1 reg1, reg2, ptr, val
51+
uao_stp 9998f, \reg1, \reg2, \ptr, \val
5252
.endm
5353

5454
end .req x5

arch/arm64/lib/memcpy.S

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,36 +24,36 @@
2424
* Returns:
2525
* x0 - dest
2626
*/
27-
.macro ldrb1 ptr, regB, val
28-
ldrb \ptr, [\regB], \val
27+
.macro ldrb1 reg, ptr, val
28+
ldrb \reg, [\ptr], \val
2929
.endm
3030

31-
.macro strb1 ptr, regB, val
32-
strb \ptr, [\regB], \val
31+
.macro strb1 reg, ptr, val
32+
strb \reg, [\ptr], \val
3333
.endm
3434

35-
.macro ldrh1 ptr, regB, val
36-
ldrh \ptr, [\regB], \val
35+
.macro ldrh1 reg, ptr, val
36+
ldrh \reg, [\ptr], \val
3737
.endm
3838

39-
.macro strh1 ptr, regB, val
40-
strh \ptr, [\regB], \val
39+
.macro strh1 reg, ptr, val
40+
strh \reg, [\ptr], \val
4141
.endm
4242

43-
.macro ldr1 ptr, regB, val
44-
ldr \ptr, [\regB], \val
43+
.macro ldr1 reg, ptr, val
44+
ldr \reg, [\ptr], \val
4545
.endm
4646

47-
.macro str1 ptr, regB, val
48-
str \ptr, [\regB], \val
47+
.macro str1 reg, ptr, val
48+
str \reg, [\ptr], \val
4949
.endm
5050

51-
.macro ldp1 ptr, regB, regC, val
52-
ldp \ptr, \regB, [\regC], \val
51+
.macro ldp1 reg1, reg2, ptr, val
52+
ldp \reg1, \reg2, [\ptr], \val
5353
.endm
5454

55-
.macro stp1 ptr, regB, regC, val
56-
stp \ptr, \regB, [\regC], \val
55+
.macro stp1 reg1, reg2, ptr, val
56+
stp \reg1, \reg2, [\ptr], \val
5757
.endm
5858

5959
.weak memcpy

0 commit comments

Comments
 (0)