1 /* 2 * Copyright 2004-2008 Analog Devices Inc. 3 * 4 * Licensed under the GPL-2 or later. 5 */ 6 #ifndef _BFIN_PTRACE_H 7 #define _BFIN_PTRACE_H 8 9 #include <uapi/asm/ptrace.h> 10 11 #ifndef __ASSEMBLY__ 12 13 /* user_mode returns true if only one bit is set in IPEND, other than the 14 master interrupt enable. */ 15 #define user_mode(regs) (!(((regs)->ipend & ~0x10) & (((regs)->ipend & ~0x10) - 1))) 16 17 #define arch_has_single_step() (1) 18 /* common code demands this function */ 19 #define ptrace_disable(child) user_disable_single_step(child) 20 #define current_user_stack_pointer() rdusp() 21 22 extern int is_user_addr_valid(struct task_struct *child, 23 unsigned long start, unsigned long len); 24 25 /* 26 * Get the address of the live pt_regs for the specified task. 27 * These are saved onto the top kernel stack when the process 28 * is not running. 29 * 30 * Note: if a user thread is execve'd from kernel space, the 31 * kernel stack will not be empty on entry to the kernel, so 32 * ptracing these tasks will fail. 33 */ 34 #define task_pt_regs(task) \ 35 (struct pt_regs *) \ 36 ((unsigned long)task_stack_page(task) + \ 37 (THREAD_SIZE - sizeof(struct pt_regs))) 38 39 #include <asm-generic/ptrace.h> 40 41 #endif /* __ASSEMBLY__ */ 42 #endif /* _BFIN_PTRACE_H */ 43