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