* Copyright (c) 1987, 1989 Regents of the University of California.
* Redistribution and use in source and binary forms are permitted
* provided that the above copyright notice and this paragraph are
* duplicated in all such forms and that any documentation,
* advertising materials, and other materials related to such
* distribution and use acknowledge that the software was developed
* by the University of California, Berkeley. The name of the
* University may not be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid
[] = "@(#)bcopy.c 5.6 (Berkeley) %G%";
#endif /* LIBC_SCCS and not lint */
* bcopy -- copy memory block, handling overlap of source and destination
* (vax movc3 instruction)
typedef int word
; /* size of "word" used for optimal copy speed */
register char *src
, *dst
;
if (length
&& src
!= dst
)
if ((u_int
)dst
< (u_int
)src
)
if (((int)src
| (int)dst
| length
) & (sizeof(word
) - 1))
*(word
*)dst
= *(word
*)src
;
else { /* copy backwards */
if (((int)src
| (int)dst
| length
) & (sizeof(word
) - 1))
*(word
*)dst
= *(word
*)src
;