aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/generic/memcpy.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1995-02-21 08:07:34 +0000
committerRoland McGrath <roland@gnu.org>1995-02-21 08:07:34 +0000
commit67a87b936eaab25dc983e979e5a548256d1a527a (patch)
treecc821a229df7ee0d081df42258c31c241b78c0ef /sysdeps/generic/memcpy.c
parent787126fe16e340c8a0c4301d4cab942973d7d85c (diff)
downloadglibc-67a87b936eaab25dc983e979e5a548256d1a527a.zip
glibc-67a87b936eaab25dc983e979e5a548256d1a527a.tar.gz
glibc-67a87b936eaab25dc983e979e5a548256d1a527a.tar.bz2
* string/Makefile (distribute): Add pagecopy.h.
* sysdeps/mach/pagecopy.h: New file. * sysdeps/generic/pagecopy.h: New file. * sysdeps/generic/memcpy.c: Include pagecopy.h; call PAGE_COPY_FWD_MAYBE first when word aligned. * sysdeps/generic/memmove.c: Likewise.
Diffstat (limited to 'sysdeps/generic/memcpy.c')
-rw-r--r--sysdeps/generic/memcpy.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/sysdeps/generic/memcpy.c b/sysdeps/generic/memcpy.c
index 222d358..e1a1ade 100644
--- a/sysdeps/generic/memcpy.c
+++ b/sysdeps/generic/memcpy.c
@@ -21,6 +21,7 @@ Cambridge, MA 02139, USA. */
#include <ansidecl.h>
#include <string.h>
#include <memcopy.h>
+#include <pagecopy.h>
PTR
DEFUN(memcpy, (dstpp, srcpp, len),
@@ -38,10 +39,14 @@ DEFUN(memcpy, (dstpp, srcpp, len),
len -= (-dstp) % OPSIZ;
BYTE_COPY_FWD (dstp, srcp, (-dstp) % OPSIZ);
- /* Copy from SRCP to DSTP taking advantage of the known
- alignment of DSTP. Number of bytes remaining is put
- in the third argumnet, i.e. in LEN. This number may
- vary from machine to machine. */
+ /* Copy whole pages from SRCP to DSTP by virtual address manipulation,
+ as much as possible. */
+
+ PAGE_COPY_FWD_MAYBE (dstp, srcp, len, len);
+
+ /* Copy from SRCP to DSTP taking advantage of the known alignment of
+ DSTP. Number of bytes remaining is put in the third argument,
+ i.e. in LEN. This number may vary from machine to machine. */
WORD_COPY_FWD (dstp, srcp, len, len);