xref: /csrg-svn/lib/libc/vax/string/bcopy.s (revision 61222)
121422Sdist/*
2*61222Sbostic * Copyright (c) 1983, 1993
3*61222Sbostic *	The Regents of the University of California.  All rights reserved.
434480Sbostic *
542639Sbostic * %sccs.include.redist.c%
621422Sdist */
721422Sdist
834819Sbostic#if defined(LIBC_SCCS) && !defined(lint)
9*61222Sbostic	.asciz "@(#)bcopy.s	8.1 (Berkeley) 06/04/93"
1034819Sbostic#endif /* LIBC_SCCS and not lint */
1121422Sdist
1214957Skarels/* bcopy(from, to, size) */
139709Ssam
149709Ssam#include "DEFS.h"
159709Ssam
1617329SsamENTRY(bcopy, R6)
1710281Smckusick	movl	4(ap),r1
1810281Smckusick	movl	8(ap),r3
1915102Smckusick	movl	12(ap),r6
2015102Smckusick	cmpl	r1,r3
2115102Smckusick	bgtr	2f		# normal forward case
2215102Smckusick	blss	3f		# overlapping, must do backwards
2315102Smckusick	ret			# equal, nothing to do
2410281Smckusick1:
2515102Smckusick	subl2	r0,r6
2610281Smckusick	movc3	r0,(r1),(r3)
2710281Smckusick2:
2810281Smckusick	movzwl	$65535,r0
2915102Smckusick	cmpl	r6,r0
3010281Smckusick	jgtr	1b
3115102Smckusick	movc3	r6,(r1),(r3)
329709Ssam	ret
3315102Smckusick3:
3415102Smckusick	addl2	r6,r1
3515102Smckusick	addl2	r6,r3
3615102Smckusick	movzwl	$65535,r0
3715102Smckusick	jbr	5f
3815102Smckusick4:
3915102Smckusick	subl2	r0,r6
4015102Smckusick	subl2	r0,r1
4115102Smckusick	subl2	r0,r3
4215102Smckusick	movc3	r0,(r1),(r3)
4315102Smckusick	movzwl	$65535,r0
4415102Smckusick	subl2	r0,r1
4515102Smckusick	subl2	r0,r3
4615102Smckusick5:
4715102Smckusick	cmpl	r6,r0
4815102Smckusick	jgtr	4b
4915102Smckusick	subl2	r6,r1
5015102Smckusick	subl2	r6,r3
5115102Smckusick	movc3	r6,(r1),(r3)
5215102Smckusick	ret
53