GNU Linux-libre 4.14.303-gnu1
[releases.git] / arch / mn10300 / include / uapi / asm / ptrace.h
1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2 /* MN10300 Exception frame layout and ptrace constants
3  *
4  * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
5  * Written by David Howells (dhowells@redhat.com)
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public Licence
9  * as published by the Free Software Foundation; either version
10  * 2 of the Licence, or (at your option) any later version.
11  */
12 #ifndef _UAPI_ASM_PTRACE_H
13 #define _UAPI_ASM_PTRACE_H
14
15 #define PT_A3           0
16 #define PT_A2           1
17 #define PT_D3           2
18 #define PT_D2           3
19 #define PT_MCVF         4
20 #define PT_MCRL         5
21 #define PT_MCRH         6
22 #define PT_MDRQ         7
23 #define PT_E1           8
24 #define PT_E0           9
25 #define PT_E7           10
26 #define PT_E6           11
27 #define PT_E5           12
28 #define PT_E4           13
29 #define PT_E3           14
30 #define PT_E2           15
31 #define PT_SP           16
32 #define PT_LAR          17
33 #define PT_LIR          18
34 #define PT_MDR          19
35 #define PT_A1           20
36 #define PT_A0           21
37 #define PT_D1           22
38 #define PT_D0           23
39 #define PT_ORIG_D0      24
40 #define PT_EPSW         25
41 #define PT_PC           26
42 #define NR_PTREGS       27
43
44 /*
45  * This defines the way registers are stored in the event of an exception
46  * - the strange order is due to the MOVM instruction
47  */
48 struct pt_regs {
49         unsigned long           a3;             /* syscall arg 3 */
50         unsigned long           a2;             /* syscall arg 4 */
51         unsigned long           d3;             /* syscall arg 5 */
52         unsigned long           d2;             /* syscall arg 6 */
53         unsigned long           mcvf;
54         unsigned long           mcrl;
55         unsigned long           mcrh;
56         unsigned long           mdrq;
57         unsigned long           e1;
58         unsigned long           e0;
59         unsigned long           e7;
60         unsigned long           e6;
61         unsigned long           e5;
62         unsigned long           e4;
63         unsigned long           e3;
64         unsigned long           e2;
65         unsigned long           sp;
66         unsigned long           lar;
67         unsigned long           lir;
68         unsigned long           mdr;
69         unsigned long           a1;
70         unsigned long           a0;             /* syscall arg 1 */
71         unsigned long           d1;             /* syscall arg 2 */
72         unsigned long           d0;             /* syscall ret */
73         struct pt_regs          *next;          /* next frame pointer */
74         unsigned long           orig_d0;        /* syscall number */
75         unsigned long           epsw;
76         unsigned long           pc;
77 };
78
79 /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
80 #define PTRACE_GETREGS            12
81 #define PTRACE_SETREGS            13
82 #define PTRACE_GETFPREGS          14
83 #define PTRACE_SETFPREGS          15
84
85 #endif /* _UAPI_ASM_PTRACE_H */