|
|
1.1 root 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) 6/27/88"
20: #endif /* LIBC_SCCS and not lint */
21:
22: /* bcopy(from, to, size) */
23:
24: #include "DEFS.h"
25:
26: ENTRY(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
34: 1:
35: subl2 r0,r6
36: movc3 r0,(r1),(r3)
37: 2:
38: movzwl $65535,r0
39: cmpl r6,r0
40: jgtr 1b
41: movc3 r6,(r1),(r3)
42: ret
43: 3:
44: addl2 r6,r1
45: addl2 r6,r3
46: movzwl $65535,r0
47: jbr 5f
48: 4:
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
56: 5:
57: cmpl r6,r0
58: jgtr 4b
59: subl2 r6,r1
60: subl2 r6,r3
61: movc3 r6,(r1),(r3)
62: ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.