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 22extern 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