1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21
22/*
23 * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
24 * Use is subject to license terms.
25 */
26
27#ifndef _AMD64_SYS_KDI_REGS_H
28#define	_AMD64_SYS_KDI_REGS_H
29
30#pragma ident	"%Z%%M%	%I%	%E% SMI"
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
36#define	KDIREG_NGREG	31
37
38/*
39 * A modified version of struct regs layout.
40 */
41
42#define	KDIREG_SAVFP	0
43#define	KDIREG_SAVPC	1
44#define	KDIREG_RDI	2
45#define	KDIREG_RSI	3
46#define	KDIREG_RDX	4
47#define	KDIREG_RCX	5
48#define	KDIREG_R8	6
49#define	KDIREG_R9	7
50#define	KDIREG_RAX	8
51#define	KDIREG_RBX	9
52#define	KDIREG_RBP	10
53#define	KDIREG_R10	11
54#define	KDIREG_R11	12
55#define	KDIREG_R12	13
56#define	KDIREG_R13	14
57#define	KDIREG_R14	15
58#define	KDIREG_R15	16
59#define	KDIREG_FSBASE	17
60#define	KDIREG_GSBASE	18
61#define	KDIREG_KGSBASE	19
62#define	KDIREG_DS	20
63#define	KDIREG_ES	21
64#define	KDIREG_FS	22
65#define	KDIREG_GS	23
66#define	KDIREG_TRAPNO	24
67#define	KDIREG_ERR	25
68#define	KDIREG_RIP	26
69#define	KDIREG_CS	27
70#define	KDIREG_RFLAGS	28
71#define	KDIREG_RSP	29
72#define	KDIREG_SS	30
73
74#define	KDIREG_PC	KDIREG_RIP
75#define	KDIREG_SP	KDIREG_RSP
76#define	KDIREG_FP	KDIREG_RBP
77
78#ifdef _ASM
79
80/* Patch point for MSR clearing. */
81#define	KDI_MSR_PATCH \
82	nop; nop; nop; nop; \
83	nop; nop; nop; nop; \
84	nop; nop; nop; nop; \
85	nop; nop; nop; nop; \
86	nop
87
88#endif	/* _ASM */
89
90#define	KDI_MSR_PATCHOFF	8	/* bytes of code before patch point */
91#define	KDI_MSR_PATCHSZ		17	/* bytes in KDI_MSR_PATCH, above */
92
93#ifdef __cplusplus
94}
95#endif
96
97#endif /* _AMD64_SYS_KDI_REGS_H */
98