xref: /original-bsd/lib/libc/vax/string/bcopy.s (revision bdd86a84)
1/*
2 * Copyright (c) 1983 Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley.  The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16 */
17
18#if defined(LIBC_SCCS) && !defined(lint)
19	.asciz "@(#)bcopy.s	5.5 (Berkeley) 06/27/88"
20#endif /* LIBC_SCCS and not lint */
21
22/* bcopy(from, to, size) */
23
24#include "DEFS.h"
25
26ENTRY(bcopy, R6)
27	movl	4(ap),r1
28	movl	8(ap),r3
29	movl	12(ap),r6
30	cmpl	r1,r3
31	bgtr	2f		# normal forward case
32	blss	3f		# overlapping, must do backwards
33	ret			# equal, nothing to do
341:
35	subl2	r0,r6
36	movc3	r0,(r1),(r3)
372:
38	movzwl	$65535,r0
39	cmpl	r6,r0
40	jgtr	1b
41	movc3	r6,(r1),(r3)
42	ret
433:
44	addl2	r6,r1
45	addl2	r6,r3
46	movzwl	$65535,r0
47	jbr	5f
484:
49	subl2	r0,r6
50	subl2	r0,r1
51	subl2	r0,r3
52	movc3	r0,(r1),(r3)
53	movzwl	$65535,r0
54	subl2	r0,r1
55	subl2	r0,r3
565:
57	cmpl	r6,r0
58	jgtr	4b
59	subl2	r6,r1
60	subl2	r6,r3
61	movc3	r6,(r1),(r3)
62	ret
63