hc
2024-10-12 a5969cabbb4660eab42b6ef0412cbbd1200cf14d
kernel/arch/arm64/lib/copy_to_user.S
....@@ -1,23 +1,13 @@
1
+/* SPDX-License-Identifier: GPL-2.0-only */
12 /*
23 * Copyright (C) 2012 ARM Ltd.
3
- *
4
- * This program is free software; you can redistribute it and/or modify
5
- * it under the terms of the GNU General Public License version 2 as
6
- * published by the Free Software Foundation.
7
- *
8
- * This program is distributed in the hope that it will be useful,
9
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- * GNU General Public License for more details.
12
- *
13
- * You should have received a copy of the GNU General Public License
14
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
154 */
165
176 #include <linux/linkage.h>
187
19
-#include <asm/cache.h>
208 #include <asm/asm-uaccess.h>
9
+#include <asm/assembler.h>
10
+#include <asm/cache.h>
2111
2212 /*
2313 * Copy to user space from a kernel buffer (alignment handled by the hardware)
....@@ -29,49 +19,48 @@
2919 * Returns:
3020 * x0 - bytes not copied
3121 */
32
- .macro ldrb1 ptr, regB, val
33
- ldrb \ptr, [\regB], \val
22
+ .macro ldrb1 reg, ptr, val
23
+ ldrb \reg, [\ptr], \val
3424 .endm
3525
36
- .macro strb1 ptr, regB, val
37
- 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
3828 .endm
3929
40
- .macro ldrh1 ptr, regB, val
41
- ldrh \ptr, [\regB], \val
30
+ .macro ldrh1 reg, ptr, val
31
+ ldrh \reg, [\ptr], \val
4232 .endm
4333
44
- .macro strh1 ptr, regB, val
45
- uao_user_alternative 9997f, strh, sttrh, \ptr, \regB, \val
34
+ .macro strh1 reg, ptr, val
35
+ uao_user_alternative 9997f, strh, sttrh, \reg, \ptr, \val
4636 .endm
4737
48
- .macro ldr1 ptr, regB, val
49
- ldr \ptr, [\regB], \val
38
+ .macro ldr1 reg, ptr, val
39
+ ldr \reg, [\ptr], \val
5040 .endm
5141
52
- .macro str1 ptr, regB, val
53
- uao_user_alternative 9997f, str, sttr, \ptr, \regB, \val
42
+ .macro str1 reg, ptr, val
43
+ uao_user_alternative 9997f, str, sttr, \reg, \ptr, \val
5444 .endm
5545
56
- .macro ldp1 ptr, regB, regC, val
57
- ldp \ptr, \regB, [\regC], \val
46
+ .macro ldp1 reg1, reg2, ptr, val
47
+ ldp \reg1, \reg2, [\ptr], \val
5848 .endm
5949
60
- .macro stp1 ptr, regB, regC, val
61
- uao_stp 9997f, \ptr, \regB, \regC, \val
50
+ .macro stp1 reg1, reg2, ptr, val
51
+ uao_stp 9997f, \reg1, \reg2, \ptr, \val
6252 .endm
6353
6454 end .req x5
6555 srcin .req x15
66
-ENTRY(__arch_copy_to_user)
67
- uaccess_enable_not_uao x3, x4, x5
56
+SYM_FUNC_START(__arch_copy_to_user)
6857 add end, x0, x2
6958 mov srcin, x1
7059 #include "copy_template.S"
71
- uaccess_disable_not_uao x3, x4
7260 mov x0, #0
7361 ret
74
-ENDPROC(__arch_copy_to_user)
62
+SYM_FUNC_END(__arch_copy_to_user)
63
+EXPORT_SYMBOL(__arch_copy_to_user)
7564
7665 .section .fixup,"ax"
7766 .align 2
....@@ -82,6 +71,5 @@
8271 USER(9998f, sttrb tmp1w, [dst])
8372 add dst, dst, #1
8473 9998: sub x0, end, dst // bytes not copied
85
- uaccess_disable_not_uao x3, x4
8674 ret
8775 .previous