1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _H8300_PTRACE_H 3 #define _H8300_PTRACE_H 4 5 #include <uapi/asm/ptrace.h> 6 7 #ifndef __ASSEMBLY__ 8 #ifndef PS_S 9 #define PS_S (0x10) 10 #endif 11 12 #if defined(CONFIG_CPU_H8300H) 13 #define H8300_REGS_NO 11 14 #endif 15 #if defined(CONFIG_CPU_H8S) 16 #define H8300_REGS_NO 12 17 #endif 18 19 #define arch_has_single_step() (1) 20 21 #define user_mode(regs) (!((regs)->ccr & PS_S)) 22 #define instruction_pointer(regs) ((regs)->pc) 23 #define profile_pc(regs) instruction_pointer(regs) 24 #define user_stack_pointer(regs) ((regs)->sp) 25 #define current_pt_regs() ((struct pt_regs *) \ 26 (THREAD_SIZE + (unsigned long)current_thread_info()) - 1) 27 #define signal_pt_regs() ((struct pt_regs *)current->thread.esp0) 28 #define current_user_stack_pointer() rdusp() 29 #define task_pt_regs(task) \ 30 ((struct pt_regs *) (task_stack_page(task) + THREAD_SIZE) - 1) 31 32 extern long h8300_get_reg(struct task_struct *task, int regno); 33 extern int h8300_put_reg(struct task_struct *task, int regno, 34 unsigned long data); 35 36 #endif /* __ASSEMBLY__ */ 37 #endif /* _H8300_PTRACE_H */ 38