1*9c3024a3SHans Rosenfeld /*
2*9c3024a3SHans Rosenfeld  * This file and its contents are supplied under the terms of the
3*9c3024a3SHans Rosenfeld  * Common Development and Distribution License ("CDDL"), version 1.0.
4*9c3024a3SHans Rosenfeld  * You may only use this file in accordance with the terms of version
5*9c3024a3SHans Rosenfeld  * 1.0 of the CDDL.
6*9c3024a3SHans Rosenfeld  *
7*9c3024a3SHans Rosenfeld  * A full copy of the text of the CDDL should have accompanied this
8*9c3024a3SHans Rosenfeld  * source.  A copy of the CDDL is also available via the Internet at
9*9c3024a3SHans Rosenfeld  * http://www.illumos.org/license/CDDL.
10*9c3024a3SHans Rosenfeld  */
11*9c3024a3SHans Rosenfeld 
12*9c3024a3SHans Rosenfeld /*
13*9c3024a3SHans Rosenfeld  * Copyright 2019 Joyent, Inc.
14*9c3024a3SHans Rosenfeld  */
15*9c3024a3SHans Rosenfeld 
16*9c3024a3SHans Rosenfeld #ifndef _MDB_X86UTIL_H
17*9c3024a3SHans Rosenfeld #define	_MDB_X86UTIL_H
18*9c3024a3SHans Rosenfeld 
19*9c3024a3SHans Rosenfeld #include <sys/types.h>
20*9c3024a3SHans Rosenfeld #include <inttypes.h>
21*9c3024a3SHans Rosenfeld 
22*9c3024a3SHans Rosenfeld #ifdef __cplusplus
23*9c3024a3SHans Rosenfeld extern "C" {
24*9c3024a3SHans Rosenfeld #endif
25*9c3024a3SHans Rosenfeld 
26*9c3024a3SHans Rosenfeld typedef struct mdb_x86_desc {
27*9c3024a3SHans Rosenfeld 	uint64_t d_base;
28*9c3024a3SHans Rosenfeld 	uint32_t d_lim;
29*9c3024a3SHans Rosenfeld 	uint32_t d_acc;
30*9c3024a3SHans Rosenfeld } mdb_x86_desc_t;
31*9c3024a3SHans Rosenfeld 
32*9c3024a3SHans Rosenfeld struct sysregs {
33*9c3024a3SHans Rosenfeld 	uint64_t sr_cr0;
34*9c3024a3SHans Rosenfeld 	uint64_t sr_cr2;
35*9c3024a3SHans Rosenfeld 	uint64_t sr_cr3;
36*9c3024a3SHans Rosenfeld 	uint64_t sr_cr4;
37*9c3024a3SHans Rosenfeld 	uint64_t sr_dr0;
38*9c3024a3SHans Rosenfeld 	uint64_t sr_dr1;
39*9c3024a3SHans Rosenfeld 	uint64_t sr_dr2;
40*9c3024a3SHans Rosenfeld 	uint64_t sr_dr3;
41*9c3024a3SHans Rosenfeld 	uint64_t sr_dr6;
42*9c3024a3SHans Rosenfeld 	uint64_t sr_dr7;
43*9c3024a3SHans Rosenfeld 	uint64_t sr_efer;
44*9c3024a3SHans Rosenfeld 	uint64_t sr_pdpte0;
45*9c3024a3SHans Rosenfeld 	uint64_t sr_pdpte1;
46*9c3024a3SHans Rosenfeld 	uint64_t sr_pdpte2;
47*9c3024a3SHans Rosenfeld 	uint64_t sr_pdpte3;
48*9c3024a3SHans Rosenfeld 	uint64_t sr_intr_shadow;
49*9c3024a3SHans Rosenfeld 	mdb_x86_desc_t sr_gdtr;
50*9c3024a3SHans Rosenfeld 	mdb_x86_desc_t sr_idtr;
51*9c3024a3SHans Rosenfeld 	mdb_x86_desc_t sr_ldtr;
52*9c3024a3SHans Rosenfeld 	mdb_x86_desc_t sr_tr;
53*9c3024a3SHans Rosenfeld 	mdb_x86_desc_t sr_cs;
54*9c3024a3SHans Rosenfeld 	mdb_x86_desc_t sr_ss;
55*9c3024a3SHans Rosenfeld 	mdb_x86_desc_t sr_ds;
56*9c3024a3SHans Rosenfeld 	mdb_x86_desc_t sr_es;
57*9c3024a3SHans Rosenfeld 	mdb_x86_desc_t sr_fs;
58*9c3024a3SHans Rosenfeld 	mdb_x86_desc_t sr_gs;
59*9c3024a3SHans Rosenfeld };
60*9c3024a3SHans Rosenfeld 
61*9c3024a3SHans Rosenfeld extern void mdb_x86_print_sysregs(struct sysregs *, boolean_t);
62*9c3024a3SHans Rosenfeld 
63*9c3024a3SHans Rosenfeld 
64*9c3024a3SHans Rosenfeld #ifdef __cplusplus
65*9c3024a3SHans Rosenfeld }
66*9c3024a3SHans Rosenfeld #endif
67*9c3024a3SHans Rosenfeld 
68*9c3024a3SHans Rosenfeld #endif /* _MDB_X86UTIL_H */
69