GNU Linux-libre 4.14.266-gnu1
[releases.git] / arch / cris / arch-v32 / kernel / cacheflush.S
1 /* SPDX-License-Identifier: GPL-2.0 */
2         .global cris_flush_cache_range
3         .type   cris_flush_cache_range, @function
4 cris_flush_cache_range:
5         move.d 1024, $r12
6         cmp.d $r11, $r12
7         bhi cris_flush_1KB
8         nop
9         add.d $r10, $r11
10         ftagd [$r10]
11 cris_flush_last:
12         addq 32, $r10
13         cmp.d $r11, $r10
14         blt cris_flush_last
15         ftagd [$r10]
16         ret
17         nop
18 cris_flush_1KB:
19         ftagd [$r10]
20         addq 32, $r10
21         ftagd [$r10]
22         addq 32, $r10
23         ftagd [$r10]
24         addq 32, $r10
25         ftagd [$r10]
26         addq 32, $r10
27         ftagd [$r10]
28         addq 32, $r10
29         ftagd [$r10]
30         addq 32, $r10
31         ftagd [$r10]
32         addq 32, $r10
33         ftagd [$r10]
34         addq 32, $r10
35         ftagd [$r10]
36         addq 32, $r10
37         ftagd [$r10]
38         addq 32, $r10
39         ftagd [$r10]
40         addq 32, $r10
41         ftagd [$r10]
42         addq 32, $r10
43         ftagd [$r10]
44         addq 32, $r10
45         ftagd [$r10]
46         addq 32, $r10
47         ftagd [$r10]
48         addq 32, $r10
49         ftagd [$r10]
50         addq 32, $r10
51         ftagd [$r10]
52         addq 32, $r10
53         ftagd [$r10]
54         addq 32, $r10
55         ftagd [$r10]
56         addq 32, $r10
57         ftagd [$r10]
58         addq 32, $r10
59         ftagd [$r10]
60         addq 32, $r10
61         ftagd [$r10]
62         addq 32, $r10
63         ftagd [$r10]
64         addq 32, $r10
65         ftagd [$r10]
66         addq 32, $r10
67         ftagd [$r10]
68         addq 32, $r10
69         ftagd [$r10]
70         addq 32, $r10
71         ftagd [$r10]
72         addq 32, $r10
73         ftagd [$r10]
74         addq 32, $r10
75         ftagd [$r10]
76         addq 32, $r10
77         ftagd [$r10]
78         addq 32, $r10
79         ftagd [$r10]
80         addq 32, $r10
81         ftagd [$r10]
82         addq 32, $r10
83         ba cris_flush_cache_range
84         sub.d $r12, $r11
85         .size   cris_flush_cache_range, . - cris_flush_cache_range
86
87         .global cris_flush_cache
88         .type   cris_flush_cache, @function
89 cris_flush_cache:
90         moveq 0, $r10
91 cris_flush_line:
92         move.d 16*1024, $r11
93         addq 16, $r10
94         cmp.d $r10, $r11
95         blt cris_flush_line
96         fidxd [$r10]
97         ret
98         nop
99         .size   cris_flush_cache, . - cris_flush_cache
100