MachRegisterStatesX86_64.h revision 4d3a89ef9d015e0cc3c12736b61d367fd98fe073
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_AVX_STATE          17
23
24typedef struct {
25    uint64_t    __rax;
26    uint64_t    __rbx;
27    uint64_t    __rcx;
28    uint64_t    __rdx;
29    uint64_t    __rdi;
30    uint64_t    __rsi;
31    uint64_t    __rbp;
32    uint64_t    __rsp;
33    uint64_t    __r8;
34    uint64_t    __r9;
35    uint64_t    __r10;
36    uint64_t    __r11;
37    uint64_t    __r12;
38    uint64_t    __r13;
39    uint64_t    __r14;
40    uint64_t    __r15;
41    uint64_t    __rip;
42    uint64_t    __rflags;
43    uint64_t    __cs;
44    uint64_t    __fs;
45    uint64_t    __gs;
46} __x86_64_thread_state_t;
47
48typedef struct {
49    uint16_t    __invalid   : 1;
50    uint16_t    __denorm    : 1;
51    uint16_t    __zdiv      : 1;
52    uint16_t    __ovrfl     : 1;
53    uint16_t    __undfl     : 1;
54    uint16_t    __precis    : 1;
55    uint16_t    __PAD1      : 2;
56    uint16_t    __pc        : 2;
57    uint16_t    __rc        : 2;
58    uint16_t    __PAD2      : 1;
59    uint16_t    __PAD3      : 3;
60} __x86_64_fp_control_t;
61
62typedef struct {
63    uint16_t    __invalid   : 1;
64    uint16_t    __denorm    : 1;
65    uint16_t    __zdiv      : 1;
66    uint16_t    __ovrfl     : 1;
67    uint16_t    __undfl     : 1;
68    uint16_t    __precis    : 1;
69    uint16_t    __stkflt    : 1;
70    uint16_t    __errsumm   : 1;
71    uint16_t    __c0        : 1;
72    uint16_t    __c1        : 1;
73    uint16_t    __c2        : 1;
74    uint16_t    __tos       : 3;
75    uint16_t    __c3        : 1;
76    uint16_t    __busy      : 1;
77} __x86_64_fp_status_t;
78
79typedef struct {
80    uint8_t     __mmst_reg[10];
81    uint8_t     __mmst_rsrv[6];
82} __x86_64_mmst_reg;
83
84typedef struct {
85    uint8_t     __xmm_reg[16];
86} __x86_64_xmm_reg;
87
88typedef struct {
89    int32_t                 __fpu_reserved[2];
90    __x86_64_fp_control_t   __fpu_fcw;
91    __x86_64_fp_status_t    __fpu_fsw;
92    uint8_t                 __fpu_ftw;
93    uint8_t                 __fpu_rsrv1;
94    uint16_t                __fpu_fop;
95    uint32_t                __fpu_ip;
96    uint16_t                __fpu_cs;
97    uint16_t                __fpu_rsrv2;
98    uint32_t                __fpu_dp;
99    uint16_t                __fpu_ds;
100    uint16_t                __fpu_rsrv3;
101    uint32_t                __fpu_mxcsr;
102    uint32_t                __fpu_mxcsrmask;
103    __x86_64_mmst_reg       __fpu_stmm0;
104    __x86_64_mmst_reg       __fpu_stmm1;
105    __x86_64_mmst_reg       __fpu_stmm2;
106    __x86_64_mmst_reg       __fpu_stmm3;
107    __x86_64_mmst_reg       __fpu_stmm4;
108    __x86_64_mmst_reg       __fpu_stmm5;
109    __x86_64_mmst_reg       __fpu_stmm6;
110    __x86_64_mmst_reg       __fpu_stmm7;
111    __x86_64_xmm_reg        __fpu_xmm0;
112    __x86_64_xmm_reg        __fpu_xmm1;
113    __x86_64_xmm_reg        __fpu_xmm2;
114    __x86_64_xmm_reg        __fpu_xmm3;
115    __x86_64_xmm_reg        __fpu_xmm4;
116    __x86_64_xmm_reg        __fpu_xmm5;
117    __x86_64_xmm_reg        __fpu_xmm6;
118    __x86_64_xmm_reg        __fpu_xmm7;
119    __x86_64_xmm_reg        __fpu_xmm8;
120    __x86_64_xmm_reg        __fpu_xmm9;
121    __x86_64_xmm_reg        __fpu_xmm10;
122    __x86_64_xmm_reg        __fpu_xmm11;
123    __x86_64_xmm_reg        __fpu_xmm12;
124    __x86_64_xmm_reg        __fpu_xmm13;
125    __x86_64_xmm_reg        __fpu_xmm14;
126    __x86_64_xmm_reg        __fpu_xmm15;
127    uint8_t                 __fpu_rsrv4[6*16];
128    int32_t                 __fpu_reserved1;
129} __x86_64_float_state_t;
130
131typedef struct {
132    uint32_t                __fpu_reserved[2];
133    __x86_64_fp_control_t   __fpu_fcw;
134    __x86_64_fp_status_t    __fpu_fsw;
135    uint8_t                 __fpu_ftw;
136    uint8_t                 __fpu_rsrv1;
137    uint16_t                __fpu_fop;
138    uint32_t                __fpu_ip;
139    uint16_t                __fpu_cs;
140    uint16_t                __fpu_rsrv2;
141    uint32_t                __fpu_dp;
142    uint16_t                __fpu_ds;
143    uint16_t                __fpu_rsrv3;
144    uint32_t                __fpu_mxcsr;
145    uint32_t                __fpu_mxcsrmask;
146    __x86_64_mmst_reg       __fpu_stmm0;
147    __x86_64_mmst_reg       __fpu_stmm1;
148    __x86_64_mmst_reg       __fpu_stmm2;
149    __x86_64_mmst_reg       __fpu_stmm3;
150    __x86_64_mmst_reg       __fpu_stmm4;
151    __x86_64_mmst_reg       __fpu_stmm5;
152    __x86_64_mmst_reg       __fpu_stmm6;
153    __x86_64_mmst_reg       __fpu_stmm7;
154    __x86_64_xmm_reg        __fpu_xmm0;
155    __x86_64_xmm_reg        __fpu_xmm1;
156    __x86_64_xmm_reg        __fpu_xmm2;
157    __x86_64_xmm_reg        __fpu_xmm3;
158    __x86_64_xmm_reg        __fpu_xmm4;
159    __x86_64_xmm_reg        __fpu_xmm5;
160    __x86_64_xmm_reg        __fpu_xmm6;
161    __x86_64_xmm_reg        __fpu_xmm7;
162    __x86_64_xmm_reg        __fpu_xmm8;
163    __x86_64_xmm_reg        __fpu_xmm9;
164    __x86_64_xmm_reg        __fpu_xmm10;
165    __x86_64_xmm_reg        __fpu_xmm11;
166    __x86_64_xmm_reg        __fpu_xmm12;
167    __x86_64_xmm_reg        __fpu_xmm13;
168    __x86_64_xmm_reg        __fpu_xmm14;
169    __x86_64_xmm_reg        __fpu_xmm15;
170    uint8_t                 __fpu_rsrv4[6*16];
171    uint32_t                __fpu_reserved1;
172    uint8_t                 __avx_reserved1[64];
173    __x86_64_xmm_reg        __fpu_ymmh0;
174    __x86_64_xmm_reg        __fpu_ymmh1;
175    __x86_64_xmm_reg        __fpu_ymmh2;
176    __x86_64_xmm_reg        __fpu_ymmh3;
177    __x86_64_xmm_reg        __fpu_ymmh4;
178    __x86_64_xmm_reg        __fpu_ymmh5;
179    __x86_64_xmm_reg        __fpu_ymmh6;
180    __x86_64_xmm_reg        __fpu_ymmh7;
181    __x86_64_xmm_reg        __fpu_ymmh8;
182    __x86_64_xmm_reg        __fpu_ymmh9;
183    __x86_64_xmm_reg        __fpu_ymmh10;
184    __x86_64_xmm_reg        __fpu_ymmh11;
185    __x86_64_xmm_reg        __fpu_ymmh12;
186    __x86_64_xmm_reg        __fpu_ymmh13;
187    __x86_64_xmm_reg        __fpu_ymmh14;
188    __x86_64_xmm_reg        __fpu_ymmh15;
189} __x86_64_avx_state_t;
190
191typedef struct {
192    uint32_t    __trapno;
193    uint32_t    __err;
194    uint64_t    __faultvaddr;
195} __x86_64_exception_state_t;
196
197#endif
198