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