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