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