diff options
author | David S. Miller <davem@davemloft.net> | 2008-12-09 04:09:07 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-12-09 04:09:07 -0800 |
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 00000000000..efa106c41ed --- /dev/null +++ b/arch/sparc/lib/memcmp.S @@ -0,0 +1,27 @@ +/* Sparc optimized memcmp code. + * + * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) + * Copyright (C) 2000, 2008 David S. Miller (davem@davemloft.net) + */ + +#include <linux/linkage.h> +#include <asm/asm.h> + + .text +ENTRY(memcmp) + cmp %o2, 0 +1: BRANCH32(be, pn, 2f) + nop + ldub [%o0], %g7 + ldub [%o1], %g3 + sub %o2, 1, %o2 + add %o0, 1, %o0 + add %o1, 1, %o1 + subcc %g7, %g3, %g3 + BRANCH32(be, pt, 1b) + cmp %o2, 0 + retl + mov %g3, %o0 +2: retl + mov 0, %o0 +ENDPROC(memcmp) |