Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/blackfin/lib/strcmp.S
10817 views
1
/*
2
* Copyright 2005-2010 Analog Devices Inc.
3
*
4
* Licensed under the ADI BSD license or the GPL-2 (or later)
5
*/
6
7
#include <linux/linkage.h>
8
9
/* void *strcmp(char *s1, const char *s2);
10
* R0 = address (s1)
11
* R1 = address (s2)
12
*
13
* Returns an integer less than, equal to, or greater than zero if s1
14
* (or the first n bytes thereof) is found, respectively, to be less
15
* than, to match, or be greater than s2.
16
*/
17
18
#ifdef CONFIG_STRCMP_L1
19
.section .l1.text
20
#else
21
.text
22
#endif
23
24
.align 2
25
26
ENTRY(_strcmp)
27
P0 = R0 ; /* s1 */
28
P1 = R1 ; /* s2 */
29
30
1:
31
R0 = B[P0++] (Z); /* get *s1 */
32
R1 = B[P1++] (Z); /* get *s2 */
33
CC = R0 == R1; /* compare a byte */
34
if ! cc jump 2f; /* not equal, break out */
35
CC = R0; /* at end of s1? */
36
if cc jump 1b (bp); /* no, keep going */
37
jump.s 3f; /* strings are equal */
38
2:
39
R0 = R0 - R1; /* *s1 - *s2 */
40
3:
41
RTS;
42
43
ENDPROC(_strcmp)
44
45