Merge tag 'for_v4.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
[sfrench/cifs-2.6.git] / arch / csky / include / uapi / asm / ptrace.h
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   pad; /* reserved */
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 /*
52  * Switch stack for switch_to after push pt_regs.
53  *
54  * ABI_CSKYV2: r4 ~ r11, r15 ~ r17, r26 ~ r30;
55  * ABI_CSKYV1: r8 ~ r14, r15;
56  */
57 struct  switch_stack {
58 #if defined(__CSKYABIV2__)
59         unsigned long   r4;
60         unsigned long   r5;
61         unsigned long   r6;
62         unsigned long   r7;
63         unsigned long   r8;
64         unsigned long   r9;
65         unsigned long   r10;
66         unsigned long   r11;
67 #else
68         unsigned long   r8;
69         unsigned long   r9;
70         unsigned long   r10;
71         unsigned long   r11;
72         unsigned long   r12;
73         unsigned long   r13;
74         unsigned long   r14;
75 #endif
76         unsigned long   r15;
77 #if defined(__CSKYABIV2__)
78         unsigned long   r16;
79         unsigned long   r17;
80         unsigned long   r26;
81         unsigned long   r27;
82         unsigned long   r28;
83         unsigned long   r29;
84         unsigned long   r30;
85 #endif
86 };
87
88 #ifdef __KERNEL__
89
90 #define PS_S    0x80000000 /* Supervisor Mode */
91
92 #define arch_has_single_step() (1)
93 #define current_pt_regs() \
94 ({ (struct pt_regs *)((char *)current_thread_info() + THREAD_SIZE) - 1; })
95
96 #define user_stack_pointer(regs) ((regs)->usp)
97
98 #define user_mode(regs) (!((regs)->sr & PS_S))
99 #define instruction_pointer(regs) ((regs)->pc)
100 #define profile_pc(regs) instruction_pointer(regs)
101
102 #endif /* __KERNEL__ */
103 #endif /* __ASSEMBLY__ */
104 #endif /* _CSKY_PTRACE_H */