You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
16 lines
493 B
16 lines
493 B
2 years ago
|
/*
|
||
|
* NOTE!!! memcpy(dest,src,n) assumes ds=es=normal data segment. This
|
||
|
* goes for all kernel functions (ds=es=kernel space, fs=local data,
|
||
|
* gs=null), as well as for all well-behaving user programs (ds=es=
|
||
|
* user data space). This is NOT a bug, as any user program that changes
|
||
|
* es deserves to die if it isn't careful.
|
||
|
*/
|
||
|
#define memcpy(dest,src,n) ({ \
|
||
|
void * _res = dest; \
|
||
|
__asm__ ("cld;rep;movsb" \
|
||
|
::"D" ((long)(_res)),"S" ((long)(src)),"c" ((long) (n)) \
|
||
|
); \
|
||
|
_res; \
|
||
|
})
|
||
|
|