Go to the documentation of this file.
28 #define _ST(p, inst, v) \
30 asm("1: " #inst " %0, %1;" \
31 ".pushsection .coldtext.memcpy,\"ax\";" \
32 "2: { move r0, %2; jrp lr };" \
33 ".section __ex_table,\"a\";" \
36 : "=m" (*(p)) : "r" (v), "r" (n)); \
39 #define _LD(p, inst) \
42 asm("1: " #inst " %0, %1;" \
43 ".pushsection .coldtext.memcpy,\"ax\";" \
44 "2: { move r0, %2; jrp lr };" \
45 ".section __ex_table,\"a\";" \
48 : "=r" (__v) : "m" (*(p)), "r" (n)); \
52 #define USERCOPY_FUNC __copy_to_user_inatomic
53 #define ST1(p, v) _ST((p), st1, (v))
54 #define ST2(p, v) _ST((p), st2, (v))
55 #define ST4(p, v) _ST((p), st4, (v))
56 #define ST8(p, v) _ST((p), st, (v))
63 #define USERCOPY_FUNC __copy_from_user_inatomic
68 #define LD1(p) _LD((p), ld1u)
69 #define LD2(p) _LD((p), ld2u)
70 #define LD4(p) _LD((p), ld4u)
71 #define LD8(p) _LD((p), ld)
74 #define USERCOPY_FUNC __copy_in_user_inatomic
75 #define ST1(p, v) _ST((p), st1, (v))
76 #define ST2(p, v) _ST((p), st2, (v))
77 #define ST4(p, v) _ST((p), st4, (v))
78 #define ST8(p, v) _ST((p), st, (v))
79 #define LD1(p) _LD((p), ld1u)
80 #define LD2(p) _LD((p), ld2u)
81 #define LD4(p) _LD((p), ld4u)
82 #define LD8(p) _LD((p), ld)
90 memset(to + n - rc, 0, rc);