12345678910111213141516171819202122232425 |
- /*
- * From code in arch/x86/lib/usercopy_64.c, copied to keep tools/ copy
- * of the kernel's arch/x86/lib/memcpy_64.s used in 'perf bench mem memcpy'
- * happy.
- */
- #include <linux/types.h>
- unsigned long __memcpy_mcsafe(void *dst, const void *src, size_t cnt);
- unsigned long mcsafe_handle_tail(char *to, char *from, unsigned len);
- unsigned long mcsafe_handle_tail(char *to, char *from, unsigned len)
- {
- for (; len; --len, to++, from++) {
- /*
- * Call the assembly routine back directly since
- * memcpy_mcsafe() may silently fallback to memcpy.
- */
- unsigned long rem = __memcpy_mcsafe(to, from, 1);
- if (rem)
- break;
- }
- return len;
- }
|