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