This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / arch / sparc64 / lib / memmove.S
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:
12         mov             %o0, %g1
13         cmp             %o0, %o1
14         blu,pt          %xcc, memcpy
15          sub            %o0, %o1, %g5
16         add             %o1, %o2, %g3
17         cmp             %g3, %o0
18         bleu,pt         %xcc, memcpy
19          add            %o1, %o2, %g5
20         add             %o0, %o2, %o5
21
22         sub             %g5, 1, %o1
23         sub             %o5, 1, %o0
24 1:      ldub            [%o1], %g5
25         subcc           %o2, 1, %o2
26         sub             %o1, 1, %o1
27         stb             %g5, [%o0]
28         bne,pt          %icc, 1b
29          sub            %o0, 1, %o0
30
31         retl
32          mov            %g1, %o0
33         .size           memmove, .-memmove