1
2
3
4
5
6
7
8
9
10#include <linux/linkage.h>
11#include <asm/assembler.h>
12
13 .text
14
15
16
17
18
19
20
21ENTRY(__clear_user_std)
22WEAK(__clear_user)
23 stmfd sp!, {r1, lr}
24 mov r2,
25 cmp r1,
26 blt 2f
27 ands ip, r0,
28 beq 1f
29 cmp ip,
30 strusr r2, r0, 1
31 strusr r2, r0, 1, le
32 strusr r2, r0, 1, lt
33 rsb ip, ip,
34 sub r1, r1, ip @ 7 6 5 4 3 2 1
351: subs r1, r1,
36 strusr r2, r0, 4, pl, rept=2
37 bpl 1b
38 adds r1, r1,
39 strusr r2, r0, 4, pl
402: tst r1,
41 strusr r2, r0, 1, ne, rept=2
42 tst r1,
43 it ne @ explicit IT needed for the label
44USER( strnebt r2, [r0])
45 mov r0,
46 ldmfd sp!, {r1, pc}
47ENDPROC(__clear_user)
48ENDPROC(__clear_user_std)
49
50 .pushsection .fixup,"ax"
51 .align 0
529001: ldmfd sp!, {r0, pc}
53 .popsection
54
55