xref: /openbmc/linux/arch/csky/include/uapi/asm/ptrace.h (revision 8fdf9062)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 // Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
3 
4 #ifndef _CSKY_PTRACE_H
5 #define _CSKY_PTRACE_H
6 
7 #ifndef __ASSEMBLY__
8 
9 struct pt_regs {
10 	unsigned long	tls;
11 	unsigned long	lr;
12 	unsigned long	pc;
13 	unsigned long	sr;
14 	unsigned long	usp;
15 
16 	/*
17 	 * a0, a1, a2, a3:
18 	 * abiv1: r2, r3, r4, r5
19 	 * abiv2: r0, r1, r2, r3
20 	 */
21 	unsigned long	orig_a0;
22 	unsigned long	a0;
23 	unsigned long	a1;
24 	unsigned long	a2;
25 	unsigned long	a3;
26 
27 	/*
28 	 * ABIV2: r4 ~ r13
29 	 * ABIV1: r6 ~ r14, r1
30 	 */
31 	unsigned long	regs[10];
32 
33 #if defined(__CSKYABIV2__)
34 	/* r16 ~ r30 */
35 	unsigned long	exregs[15];
36 
37 	unsigned long	rhi;
38 	unsigned long	rlo;
39 	unsigned long	dcsr;
40 #endif
41 };
42 
43 struct user_fp {
44 	unsigned long	vr[96];
45 	unsigned long	fcr;
46 	unsigned long	fesr;
47 	unsigned long	fid;
48 	unsigned long	reserved;
49 };
50 
51 #ifdef __KERNEL__
52 
53 #define PS_S	0x80000000 /* Supervisor Mode */
54 
55 #define arch_has_single_step() (1)
56 #define current_pt_regs() \
57 ({ (struct pt_regs *)((char *)current_thread_info() + THREAD_SIZE) - 1; })
58 
59 #define user_stack_pointer(regs) ((regs)->usp)
60 
61 #define user_mode(regs) (!((regs)->sr & PS_S))
62 #define instruction_pointer(regs) ((regs)->pc)
63 #define profile_pc(regs) instruction_pointer(regs)
64 
65 #endif /* __KERNEL__ */
66 #endif /* __ASSEMBLY__ */
67 #endif /* _CSKY_PTRACE_H */
68