diff options
author | David S. Miller <davem@davemloft.net> | 2008-12-09 07:09:07 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-12-09 07:09:07 -0500 |
commit | 18cdae68e7bb24f33883e58f366cde38ea89ba17 (patch) | |
tree | 891b87b5e3c0b605f5e7d2b9809282b67c005293 /arch/sparc/lib/memcmp.S | |
parent | ae984d72e0632782dd98c3fcf469b9045ad0d449 (diff) |
sparc: Commonize memcmp assembler.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/lib/memcmp.S')
-rw-r--r-- | arch/sparc/lib/memcmp.S | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/sparc/lib/memcmp.S b/arch/sparc/lib/memcmp.S new file mode 100644 index 000000000000..efa106c41ed0 --- /dev/null +++ b/arch/sparc/lib/memcmp.S | |||
@@ -0,0 +1,27 @@ | |||
1 | /* Sparc optimized memcmp code. | ||
2 | * | ||
3 | * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) | ||
4 | * Copyright (C) 2000, 2008 David S. Miller (davem@davemloft.net) | ||
5 | */ | ||
6 | |||
7 | #include <linux/linkage.h> | ||
8 | #include <asm/asm.h> | ||
9 | |||
10 | .text | ||
11 | ENTRY(memcmp) | ||
12 | cmp %o2, 0 | ||
13 | 1: BRANCH32(be, pn, 2f) | ||
14 | nop | ||
15 | ldub [%o0], %g7 | ||
16 | ldub [%o1], %g3 | ||
17 | sub %o2, 1, %o2 | ||
18 | add %o0, 1, %o0 | ||
19 | add %o1, 1, %o1 | ||
20 | subcc %g7, %g3, %g3 | ||
21 | BRANCH32(be, pt, 1b) | ||
22 | cmp %o2, 0 | ||
23 | retl | ||
24 | mov %g3, %o0 | ||
25 | 2: retl | ||
26 | mov 0, %o0 | ||
27 | ENDPROC(memcmp) | ||