Blackfin: blackfin utrace patch
PATCH 1/1 Blackfin: blackfin utrace patch
Hi folks,
As utrace is very promising in the -mm tree, a simple support is added to blackfin architecture. I send this patch out just for review and it is only a start point, we will make it fully work in the future.
Now after applying this patch, the blackfin-arch can be compile in the 2.6.21-rc2-mm1 with utrace enabled and ptrace disabled.
[PATCH -mm] Blackfin: blackfin utrace patch
This patch adds support utrace in blackfin architecture.
Signed-off-by Bryan Wu <[email protected]>
---
arch/blackfin/kernel/asm-offsets.c | 2 arch/blackfin/kernel/ptrace.c | 8 +++ include/asm-blackfin/thread_info.h | 2 include/asm-blackfin/tracehook.h | 79 +++++++++++++++++++++++++++++++++++++ 4 files changed, 91 insertions(+)
arch/blackfin/kernel/asm-offsets.c +2 -0
@@ -45,7 +45,9 @@ int main(void)/* offsets into the task struct */ DEFINE (TASK_STATE , offsetof(struct task_struct , state));DEFINE (TASK_FLAGS , offsetof(struct task_struct , flags)); +#if 0 DEFINE (TASK_PTRACE , offsetof(struct task_struct , ptrace)); +#endif DEFINE (TASK_BLOCKED , offsetof(struct task_struct , blocked));DEFINE (TASK_THREAD , offsetof(struct task_struct , thread));DEFINE (TASK_THREAD_INFO , offsetof(struct task_struct , thread_info));
arch/blackfin/kernel/ptrace.c +8 -0
@@ -34,12 +34,14 @@#include <linux/mm.h> #include <linux/smp.h> #include <linux/smp_lock.h> +#include <linux/tracehook.h> #include <linux/errno.h> #include <linux/ptrace.h> #include <linux/user.h> #include <linux/signal.h> #include <asm/uaccess.h> +#include <asm/tracehook.h> #include <asm/page.h> #include <asm/pgtable.h> #include <asm/system.h>
@@ -173,6 +175,8 @@ static inline int is_user_addr_valid(strreturn -EIO ; } +#ifdef CONFIG_PTRACE +/* * Called by kernel/ptrace.c when detaching.. *
@@ -386,12 +390,15 @@ long arch_ptrace(struct task_struct *chireturn ret; } +#endif /* CONFIG_PTRACE */ + asmlinkage void syscall_trace(void) {if (!test_thread_flag (TIF_SYSCALL_TRACE ))return ; +#if 0 if (!(current->ptrace &PT_PTRACED ))return ;
@@ -400,6 +407,7 @@ asmlinkage void syscall_trace(void)*/ ptrace_notify (SIGTRAP | ((current->ptrace &PT_TRACESYSGOOD ) ?0x80 :0 )); +#endif /* * this isn't the same as continuing with a signal, but it will do
include/asm-blackfin/thread_info.h +2 -0
@@ -127,6 +127,7 @@ static inline struct thread_info *curren#define TIF_MEMDIE 5#define TIF_RESTORE_SIGMASK 6/* restore signal mask in do_signal() */ #define TIF_FREEZE 7/* is freezing for suspend */ +#define TIF_SINGLESTEP 8/* restore singlestep on return to user mode */ /* as above, but as bit values */ #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
@@ -136,6 +137,7 @@ static inline struct thread_info *curren#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)#define _TIF_FREEZE (1<<TIF_FREEZE) +#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP)#define _TIF_WORK_MASK 0x0000FFFE/* work to do on interrupt/exception return */
include/asm-blackfin/tracehook.h +79 -0
79 lines not on this page · raw message
_
Thanks
-Bryan Wu