xref: /xnu-10002.61.3/bsd/dev/i386/fasttrap_regset.h (revision 0f4c859e951fba394238ab619495c4e1d54d0f34)
1*0f4c859eSApple OSS Distributions /*
2*0f4c859eSApple OSS Distributions  * CDDL HEADER START
3*0f4c859eSApple OSS Distributions  *
4*0f4c859eSApple OSS Distributions  * The contents of this file are subject to the terms of the
5*0f4c859eSApple OSS Distributions  * Common Development and Distribution License, Version 1.0 only
6*0f4c859eSApple OSS Distributions  * (the "License").  You may not use this file except in compliance
7*0f4c859eSApple OSS Distributions  * with the License.
8*0f4c859eSApple OSS Distributions  *
9*0f4c859eSApple OSS Distributions  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*0f4c859eSApple OSS Distributions  * or http://www.opensolaris.org/os/licensing.
11*0f4c859eSApple OSS Distributions  * See the License for the specific language governing permissions
12*0f4c859eSApple OSS Distributions  * and limitations under the License.
13*0f4c859eSApple OSS Distributions  *
14*0f4c859eSApple OSS Distributions  * When distributing Covered Code, include this CDDL HEADER in each
15*0f4c859eSApple OSS Distributions  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*0f4c859eSApple OSS Distributions  * If applicable, add the following below this CDDL HEADER, with the
17*0f4c859eSApple OSS Distributions  * fields enclosed by brackets "[]" replaced with your own identifying
18*0f4c859eSApple OSS Distributions  * information: Portions Copyright [yyyy] [name of copyright owner]
19*0f4c859eSApple OSS Distributions  *
20*0f4c859eSApple OSS Distributions  * CDDL HEADER END
21*0f4c859eSApple OSS Distributions  */
22*0f4c859eSApple OSS Distributions /*
23*0f4c859eSApple OSS Distributions  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
24*0f4c859eSApple OSS Distributions  * Use is subject to license terms.
25*0f4c859eSApple OSS Distributions  */
26*0f4c859eSApple OSS Distributions 
27*0f4c859eSApple OSS Distributions /*	Copyright (c) 1990, 1991 UNIX System Laboratories, Inc. */
28*0f4c859eSApple OSS Distributions 
29*0f4c859eSApple OSS Distributions /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T		*/
30*0f4c859eSApple OSS Distributions /*	All Rights Reserved	*/
31*0f4c859eSApple OSS Distributions 
32*0f4c859eSApple OSS Distributions #ifndef	_FASTTRAP_REGSET_H
33*0f4c859eSApple OSS Distributions #define	_FASTTRAP_REGSET_H
34*0f4c859eSApple OSS Distributions 
35*0f4c859eSApple OSS Distributions /*
36*0f4c859eSApple OSS Distributions  * APPLE NOTE: This file was orginally uts/intel/sys/regset.h
37*0f4c859eSApple OSS Distributions  */
38*0f4c859eSApple OSS Distributions 
39*0f4c859eSApple OSS Distributions #ifdef __cplusplus
40*0f4c859eSApple OSS Distributions extern "C" {
41*0f4c859eSApple OSS Distributions #endif
42*0f4c859eSApple OSS Distributions 
43*0f4c859eSApple OSS Distributions /*
44*0f4c859eSApple OSS Distributions  * The names and offsets defined here should be specified by the
45*0f4c859eSApple OSS Distributions  * AMD64 ABI suppl.
46*0f4c859eSApple OSS Distributions  *
47*0f4c859eSApple OSS Distributions  * We make fsbase and gsbase part of the lwp context (since they're
48*0f4c859eSApple OSS Distributions  * the only way to access the full 64-bit address range via the segment
49*0f4c859eSApple OSS Distributions  * registers) and thus belong here too.  However we treat them as
50*0f4c859eSApple OSS Distributions  * read-only; if %fs or %gs are updated, the results of the descriptor
51*0f4c859eSApple OSS Distributions  * table lookup that those updates implicitly cause will be reflected
52*0f4c859eSApple OSS Distributions  * in the corresponding fsbase and/or gsbase values the next time the
53*0f4c859eSApple OSS Distributions  * context can be inspected.  However it is NOT possible to override
54*0f4c859eSApple OSS Distributions  * the fsbase/gsbase settings via this interface.
55*0f4c859eSApple OSS Distributions  *
56*0f4c859eSApple OSS Distributions  * Direct modification of the base registers (thus overriding the
57*0f4c859eSApple OSS Distributions  * descriptor table base address) can be achieved with _lwp_setprivate.
58*0f4c859eSApple OSS Distributions  */
59*0f4c859eSApple OSS Distributions 
60*0f4c859eSApple OSS Distributions #define	REG_GSBASE	27
61*0f4c859eSApple OSS Distributions #define	REG_FSBASE	26
62*0f4c859eSApple OSS Distributions #define	REG_DS		25
63*0f4c859eSApple OSS Distributions #define	REG_ES		24
64*0f4c859eSApple OSS Distributions 
65*0f4c859eSApple OSS Distributions #define	REG_GS		23
66*0f4c859eSApple OSS Distributions #define	REG_FS		22
67*0f4c859eSApple OSS Distributions #define	REG_SS		21
68*0f4c859eSApple OSS Distributions #define	REG_RSP		20
69*0f4c859eSApple OSS Distributions #define	REG_RFL		19
70*0f4c859eSApple OSS Distributions #define	REG_CS		18
71*0f4c859eSApple OSS Distributions #define	REG_RIP		17
72*0f4c859eSApple OSS Distributions #define	REG_ERR		16
73*0f4c859eSApple OSS Distributions #define	REG_TRAPNO	15
74*0f4c859eSApple OSS Distributions #define	REG_RAX		14
75*0f4c859eSApple OSS Distributions #define	REG_RCX		13
76*0f4c859eSApple OSS Distributions #define	REG_RDX		12
77*0f4c859eSApple OSS Distributions #define	REG_RBX		11
78*0f4c859eSApple OSS Distributions #define	REG_RBP		10
79*0f4c859eSApple OSS Distributions #define	REG_RSI		9
80*0f4c859eSApple OSS Distributions #define	REG_RDI		8
81*0f4c859eSApple OSS Distributions #define	REG_R8		7
82*0f4c859eSApple OSS Distributions #define	REG_R9		6
83*0f4c859eSApple OSS Distributions #define	REG_R10		5
84*0f4c859eSApple OSS Distributions #define	REG_R11		4
85*0f4c859eSApple OSS Distributions #define	REG_R12		3
86*0f4c859eSApple OSS Distributions #define	REG_R13		2
87*0f4c859eSApple OSS Distributions #define	REG_R14		1
88*0f4c859eSApple OSS Distributions #define	REG_R15		0
89*0f4c859eSApple OSS Distributions 
90*0f4c859eSApple OSS Distributions /*
91*0f4c859eSApple OSS Distributions  * The names and offsets defined here are specified by i386 ABI suppl.
92*0f4c859eSApple OSS Distributions  */
93*0f4c859eSApple OSS Distributions 
94*0f4c859eSApple OSS Distributions #define	SS		18	/* only stored on a privilege transition */
95*0f4c859eSApple OSS Distributions #define	UESP		17	/* only stored on a privilege transition */
96*0f4c859eSApple OSS Distributions #define	EFL		16
97*0f4c859eSApple OSS Distributions #define	CS		15
98*0f4c859eSApple OSS Distributions #define	EIP		14
99*0f4c859eSApple OSS Distributions #define	ERR		13
100*0f4c859eSApple OSS Distributions #define	TRAPNO		12
101*0f4c859eSApple OSS Distributions #define	EAX		11
102*0f4c859eSApple OSS Distributions #define	ECX		10
103*0f4c859eSApple OSS Distributions #define	EDX		9
104*0f4c859eSApple OSS Distributions #define	EBX		8
105*0f4c859eSApple OSS Distributions #define	ESP		7
106*0f4c859eSApple OSS Distributions #define	EBP		6
107*0f4c859eSApple OSS Distributions #define	ESI		5
108*0f4c859eSApple OSS Distributions #define	EDI		4
109*0f4c859eSApple OSS Distributions #define	DS		3
110*0f4c859eSApple OSS Distributions #define	ES		2
111*0f4c859eSApple OSS Distributions #define	FS		1
112*0f4c859eSApple OSS Distributions #define	GS		0
113*0f4c859eSApple OSS Distributions 
114*0f4c859eSApple OSS Distributions #define REG_PC  EIP
115*0f4c859eSApple OSS Distributions #define REG_FP  EBP
116*0f4c859eSApple OSS Distributions #define REG_SP  UESP
117*0f4c859eSApple OSS Distributions #define REG_PS  EFL
118*0f4c859eSApple OSS Distributions #define REG_R0  EAX
119*0f4c859eSApple OSS Distributions #define REG_R1  EDX
120*0f4c859eSApple OSS Distributions 
121*0f4c859eSApple OSS Distributions #ifdef	__cplusplus
122*0f4c859eSApple OSS Distributions }
123*0f4c859eSApple OSS Distributions #endif
124*0f4c859eSApple OSS Distributions 
125*0f4c859eSApple OSS Distributions #endif	/* _FASTTRAP_REGSET_H */
126