1 /* SPDX-License-Identifier: GPL-2.0 */
2 // Copyright (C) 2005-2017 Andes Technology Corporation
4 #ifndef __ASM_NDS32_PTRACE_H
5 #define __ASM_NDS32_PTRACE_H
7 #include <uapi/asm/ptrace.h>
10 * If pt_regs.syscallno == NO_SYSCALL, then the thread is not executing
11 * a syscall -- i.e., its most recent entry into the kernel from
12 * userspace was not via syscall, or otherwise a tracer cancelled the
15 * This must have the value -1, for ABI compatibility with ptrace etc.
17 #define NO_SYSCALL (-1)
19 #include <linux/types.h>
23 struct user_pt_regs user_regs
;
31 #if defined(CONFIG_HWZOL)
52 static inline bool in_syscall(struct pt_regs
const *regs
)
54 return regs
->syscallno
!= NO_SYSCALL
;
57 static inline void forget_syscall(struct pt_regs
*regs
)
59 regs
->syscallno
= NO_SYSCALL
;
61 static inline unsigned long regs_return_value(struct pt_regs
*regs
)
63 return regs
->uregs
[0];
65 extern void show_regs(struct pt_regs
*);
66 /* Avoid circular header include via sched.h */
69 #define arch_has_single_step() (1)
70 #define user_mode(regs) (((regs)->ipsw & PSW_mskPOM) == 0)
71 #define interrupts_enabled(regs) (!!((regs)->ipsw & PSW_mskGIE))
72 #define user_stack_pointer(regs) ((regs)->sp)
73 #define instruction_pointer(regs) ((regs)->ipc)
74 #define profile_pc(regs) instruction_pointer(regs)
76 #endif /* __ASSEMBLY__ */