This series makes the usercopy & memcpy functions follow the standard calling convention, allowing us to clean up calls to them from copy_{to,from}_user & variants such that they're just standard function calls rather than inline assembly wrappers. This frees us from needing to worry about performing long calls in modules, declaring the right registers clobbered by the inline asm, retrieving results from non-standard registers etc. This series applies atop v4.9-rc4 with my "MIPS: Cleanup EXPORT_SYMBOL usage" series applied first. Paul Burton (7): MIPS: lib: Split lib-y to a line per file MIPS: lib: Implement memmove in C MIPS: memcpy: Split __copy_user & memcpy MIPS: memcpy: Return uncopied bytes from __copy_user*() in v0 MIPS: memcpy: Use ta* instead of manually defining t4-t7 MIPS: memcpy: Use a3/$7 for source end address MIPS: uaccess: Use standard __user_copy* function calls arch/mips/cavium-octeon/octeon-memcpy.S | 225 +++++++-------- arch/mips/include/asm/uaccess.h | 480 ++++++++------------------------ arch/mips/lib/Makefile | 14 +- arch/mips/lib/memcpy.S | 198 +++++-------- arch/mips/lib/memmove.c | 39 +++ 5 files changed, 324 insertions(+), 632 deletions(-) create mode 100644 arch/mips/lib/memmove.c -- 2.10.2