]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - sys/cddl/contrib/opensolaris/uts/intel/sys/fasttrap_isa.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / sys / cddl / contrib / opensolaris / uts / intel / sys / fasttrap_isa.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 (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  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
23  * Use is subject to license terms.
24  */
25
26 #ifndef _FASTTRAP_ISA_H
27 #define _FASTTRAP_ISA_H
28
29 #pragma ident   "%Z%%M% %I%     %E% SMI"
30
31 #include <sys/types.h>
32
33 #ifdef  __cplusplus
34 extern "C" {
35 #endif
36
37 #define FASTTRAP_MAX_INSTR_SIZE         15
38
39 #define FASTTRAP_INSTR                  0xcc
40
41 #define FASTTRAP_SUNWDTRACE_SIZE        64
42
43 typedef uint8_t         fasttrap_instr_t;
44
45 typedef struct fasttrap_machtp {
46         uint8_t         ftmt_instr[FASTTRAP_MAX_INSTR_SIZE]; /* orig. instr. */
47         uint8_t         ftmt_size;      /* instruction size */
48 #ifdef __amd64
49         uint8_t         ftmt_ripmode;   /* %rip-relative handling mode */
50         uint8_t         ftmt_modrm;     /* saved modrm byte */
51 #endif
52         uint8_t         ftmt_type;      /* emulation type */
53         uint8_t         ftmt_code;      /* branch condition */
54         uint8_t         ftmt_base;      /* branch base */
55         uint8_t         ftmt_index;     /* branch index */
56         uint8_t         ftmt_scale;     /* branch scale */
57         uint8_t         ftmt_segment;   /* segment for memory accesses */
58         uintptr_t       ftmt_dest;      /* destination of control flow */
59 } fasttrap_machtp_t;
60
61 #define ftt_instr       ftt_mtp.ftmt_instr
62 #ifdef __amd64
63 #define ftt_ripmode     ftt_mtp.ftmt_ripmode
64 #define ftt_modrm       ftt_mtp.ftmt_modrm
65 #endif
66 #define ftt_size        ftt_mtp.ftmt_size
67 #define ftt_type        ftt_mtp.ftmt_type
68 #define ftt_code        ftt_mtp.ftmt_code
69 #define ftt_base        ftt_mtp.ftmt_base
70 #define ftt_index       ftt_mtp.ftmt_index
71 #define ftt_scale       ftt_mtp.ftmt_scale
72 #define ftt_segment     ftt_mtp.ftmt_segment
73 #define ftt_dest        ftt_mtp.ftmt_dest
74
75 #define FASTTRAP_T_COMMON       0x00    /* common case -- no emulation */
76 #define FASTTRAP_T_JCC          0x01    /* near and far conditional jumps */
77 #define FASTTRAP_T_LOOP         0x02    /* loop instructions */
78 #define FASTTRAP_T_JCXZ         0x03    /* jump if %ecx/%rcx is zero */
79 #define FASTTRAP_T_JMP          0x04    /* relative jump */
80 #define FASTTRAP_T_CALL         0x05    /* near call (and link) */
81 #define FASTTRAP_T_RET          0x06    /* ret */
82 #define FASTTRAP_T_RET16        0x07    /* ret <imm16> */
83
84 /*
85  * For performance rather than correctness.
86  */
87 #define FASTTRAP_T_PUSHL_EBP    0x10    /* pushl %ebp (for function entry) */
88 #define FASTTRAP_T_NOP          0x11    /* nop */
89
90 #define FASTTRAP_RIP_1          0x1
91 #define FASTTRAP_RIP_2          0x2
92 #define FASTTRAP_RIP_X          0x4
93
94 /*
95  * Segment values.
96  */
97 #define FASTTRAP_SEG_NONE               0
98 #define FASTTRAP_SEG_CS                 1
99 #define FASTTRAP_SEG_DS                 2
100 #define FASTTRAP_SEG_ES                 3
101 #define FASTTRAP_SEG_FS                 4
102 #define FASTTRAP_SEG_GS                 5
103 #define FASTTRAP_SEG_SS                 6
104
105 #define FASTTRAP_AFRAMES                3
106 #define FASTTRAP_RETURN_AFRAMES         4
107 #define FASTTRAP_ENTRY_AFRAMES          3
108 #define FASTTRAP_OFFSET_AFRAMES         3
109
110 #ifdef  __cplusplus
111 }
112 #endif
113
114 #endif  /* _FASTTRAP_ISA_H */