vserver 1.9.5.x5
[linux-2.6.git] / arch / sparc64 / lib / memmove.S
index ca8781d..1c1ebbb 100644 (file)
@@ -8,18 +8,16 @@
        .align          32
        .globl          memmove
        .type           memmove,#function
-memmove:
+memmove:               /* o0=dst o1=src o2=len */
        mov             %o0, %g1
        cmp             %o0, %o1
-       blu,pt          %xcc, memcpy
-        sub            %o0, %o1, %g5
-       add             %o1, %o2, %g3
-       cmp             %g3, %o0
        bleu,pt         %xcc, memcpy
         add            %o1, %o2, %g5
-       add             %o0, %o2, %o5
-
+       cmp             %g5, %o0
+       bleu,pt         %xcc, memcpy
+        add            %o0, %o2, %o5
        sub             %g5, 1, %o1
+
        sub             %o5, 1, %o0
 1:     ldub            [%o1], %g5
        subcc           %o2, 1, %o2