blob: 80cfbd515095fa498ee21714ece9e5f91e1d37fb (
plain)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*
* Copyright 2018 Joyent, Inc.
*/
#ifndef _AMD64_SYS_KDI_REGS_H
#define _AMD64_SYS_KDI_REGS_H
#include <sys/stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* A modified version of struct regs layout.
*/
#define KDIREG_SAVFP 0
#define KDIREG_SAVPC 1
#define KDIREG_RDI 2
#define KDIREG_RSI 3
#define KDIREG_RDX 4
#define KDIREG_RCX 5
#define KDIREG_R8 6
#define KDIREG_R9 7
#define KDIREG_RAX 8
#define KDIREG_RBX 9
#define KDIREG_RBP 10
#define KDIREG_R10 11
#define KDIREG_R11 12
#define KDIREG_R12 13
#define KDIREG_R13 14
#define KDIREG_R14 15
#define KDIREG_R15 16
#define KDIREG_FSBASE 17
#define KDIREG_GSBASE 18
#define KDIREG_KGSBASE 19
#define KDIREG_CR2 20
#define KDIREG_CR3 21
#define KDIREG_DS 22
#define KDIREG_ES 23
#define KDIREG_FS 24
#define KDIREG_GS 25
#define KDIREG_TRAPNO 26
#define KDIREG_ERR 27
#define KDIREG_RIP 28
#define KDIREG_CS 29
#define KDIREG_RFLAGS 30
#define KDIREG_RSP 31
#define KDIREG_SS 32
#define KDIREG_NGREG (KDIREG_SS + 1)
#define KDIREG_PC KDIREG_RIP
#define KDIREG_SP KDIREG_RSP
#define KDIREG_FP KDIREG_RBP
#if !defined(_ASM)
/*
* Handy for debugging krs_gregs; keep in sync with the KDIREG_* above.
*/
typedef struct {
greg_t kr_savfp;
greg_t kr_savpc;
greg_t kr_rdi;
greg_t kr_rsi;
greg_t kr_rdx;
greg_t kr_rcx;
greg_t kr_r8;
greg_t kr_r9;
greg_t kr_rax;
greg_t kr_rbx;
greg_t kr_rbp;
greg_t r_r10;
greg_t r_r11;
greg_t r_r12;
greg_t r_r13;
greg_t r_r14;
greg_t r_r15;
greg_t kr_fsbase;
greg_t kr_gsbase;
greg_t kr_kgsbase;
greg_t kr_cr2;
greg_t kr_cr3;
greg_t kr_ds;
greg_t kr_es;
greg_t kr_fs;
greg_t kr_gs;
greg_t kr_trapno;
greg_t kr_err;
greg_t kr_rip;
greg_t kr_cs;
greg_t kr_rflags;
greg_t kr_rsp;
greg_t kr_ss;
} kdiregs_t;
#if defined(_KERNEL)
CTASSERT(offsetof(kdiregs_t, kr_ss) == ((KDIREG_NGREG - 1) * sizeof (greg_t)));
#endif
#endif /* !_ASM */
#ifdef __cplusplus
}
#endif
#endif /* _AMD64_SYS_KDI_REGS_H */
|