• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0 */
2 // Copyright (C) 2005-2017 Andes Technology Corporation
3 
4 #ifndef __ASM_NDS32_PTRACE_H
5 #define __ASM_NDS32_PTRACE_H
6 
7 #include <uapi/asm/ptrace.h>
8 
9 /*
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
13  * syscall.
14  *
15  * This must have the value -1, for ABI compatibility with ptrace etc.
16  */
17 #define NO_SYSCALL (-1)
18 #ifndef __ASSEMBLY__
19 #include <linux/types.h>
20 
21 struct pt_regs {
22 	union {
23 		struct user_pt_regs user_regs;
24 		struct {
25 			long uregs[26];
26 			long fp;
27 			long gp;
28 			long lp;
29 			long sp;
30 			long ipc;
31 #if defined(CONFIG_HWZOL)
32 			long lb;
33 			long le;
34 			long lc;
35 #else
36 			long dummy[3];
37 #endif
38 			long syscallno;
39 		};
40 	};
41 	long orig_r0;
42 	long ir0;
43 	long ipsw;
44 	long pipsw;
45 	long pipc;
46 	long pp0;
47 	long pp1;
48 	long fucop_ctl;
49 	long osp;
50 };
51 
in_syscall(struct pt_regs const * regs)52 static inline bool in_syscall(struct pt_regs const *regs)
53 {
54 	return regs->syscallno != NO_SYSCALL;
55 }
56 
forget_syscall(struct pt_regs * regs)57 static inline void forget_syscall(struct pt_regs *regs)
58 {
59 	regs->syscallno = NO_SYSCALL;
60 }
regs_return_value(struct pt_regs * regs)61 static inline unsigned long regs_return_value(struct pt_regs *regs)
62 {
63 	return regs->uregs[0];
64 }
65 extern void show_regs(struct pt_regs *);
66 /* Avoid circular header include via sched.h */
67 struct task_struct;
68 
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)
75 
76 #endif /* __ASSEMBLY__ */
77 #endif
78