#include "asm/bios/memcpy.h" | |
/* | |
* Copy memory area in 16-bit real mode. | |
*/ | |
void memcpy16(u16 dst_seg, void *dst, u16 src_seg, const void *src, size_t len) | |
{ | |
__asm__ __volatile__ ( | |
"pushw %%ds \n" | |
"pushw %%es \n" | |
"movw %[src_seg], %%ds \n" | |
"movw %[dst_seg], %%es \n" | |
"rep movsb %%ds:(%%si), %%es:(%%di) \n" | |
"popw %%es \n" | |
"popw %%ds \n" | |
: | |
: "S"(src), | |
"D"(dst), | |
"c"(len), | |
[src_seg] "r"(src_seg), | |
[dst_seg] "r"(dst_seg) | |
: "cc", "memory"); | |
} |