1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2#ifndef _UAPI_ASMAXP_PTRACE_H
3#define _UAPI_ASMAXP_PTRACE_H
4
5
6/*
7 * This struct defines the way the registers are stored on the
8 * kernel stack during a system call or other kernel entry
9 *
10 * NOTE! I want to minimize the overhead of system calls, so this
11 * struct has as little information as possible. It does not have
12 *
13 *  - floating point regs: the kernel doesn't change those
14 *  - r9-15: saved by the C compiler
15 *
16 * This makes "fork()" and "exec()" a bit more complex, but should
17 * give us low system call latency.
18 */
19
20struct pt_regs {
21	unsigned long r0;
22	unsigned long r1;
23	unsigned long r2;
24	unsigned long r3;
25	unsigned long r4;
26	unsigned long r5;
27	unsigned long r6;
28	unsigned long r7;
29	unsigned long r8;
30	unsigned long r19;
31	unsigned long r20;
32	unsigned long r21;
33	unsigned long r22;
34	unsigned long r23;
35	unsigned long r24;
36	unsigned long r25;
37	unsigned long r26;
38	unsigned long r27;
39	unsigned long r28;
40	unsigned long hae;
41/* JRP - These are the values provided to a0-a2 by PALcode */
42	unsigned long trap_a0;
43	unsigned long trap_a1;
44	unsigned long trap_a2;
45/* These are saved by PAL-code: */
46	unsigned long ps;
47	unsigned long pc;
48	unsigned long gp;
49	unsigned long r16;
50	unsigned long r17;
51	unsigned long r18;
52};
53
54/*
55 * This is the extended stack used by signal handlers and the context
56 * switcher: it's pushed after the normal "struct pt_regs".
57 */
58struct switch_stack {
59	unsigned long r9;
60	unsigned long r10;
61	unsigned long r11;
62	unsigned long r12;
63	unsigned long r13;
64	unsigned long r14;
65	unsigned long r15;
66	unsigned long r26;
67#ifndef __KERNEL__
68	unsigned long fp[32];	/* fp[31] is fpcr */
69#endif
70};
71
72
73#endif /* _UAPI_ASMAXP_PTRACE_H */
74