MachRegisterStatesX86_64.h revision e39356825b86cd7484097ca4c4c9f07f9ff95e2e
1//===-- MachRegisterStatesX86_64.h --------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10//  Created by Sean Callanan on 3/16/11.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef __MachRegisterStatesX86_64_h__
15#define __MachRegisterStatesX86_64_h__
16
17#include <inttypes.h>
18
19#define __x86_64_THREAD_STATE       4
20#define __x86_64_FLOAT_STATE        5
21#define __x86_64_EXCEPTION_STATE    6
22#define __x86_64_DEBUG_STATE        11
23#define __x86_64_AVX_STATE          17
24
25typedef struct {
26    uint64_t    __rax;
27    uint64_t    __rbx;
28    uint64_t    __rcx;
29    uint64_t    __rdx;
30    uint64_t    __rdi;
31    uint64_t    __rsi;
32    uint64_t    __rbp;
33    uint64_t    __rsp;
34    uint64_t    __r8;
35    uint64_t    __r9;
36    uint64_t    __r10;
37    uint64_t    __r11;
38    uint64_t    __r12;
39    uint64_t    __r13;
40    uint64_t    __r14;
41    uint64_t    __r15;
42    uint64_t    __rip;
43    uint64_t    __rflags;
44    uint64_t    __cs;
45    uint64_t    __fs;
46    uint64_t    __gs;
47} __x86_64_thread_state_t;
48
49typedef struct {
50    uint16_t    __invalid   : 1;
51    uint16_t    __denorm    : 1;
52    uint16_t    __zdiv      : 1;
53    uint16_t    __ovrfl     : 1;
54    uint16_t    __undfl     : 1;
55    uint16_t    __precis    : 1;
56    uint16_t    __PAD1      : 2;
57    uint16_t    __pc        : 2;
58    uint16_t    __rc        : 2;
59    uint16_t    __PAD2      : 1;
60    uint16_t    __PAD3      : 3;
61} __x86_64_fp_control_t;
62
63typedef struct {
64    uint16_t    __invalid   : 1;
65    uint16_t    __denorm    : 1;
66    uint16_t    __zdiv      : 1;
67    uint16_t    __ovrfl     : 1;
68    uint16_t    __undfl     : 1;
69    uint16_t    __precis    : 1;
70    uint16_t    __stkflt    : 1;
71    uint16_t    __errsumm   : 1;
72    uint16_t    __c0        : 1;
73    uint16_t    __c1        : 1;
74    uint16_t    __c2        : 1;
75    uint16_t    __tos       : 3;
76    uint16_t    __c3        : 1;
77    uint16_t    __busy      : 1;
78} __x86_64_fp_status_t;
79
80typedef struct {
81    uint8_t     __mmst_reg[10];
82    uint8_t     __mmst_rsrv[6];
83} __x86_64_mmst_reg;
84
85typedef struct {
86    uint8_t     __xmm_reg[16];
87} __x86_64_xmm_reg;
88
89typedef struct {
90    int32_t                 __fpu_reserved[2];
91    __x86_64_fp_control_t   __fpu_fcw;
92    __x86_64_fp_status_t    __fpu_fsw;
93    uint8_t                 __fpu_ftw;
94    uint8_t                 __fpu_rsrv1;
95    uint16_t                __fpu_fop;
96    uint32_t                __fpu_ip;
97    uint16_t                __fpu_cs;
98    uint16_t                __fpu_rsrv2;
99    uint32_t                __fpu_dp;
100    uint16_t                __fpu_ds;
101    uint16_t                __fpu_rsrv3;
102    uint32_t                __fpu_mxcsr;
103    uint32_t                __fpu_mxcsrmask;
104    __x86_64_mmst_reg       __fpu_stmm0;
105    __x86_64_mmst_reg       __fpu_stmm1;
106    __x86_64_mmst_reg       __fpu_stmm2;
107    __x86_64_mmst_reg       __fpu_stmm3;
108    __x86_64_mmst_reg       __fpu_stmm4;
109    __x86_64_mmst_reg       __fpu_stmm5;
110    __x86_64_mmst_reg       __fpu_stmm6;
111    __x86_64_mmst_reg       __fpu_stmm7;
112    __x86_64_xmm_reg        __fpu_xmm0;
113    __x86_64_xmm_reg        __fpu_xmm1;
114    __x86_64_xmm_reg        __fpu_xmm2;
115    __x86_64_xmm_reg        __fpu_xmm3;
116    __x86_64_xmm_reg        __fpu_xmm4;
117    __x86_64_xmm_reg        __fpu_xmm5;
118    __x86_64_xmm_reg        __fpu_xmm6;
119    __x86_64_xmm_reg        __fpu_xmm7;
120    __x86_64_xmm_reg        __fpu_xmm8;
121    __x86_64_xmm_reg        __fpu_xmm9;
122    __x86_64_xmm_reg        __fpu_xmm10;
123    __x86_64_xmm_reg        __fpu_xmm11;
124    __x86_64_xmm_reg        __fpu_xmm12;
125    __x86_64_xmm_reg        __fpu_xmm13;
126    __x86_64_xmm_reg        __fpu_xmm14;
127    __x86_64_xmm_reg        __fpu_xmm15;
128    uint8_t                 __fpu_rsrv4[6*16];
129    int32_t                 __fpu_reserved1;
130} __x86_64_float_state_t;
131
132typedef struct {
133    uint32_t                __fpu_reserved[2];
134    __x86_64_fp_control_t   __fpu_fcw;
135    __x86_64_fp_status_t    __fpu_fsw;
136    uint8_t                 __fpu_ftw;
137    uint8_t                 __fpu_rsrv1;
138    uint16_t                __fpu_fop;
139    uint32_t                __fpu_ip;
140    uint16_t                __fpu_cs;
141    uint16_t                __fpu_rsrv2;
142    uint32_t                __fpu_dp;
143    uint16_t                __fpu_ds;
144    uint16_t                __fpu_rsrv3;
145    uint32_t                __fpu_mxcsr;
146    uint32_t                __fpu_mxcsrmask;
147    __x86_64_mmst_reg       __fpu_stmm0;
148    __x86_64_mmst_reg       __fpu_stmm1;
149    __x86_64_mmst_reg       __fpu_stmm2;
150    __x86_64_mmst_reg       __fpu_stmm3;
151    __x86_64_mmst_reg       __fpu_stmm4;
152    __x86_64_mmst_reg       __fpu_stmm5;
153    __x86_64_mmst_reg       __fpu_stmm6;
154    __x86_64_mmst_reg       __fpu_stmm7;
155    __x86_64_xmm_reg        __fpu_xmm0;
156    __x86_64_xmm_reg        __fpu_xmm1;
157    __x86_64_xmm_reg        __fpu_xmm2;
158    __x86_64_xmm_reg        __fpu_xmm3;
159    __x86_64_xmm_reg        __fpu_xmm4;
160    __x86_64_xmm_reg        __fpu_xmm5;
161    __x86_64_xmm_reg        __fpu_xmm6;
162    __x86_64_xmm_reg        __fpu_xmm7;
163    __x86_64_xmm_reg        __fpu_xmm8;
164    __x86_64_xmm_reg        __fpu_xmm9;
165    __x86_64_xmm_reg        __fpu_xmm10;
166    __x86_64_xmm_reg        __fpu_xmm11;
167    __x86_64_xmm_reg        __fpu_xmm12;
168    __x86_64_xmm_reg        __fpu_xmm13;
169    __x86_64_xmm_reg        __fpu_xmm14;
170    __x86_64_xmm_reg        __fpu_xmm15;
171    uint8_t                 __fpu_rsrv4[6*16];
172    uint32_t                __fpu_reserved1;
173    uint8_t                 __avx_reserved1[64];
174    __x86_64_xmm_reg        __fpu_ymmh0;
175    __x86_64_xmm_reg        __fpu_ymmh1;
176    __x86_64_xmm_reg        __fpu_ymmh2;
177    __x86_64_xmm_reg        __fpu_ymmh3;
178    __x86_64_xmm_reg        __fpu_ymmh4;
179    __x86_64_xmm_reg        __fpu_ymmh5;
180    __x86_64_xmm_reg        __fpu_ymmh6;
181    __x86_64_xmm_reg        __fpu_ymmh7;
182    __x86_64_xmm_reg        __fpu_ymmh8;
183    __x86_64_xmm_reg        __fpu_ymmh9;
184    __x86_64_xmm_reg        __fpu_ymmh10;
185    __x86_64_xmm_reg        __fpu_ymmh11;
186    __x86_64_xmm_reg        __fpu_ymmh12;
187    __x86_64_xmm_reg        __fpu_ymmh13;
188    __x86_64_xmm_reg        __fpu_ymmh14;
189    __x86_64_xmm_reg        __fpu_ymmh15;
190} __x86_64_avx_state_t;
191
192typedef struct {
193    uint32_t    __trapno;
194    uint32_t    __err;
195    uint64_t    __faultvaddr;
196} __x86_64_exception_state_t;
197
198
199typedef struct {
200	uint64_t	__dr0;
201	uint64_t	__dr1;
202	uint64_t	__dr2;
203	uint64_t	__dr3;
204	uint64_t	__dr4;
205	uint64_t	__dr5;
206	uint64_t	__dr6;
207	uint64_t	__dr7;
208} __x86_64_debug_state_t;
209
210#endif
211