1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2024b246eSLinus Torvalds #ifndef _ASMAXP_PTRACE_H 3024b246eSLinus Torvalds #define _ASMAXP_PTRACE_H 4024b246eSLinus Torvalds 596433f6eSDavid Howells #include <uapi/asm/ptrace.h> 6024b246eSLinus Torvalds 7024b246eSLinus Torvalds 8fd341abbSChristoph Hellwig #define arch_has_single_step() (1) 9024b246eSLinus Torvalds #define user_mode(regs) (((regs)->ps & 8) != 0) 10024b246eSLinus Torvalds #define instruction_pointer(regs) ((regs)->pc) 11024b246eSLinus Torvalds #define profile_pc(regs) instruction_pointer(regs) 121ca97bb5SAl Viro #define current_user_stack_pointer() rdusp() 13024b246eSLinus Torvalds 14024b246eSLinus Torvalds #define task_pt_regs(task) \ 15024b246eSLinus Torvalds ((struct pt_regs *) (task_stack_page(task) + 2*PAGE_SIZE) - 1) 16024b246eSLinus Torvalds 17be53db6eSAl Viro #define current_pt_regs() \ 18be53db6eSAl Viro ((struct pt_regs *) ((char *)current_thread_info() + 2*PAGE_SIZE) - 1) 19be53db6eSAl Viro 20be53db6eSAl Viro #define force_successful_syscall_return() (current_pt_regs()->r0 = 0) 21024b246eSLinus Torvalds regs_return_value(struct pt_regs * regs)22a9302e84S蔡正龙static inline unsigned long regs_return_value(struct pt_regs *regs) 23a9302e84S蔡正龙 { 24a9302e84S蔡正龙 return regs->r0; 25a9302e84S蔡正龙 } 26a9302e84S蔡正龙 27024b246eSLinus Torvalds #endif 28