projects
/
releases.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
history
|
raw
|
HEAD
GNU Linux-libre 4.9.296-gnu1
[releases.git]
/
arch
/
sparc
/
lib
/
strncmp_32.S
1
/*
2
* strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc
3
* generic strncmp routine.
4
*/
5
6
#include <linux/linkage.h>
7
#include <asm/export.h>
8
9
.text
10
ENTRY(strncmp)
11
mov %o0, %g3
12
mov 0, %o3
13
14
cmp %o2, 3
15
ble 7f
16
mov 0, %g2
17
18
sra %o2, 2, %o4
19
ldub [%g3], %o3
20
21
0:
22
ldub [%o1], %g2
23
add %g3, 1, %g3
24
and %o3, 0xff, %o0
25
26
cmp %o0, 0
27
be 8f
28
add %o1, 1, %o1
29
30
cmp %o0, %g2
31
be,a 1f
32
ldub [%g3], %o3
33
34
retl
35
sub %o0, %g2, %o0
36
37
1:
38
ldub [%o1], %g2
39
add %g3,1, %g3
40
and %o3, 0xff, %o0
41
42
cmp %o0, 0
43
be 8f
44
add %o1, 1, %o1
45
46
cmp %o0, %g2
47
be,a 1f
48
ldub [%g3], %o3
49
50
retl
51
sub %o0, %g2, %o0
52
53
1:
54
ldub [%o1], %g2
55
add %g3, 1, %g3
56
and %o3, 0xff, %o0
57
58
cmp %o0, 0
59
be 8f
60
add %o1, 1, %o1
61
62
cmp %o0, %g2
63
be,a 1f
64
ldub [%g3], %o3
65
66
retl
67
sub %o0, %g2, %o0
68
69
1:
70
ldub [%o1], %g2
71
add %g3, 1, %g3
72
and %o3, 0xff, %o0
73
74
cmp %o0, 0
75
be 8f
76
add %o1, 1, %o1
77
78
cmp %o0, %g2
79
be 1f
80
add %o4, -1, %o4
81
82
retl
83
sub %o0, %g2, %o0
84
85
1:
86
87
cmp %o4, 0
88
bg,a 0b
89
ldub [%g3], %o3
90
91
b 7f
92
and %o2, 3, %o2
93
94
9:
95
ldub [%o1], %g2
96
add %g3, 1, %g3
97
and %o3, 0xff, %o0
98
99
cmp %o0, 0
100
be 8f
101
add %o1, 1, %o1
102
103
cmp %o0, %g2
104
be 7f
105
add %o2, -1, %o2
106
107
8:
108
retl
109
sub %o0, %g2, %o0
110
111
7:
112
cmp %o2, 0
113
bg,a 9b
114
ldub [%g3], %o3
115
116
and %g2, 0xff, %o0
117
retl
118
sub %o3, %o0, %o0
119
ENDPROC(strncmp)
120
EXPORT_SYMBOL(strncmp)