Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. void * memcpy(void * _dest, const void *_src, size_t _n)
  6. {
  7. int d0, d1, d2;
  8.  __asm__ __volatile__(
  9.         "jcxz 1f\n\t"
  10.         "rep ; movsl\n\t"
  11.         "1:\t"
  12.         "testb $2,%b4\n\t"
  13.         "je 1f\n\t"
  14.         "movsw\n"
  15.         "1:\ttestb $1,%b4\n\t"
  16.         "je 2f\n\t"
  17.         "movsb\n"
  18.         "2:"
  19.         : "=&c" (d0), "=&D" (d1), "=&S" (d2)
  20.         :"0" (_n/4), "q" (_n),"1" ((long)_dest),"2" ((long)_src)
  21.         : "memory");
  22.  return (_dest);
  23. }
  24.