]> git.saurik.com Git - apple/xnu.git/blob - bsd/dev/i386/fasttrap_regset.h
xnu-6153.61.1.tar.gz
[apple/xnu.git] / bsd / dev / i386 / fasttrap_regset.h
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 /*
23 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
25 */
26
27 /* Copyright (c) 1990, 1991 UNIX System Laboratories, Inc. */
28
29 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
30 /* All Rights Reserved */
31
32 #ifndef _FASTTRAP_REGSET_H
33 #define _FASTTRAP_REGSET_H
34
35 /*
36 * APPLE NOTE: This file was orginally uts/intel/sys/regset.h
37 */
38
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42
43 /*
44 * The names and offsets defined here should be specified by the
45 * AMD64 ABI suppl.
46 *
47 * We make fsbase and gsbase part of the lwp context (since they're
48 * the only way to access the full 64-bit address range via the segment
49 * registers) and thus belong here too. However we treat them as
50 * read-only; if %fs or %gs are updated, the results of the descriptor
51 * table lookup that those updates implicitly cause will be reflected
52 * in the corresponding fsbase and/or gsbase values the next time the
53 * context can be inspected. However it is NOT possible to override
54 * the fsbase/gsbase settings via this interface.
55 *
56 * Direct modification of the base registers (thus overriding the
57 * descriptor table base address) can be achieved with _lwp_setprivate.
58 */
59
60 #define REG_GSBASE 27
61 #define REG_FSBASE 26
62 #define REG_DS 25
63 #define REG_ES 24
64
65 #define REG_GS 23
66 #define REG_FS 22
67 #define REG_SS 21
68 #define REG_RSP 20
69 #define REG_RFL 19
70 #define REG_CS 18
71 #define REG_RIP 17
72 #define REG_ERR 16
73 #define REG_TRAPNO 15
74 #define REG_RAX 14
75 #define REG_RCX 13
76 #define REG_RDX 12
77 #define REG_RBX 11
78 #define REG_RBP 10
79 #define REG_RSI 9
80 #define REG_RDI 8
81 #define REG_R8 7
82 #define REG_R9 6
83 #define REG_R10 5
84 #define REG_R11 4
85 #define REG_R12 3
86 #define REG_R13 2
87 #define REG_R14 1
88 #define REG_R15 0
89
90 /*
91 * The names and offsets defined here are specified by i386 ABI suppl.
92 */
93
94 #define SS 18 /* only stored on a privilege transition */
95 #define UESP 17 /* only stored on a privilege transition */
96 #define EFL 16
97 #define CS 15
98 #define EIP 14
99 #define ERR 13
100 #define TRAPNO 12
101 #define EAX 11
102 #define ECX 10
103 #define EDX 9
104 #define EBX 8
105 #define ESP 7
106 #define EBP 6
107 #define ESI 5
108 #define EDI 4
109 #define DS 3
110 #define ES 2
111 #define FS 1
112 #define GS 0
113
114 #define REG_PC EIP
115 #define REG_FP EBP
116 #define REG_SP UESP
117 #define REG_PS EFL
118 #define REG_R0 EAX
119 #define REG_R1 EDX
120
121 #ifdef __cplusplus
122 }
123 #endif
124
125 #endif /* _FASTTRAP_REGSET_H */