/* * S390 version * Copyright IBM Corp. 1999, 2000 * Author(s): Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) */ #ifndef _S390_PTRACE_H #define _S390_PTRACE_H #include #define PIF_SYSCALL 0 /* inside a system call */ #define PIF_PER_TRAP 1 /* deliver sigtrap on return to user */ #define _PIF_SYSCALL (1<flags |= (1U << flag); } static inline void clear_pt_regs_flag(struct pt_regs *regs, int flag) { regs->flags &= ~(1U << flag); } static inline int test_pt_regs_flag(struct pt_regs *regs, int flag) { return !!(regs->flags & (1U << flag)); } /* * These are defined as per linux/ptrace.h, which see. */ #define arch_has_single_step() (1) #define arch_has_block_step() (1) #define user_mode(regs) (((regs)->psw.mask & PSW_MASK_PSTATE) != 0) #define instruction_pointer(regs) ((regs)->psw.addr & PSW_ADDR_INSN) #define user_stack_pointer(regs)((regs)->gprs[15]) #define profile_pc(regs) instruction_pointer(regs) static inline long regs_return_value(struct pt_regs *regs) { return regs->gprs[2]; } static inline void instruction_pointer_set(struct pt_regs *regs, unsigned long val) { regs->psw.addr = val | PSW_ADDR_AMODE; } int regs_query_register_offset(const char *name); const char *regs_query_register_name(unsigned int offset); unsigned long regs_get_register(struct pt_regs *regs, unsigned int offset); unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs, unsigned int n); static inline unsigned long kernel_stack_pointer(struct pt_regs *regs) { return regs->gprs[15] & PSW_ADDR_INSN; } #endif /* __ASSEMBLY__ */ #endif /* _S390_PTRACE_H */