1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30#include <linux/linkage.h>
31#include <asm/assembler.h>
32#include <asm/errno.h>
33#include <asm/domain.h>
34
35ENTRY(__get_user_1)
36 check_uaccess r0, 1, r1, r2, __get_user_bad
371: TUSER(ldrb) r2, [r0]
38 mov r0,
39 mov pc, lr
40ENDPROC(__get_user_1)
41
42ENTRY(__get_user_2)
43 check_uaccess r0, 2, r1, r2, __get_user_bad
44#ifdef CONFIG_CPU_USE_DOMAINS
45rb .req ip
462: ldrbt r2, [r0],
473: ldrbt rb, [r0],
48#else
49rb .req r0
502: ldrb r2, [r0]
513: ldrb rb, [r0,
52#endif
53#ifndef __ARMEB__
54 orr r2, r2, rb, lsl
55#else
56 orr r2, rb, r2, lsl
57#endif
58 mov r0,
59 mov pc, lr
60ENDPROC(__get_user_2)
61
62ENTRY(__get_user_4)
63 check_uaccess r0, 4, r1, r2, __get_user_bad
644: TUSER(ldr) r2, [r0]
65 mov r0,
66 mov pc, lr
67ENDPROC(__get_user_4)
68
69__get_user_bad:
70 mov r2,
71 mov r0,
72 mov pc, lr
73ENDPROC(__get_user_bad)
74
75.pushsection __ex_table, "a"
76 .long 1b, __get_user_bad
77 .long 2b, __get_user_bad
78 .long 3b, __get_user_bad
79 .long 4b, __get_user_bad
80.popsection
81