|
@@ -1,11 +1,13 @@
|
|
|
#ifndef __UM_X86_PTRACE_H
|
|
|
#define __UM_X86_PTRACE_H
|
|
|
|
|
|
-#ifdef CONFIG_X86_32
|
|
|
-# include "ptrace_32.h"
|
|
|
-#else
|
|
|
-# include "ptrace_64.h"
|
|
|
+#include <linux/compiler.h>
|
|
|
+#ifndef CONFIG_X86_32
|
|
|
+#define __FRAME_OFFSETS /* Needed to get the R* macros */
|
|
|
#endif
|
|
|
+#include <asm/ptrace-generic.h>
|
|
|
+
|
|
|
+#define user_mode(r) UPT_IS_USER(&(r)->regs)
|
|
|
|
|
|
#define PT_REGS_AX(r) UPT_AX(&(r)->regs)
|
|
|
#define PT_REGS_BX(r) UPT_BX(&(r)->regs)
|
|
@@ -36,4 +38,52 @@ static inline long regs_return_value(struct pt_regs *regs)
|
|
|
{
|
|
|
return PT_REGS_AX(regs);
|
|
|
}
|
|
|
+
|
|
|
+/*
|
|
|
+ * Forward declaration to avoid including sysdep/tls.h, which causes a
|
|
|
+ * circular include, and compilation failures.
|
|
|
+ */
|
|
|
+struct user_desc;
|
|
|
+
|
|
|
+#ifdef CONFIG_X86_32
|
|
|
+
|
|
|
+#define HOST_AUDIT_ARCH AUDIT_ARCH_I386
|
|
|
+
|
|
|
+extern int ptrace_get_thread_area(struct task_struct *child, int idx,
|
|
|
+ struct user_desc __user *user_desc);
|
|
|
+
|
|
|
+extern int ptrace_set_thread_area(struct task_struct *child, int idx,
|
|
|
+ struct user_desc __user *user_desc);
|
|
|
+
|
|
|
+#else
|
|
|
+
|
|
|
+#define HOST_AUDIT_ARCH AUDIT_ARCH_X86_64
|
|
|
+
|
|
|
+#define PT_REGS_R8(r) UPT_R8(&(r)->regs)
|
|
|
+#define PT_REGS_R9(r) UPT_R9(&(r)->regs)
|
|
|
+#define PT_REGS_R10(r) UPT_R10(&(r)->regs)
|
|
|
+#define PT_REGS_R11(r) UPT_R11(&(r)->regs)
|
|
|
+#define PT_REGS_R12(r) UPT_R12(&(r)->regs)
|
|
|
+#define PT_REGS_R13(r) UPT_R13(&(r)->regs)
|
|
|
+#define PT_REGS_R14(r) UPT_R14(&(r)->regs)
|
|
|
+#define PT_REGS_R15(r) UPT_R15(&(r)->regs)
|
|
|
+
|
|
|
+#include <asm/errno.h>
|
|
|
+
|
|
|
+static inline int ptrace_get_thread_area(struct task_struct *child, int idx,
|
|
|
+ struct user_desc __user *user_desc)
|
|
|
+{
|
|
|
+ return -ENOSYS;
|
|
|
+}
|
|
|
+
|
|
|
+static inline int ptrace_set_thread_area(struct task_struct *child, int idx,
|
|
|
+ struct user_desc __user *user_desc)
|
|
|
+{
|
|
|
+ return -ENOSYS;
|
|
|
+}
|
|
|
+
|
|
|
+extern long arch_prctl(struct task_struct *task, int code,
|
|
|
+ unsigned long __user *addr);
|
|
|
+
|
|
|
+#endif
|
|
|
#endif /* __UM_X86_PTRACE_H */
|