diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /arch/sparc64/lib/memmove.S |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'arch/sparc64/lib/memmove.S')
-rw-r--r-- | arch/sparc64/lib/memmove.S | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/arch/sparc64/lib/memmove.S b/arch/sparc64/lib/memmove.S new file mode 100644 index 000000000000..97395802c23c --- /dev/null +++ b/arch/sparc64/lib/memmove.S | |||
@@ -0,0 +1,31 @@ | |||
1 | /* memmove.S: Simple memmove implementation. | ||
2 | * | ||
3 | * Copyright (C) 1997, 2004 David S. Miller (davem@redhat.com) | ||
4 | * Copyright (C) 1996, 1997, 1998, 1999 Jakub Jelinek (jj@ultra.linux.cz) | ||
5 | */ | ||
6 | |||
7 | .text | ||
8 | .align 32 | ||
9 | .globl memmove | ||
10 | .type memmove,#function | ||
11 | memmove: /* o0=dst o1=src o2=len */ | ||
12 | mov %o0, %g1 | ||
13 | cmp %o0, %o1 | ||
14 | bleu,pt %xcc, memcpy | ||
15 | add %o1, %o2, %g7 | ||
16 | cmp %g7, %o0 | ||
17 | bleu,pt %xcc, memcpy | ||
18 | add %o0, %o2, %o5 | ||
19 | sub %g7, 1, %o1 | ||
20 | |||
21 | sub %o5, 1, %o0 | ||
22 | 1: ldub [%o1], %g7 | ||
23 | subcc %o2, 1, %o2 | ||
24 | sub %o1, 1, %o1 | ||
25 | stb %g7, [%o0] | ||
26 | bne,pt %icc, 1b | ||
27 | sub %o0, 1, %o0 | ||
28 | |||
29 | retl | ||
30 | mov %g1, %o0 | ||
31 | .size memmove, .-memmove | ||