Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/avr32/lib/clear_user.S
10817 views
1
/*
2
* Copyright 2004-2006 Atmel Corporation
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
#include <asm/page.h>
9
#include <asm/thread_info.h>
10
#include <asm/asm.h>
11
12
.text
13
.align 1
14
.global clear_user
15
.type clear_user, "function"
16
clear_user:
17
branch_if_kernel r8, __clear_user
18
ret_if_privileged r8, r12, r11, r11
19
20
.global __clear_user
21
.type __clear_user, "function"
22
__clear_user:
23
mov r9, r12
24
mov r8, 0
25
andl r9, 3, COH
26
brne 5f
27
28
1: sub r11, 4
29
brlt 2f
30
31
10: st.w r12++, r8
32
sub r11, 4
33
brge 10b
34
35
2: sub r11, -4
36
reteq 0
37
38
/* Unaligned count or address */
39
bld r11, 1
40
brcc 12f
41
11: st.h r12++, r8
42
sub r11, 2
43
reteq 0
44
12: st.b r12++, r8
45
retal 0
46
47
/* Unaligned address */
48
5: cp.w r11, 4
49
brlt 2b
50
51
lsl r9, 2
52
add pc, pc, r9
53
13: st.b r12++, r8
54
sub r11, 1
55
14: st.b r12++, r8
56
sub r11, 1
57
15: st.b r12++, r8
58
sub r11, 1
59
rjmp 1b
60
61
.size clear_user, . - clear_user
62
.size __clear_user, . - __clear_user
63
64
.section .fixup, "ax"
65
.align 1
66
18: sub r11, -4
67
19: retal r11
68
69
.section __ex_table, "a"
70
.align 2
71
.long 10b, 18b
72
.long 11b, 19b
73
.long 12b, 19b
74
.long 13b, 19b
75
.long 14b, 19b
76
.long 15b, 19b
77
78