|
|
1.1 root 1: /*
2: * Copyright (c) 1987 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: */
6:
7: #if defined(LIBC_SCCS) && !defined(lint)
8: static char sccsid[] = "@(#)bcopy.c 5.1 (Berkeley) 1/27/87";
9: #endif LIBC_SCCS and not lint
10:
11: /*
12: * bcopy -- vax movc3 instruction
13: */
14: bcopy(src, dst, length)
15: register char *src, *dst;
16: register int length;
17: {
18: if (length && src != dst)
19: if ((u_int)dst < (u_int)src)
20: if (((int)src | (int)dst | length) & 3)
21: do /* copy by bytes */
22: *dst++ = *src++;
23: while (--length);
24: else {
25: length >>= 2;
26: do /* copy by longs */
27: *((long *)dst)++ = *((long *)src)++;
28: while (--length);
29: }
30: else { /* copy backwards */
31: src += length;
32: dst += length;
33: if (((int)src | (int)dst | length) & 3)
34: do /* copy by bytes */
35: *--dst = *--src;
36: while (--length);
37: else {
38: length >>= 2;
39: do /* copy by shorts */
40: *--((long *)dst) = *--((long *)src);
41: while (--length);
42: }
43: }
44: return(0);
45: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.