Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1882 | clevermous | 1 | #include |
2 | #include |
||
3 | #include |
||
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 | } |