hc
2024-01-04 1543e317f1da31b75942316931e8f491a8920811
kernel/arch/arm/mm/copypage-xscale.c
....@@ -1,11 +1,8 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * linux/arch/arm/lib/copypage-xscale.S
34 *
45 * Copyright (C) 1995-2005 Russell King
5
- *
6
- * This program is free software; you can redistribute it and/or modify
7
- * it under the terms of the GNU General Public License version 2 as
8
- * published by the Free Software Foundation.
96 *
107 * This handles the mini data cache, as found on SA11x0 and XScale
118 * processors. When we copy a user page page, we map it in such a way
....@@ -17,7 +14,6 @@
1714 #include <linux/mm.h>
1815 #include <linux/highmem.h>
1916
20
-#include <asm/pgtable.h>
2117 #include <asm/tlbflush.h>
2218 #include <asm/cacheflush.h>
2319
....@@ -45,6 +41,7 @@
4541 * when prefetching destination as well. (NP)
4642 */
4743 asm volatile ("\
44
+.arch xscale \n\
4845 pld [%0, #0] \n\
4946 pld [%0, #32] \n\
5047 pld [%1, #0] \n\
....@@ -53,26 +50,26 @@
5350 pld [%0, #96] \n\
5451 pld [%1, #64] \n\
5552 pld [%1, #96] \n\
56
-2: ldrd r2, [%0], #8 \n\
57
- ldrd r4, [%0], #8 \n\
53
+2: ldrd r2, r3, [%0], #8 \n\
54
+ ldrd r4, r5, [%0], #8 \n\
5855 mov ip, %1 \n\
59
- strd r2, [%1], #8 \n\
60
- ldrd r2, [%0], #8 \n\
61
- strd r4, [%1], #8 \n\
62
- ldrd r4, [%0], #8 \n\
63
- strd r2, [%1], #8 \n\
64
- strd r4, [%1], #8 \n\
56
+ strd r2, r3, [%1], #8 \n\
57
+ ldrd r2, r3, [%0], #8 \n\
58
+ strd r4, r5, [%1], #8 \n\
59
+ ldrd r4, r5, [%0], #8 \n\
60
+ strd r2, r3, [%1], #8 \n\
61
+ strd r4, r5, [%1], #8 \n\
6562 mcr p15, 0, ip, c7, c10, 1 @ clean D line\n\
66
- ldrd r2, [%0], #8 \n\
63
+ ldrd r2, r3, [%0], #8 \n\
6764 mcr p15, 0, ip, c7, c6, 1 @ invalidate D line\n\
68
- ldrd r4, [%0], #8 \n\
65
+ ldrd r4, r5, [%0], #8 \n\
6966 mov ip, %1 \n\
70
- strd r2, [%1], #8 \n\
71
- ldrd r2, [%0], #8 \n\
72
- strd r4, [%1], #8 \n\
73
- ldrd r4, [%0], #8 \n\
74
- strd r2, [%1], #8 \n\
75
- strd r4, [%1], #8 \n\
67
+ strd r2, r3, [%1], #8 \n\
68
+ ldrd r2, r3, [%0], #8 \n\
69
+ strd r4, r5, [%1], #8 \n\
70
+ ldrd r4, r5, [%0], #8 \n\
71
+ strd r2, r3, [%1], #8 \n\
72
+ strd r4, r5, [%1], #8 \n\
7673 mcr p15, 0, ip, c7, c10, 1 @ clean D line\n\
7774 subs %2, %2, #1 \n\
7875 mcr p15, 0, ip, c7, c6, 1 @ invalidate D line\n\
....@@ -109,15 +106,16 @@
109106 xscale_mc_clear_user_highpage(struct page *page, unsigned long vaddr)
110107 {
111108 void *ptr, *kaddr = kmap_atomic(page);
112
- asm volatile(
113
- "mov r1, %2 \n\
109
+ asm volatile("\
110
+.arch xscale \n\
111
+ mov r1, %2 \n\
114112 mov r2, #0 \n\
115113 mov r3, #0 \n\
116114 1: mov ip, %0 \n\
117
- strd r2, [%0], #8 \n\
118
- strd r2, [%0], #8 \n\
119
- strd r2, [%0], #8 \n\
120
- strd r2, [%0], #8 \n\
115
+ strd r2, r3, [%0], #8 \n\
116
+ strd r2, r3, [%0], #8 \n\
117
+ strd r2, r3, [%0], #8 \n\
118
+ strd r2, r3, [%0], #8 \n\
121119 mcr p15, 0, ip, c7, c10, 1 @ clean D line\n\
122120 subs r1, r1, #1 \n\
123121 mcr p15, 0, ip, c7, c6, 1 @ invalidate D line\n\