macro and text revision (-mdoc version 3)
[unix-history] / usr / src / lib / libc / vax / string / bcopy.s
/*
* Copyright (c) 1983 Regents of the University of California.
* All rights reserved.
*
* %sccs.include.redist.c%
*/
#if defined(LIBC_SCCS) && !defined(lint)
.asciz "@(#)bcopy.s 5.6 (Berkeley) %G%"
#endif /* LIBC_SCCS and not lint */
/* bcopy(from, to, size) */
#include "DEFS.h"
ENTRY(bcopy, R6)
movl 4(ap),r1
movl 8(ap),r3
movl 12(ap),r6
cmpl r1,r3
bgtr 2f # normal forward case
blss 3f # overlapping, must do backwards
ret # equal, nothing to do
1:
subl2 r0,r6
movc3 r0,(r1),(r3)
2:
movzwl $65535,r0
cmpl r6,r0
jgtr 1b
movc3 r6,(r1),(r3)
ret
3:
addl2 r6,r1
addl2 r6,r3
movzwl $65535,r0
jbr 5f
4:
subl2 r0,r6
subl2 r0,r1
subl2 r0,r3
movc3 r0,(r1),(r3)
movzwl $65535,r0
subl2 r0,r1
subl2 r0,r3
5:
cmpl r6,r0
jgtr 4b
subl2 r6,r1
subl2 r6,r3
movc3 r6,(r1),(r3)
ret