bcm27xx: add support for linux v5.15
[openwrt/staging/chunkeey.git] / target / linux / bcm27xx / patches-5.15 / 950-0651-arm-Fix-custom-rpi-__memset32-and-__memset64.patch
1 From 43e769a2c40287d36c54438898a8b7d9358adba9 Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.com>
3 Date: Tue, 11 Jan 2022 10:48:30 +0000
4 Subject: [PATCH] arm: Fix custom rpi __memset32 and __memset64
5
6 See: https://github.com/raspberrypi/linux/issues/4798
7
8 Signed-off-by: Phil Elwell <phil@raspberrypi.com>
9 ---
10 arch/arm/lib/memset_rpi.S | 12 +++++++-----
11 1 file changed, 7 insertions(+), 5 deletions(-)
12
13 --- a/arch/arm/lib/memset_rpi.S
14 +++ b/arch/arm/lib/memset_rpi.S
15 @@ -53,8 +53,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
16 ENTRY(mmioset)
17 ENTRY(memset)
18 ENTRY(__memset)
19 -ENTRY(__memset32)
20 -ENTRY(__memset64)
21
22 S .req a1
23 DAT0 .req a2
24 @@ -64,10 +62,14 @@ ENTRY(__memset64)
25 DAT3 .req lr
26
27 orr DAT0, DAT0, DAT0, lsl #8
28 - push {S, lr}
29 orr DAT0, DAT0, DAT0, lsl #16
30 +
31 +ENTRY(__memset32)
32 mov DAT1, DAT0
33
34 +ENTRY(__memset64)
35 + push {S, lr}
36 +
37 /* See if we're guaranteed to have at least one 16-byte aligned 16-byte write */
38 cmp N, #31
39 blo 170f
40 @@ -89,7 +91,7 @@ ENTRY(__memset64)
41 stmcsia S!, {DAT0, DAT1}
42 164: /* Delayed set up of DAT2 and DAT3 so we could use them as scratch registers above */
43 mov DAT2, DAT0
44 - mov DAT3, DAT0
45 + mov DAT3, DAT1
46 /* Now the inner loop of 16-byte stores */
47 165: stmia S!, {DAT0, DAT1, DAT2, DAT3}
48 subs N, N, #16
49 @@ -105,7 +107,7 @@ ENTRY(__memset64)
50
51 170: /* Short case */
52 mov DAT2, DAT0
53 - mov DAT3, DAT0
54 + mov DAT3, DAT1
55 tst S, #3
56 beq 174f
57 172: subs N, N, #1