From: Benjamin Berg benjamin.berg@intel.com
The registers.c file only contains the routines for floating point register access in ptrace mode and initial size detection. After the addition of sys/uio.h and sys/ptrace.h to nolibc it can be moved to use it by using the sys_ptrace() wrapper.
Signed-off-by: Benjamin Berg benjamin.berg@intel.com
--- v2: - Use new sys_ptrace from nolibc --- arch/x86/um/os-Linux/Makefile | 5 ++++- arch/x86/um/os-Linux/registers.c | 16 ++++------------ 2 files changed, 8 insertions(+), 13 deletions(-)
diff --git a/arch/x86/um/os-Linux/Makefile b/arch/x86/um/os-Linux/Makefile index 77a308aaa5ec..d37320430822 100644 --- a/arch/x86/um/os-Linux/Makefile +++ b/arch/x86/um/os-Linux/Makefile @@ -3,10 +3,13 @@ # Licensed under the GPL #
-obj-y = registers.o mcontext.o +obj-y = mcontext.o
obj-$(CONFIG_X86_32) += tls.o
USER_OBJS := $(obj-y)
+obj-y += registers.o +NOLIBC_OBJS := registers.o + include $(srctree)/arch/um/scripts/Makefile.rules diff --git a/arch/x86/um/os-Linux/registers.c b/arch/x86/um/os-Linux/registers.c index eb1cdadc8a61..e570e29c3d73 100644 --- a/arch/x86/um/os-Linux/registers.c +++ b/arch/x86/um/os-Linux/registers.c @@ -28,9 +28,7 @@ int get_fp_registers(int pid, unsigned long *regs) .iov_len = host_fp_size, };
- if (ptrace(PTRACE_GETREGSET, pid, ptrace_regset, &iov) < 0) - return -errno; - return 0; + return sys_ptrace(PTRACE_GETREGSET, pid, ptrace_regset, &iov); }
int put_fp_registers(int pid, unsigned long *regs) @@ -40,9 +38,7 @@ int put_fp_registers(int pid, unsigned long *regs) .iov_len = host_fp_size, };
- if (ptrace(PTRACE_SETREGSET, pid, ptrace_regset, &iov) < 0) - return -errno; - return 0; + return sys_ptrace(PTRACE_SETREGSET, pid, ptrace_regset, &iov); }
int arch_init_registers(int pid) @@ -60,9 +56,7 @@ int arch_init_registers(int pid)
/* GDB has x86_xsave_length, which uses x86_cpuid_count */ ptrace_regset = NT_X86_XSTATE; - ret = ptrace(PTRACE_GETREGSET, pid, ptrace_regset, &iov); - if (ret) - ret = -errno; + ret = sys_ptrace(PTRACE_GETREGSET, pid, ptrace_regset, &iov);
if (ret == -ENODEV) { #ifdef CONFIG_X86_32 @@ -71,9 +65,7 @@ int arch_init_registers(int pid) ptrace_regset = NT_PRFPREG; #endif iov.iov_len = 2 * 1024 * 1024; - ret = ptrace(PTRACE_GETREGSET, pid, ptrace_regset, &iov); - if (ret) - ret = -errno; + ret = sys_ptrace(PTRACE_GETREGSET, pid, ptrace_regset, &iov); }
munmap(iov.iov_base, 2 * 1024 * 1024);